示例#1
0
    def _get_agent(self, request, timeout):
        bindaddress = request.meta.get('bindaddress') or self._bindAddress
        proxy = request.meta.get('proxy')
        if proxy:
            _, _, proxyHost, proxyPort, proxyParams = _parse(proxy)
            scheme = _parse(request.url)[0]
            omitConnectTunnel = proxyParams.find('noconnect') >= 0
            if scheme == 'https' and not omitConnectTunnel:
                proxyConf = (proxyHost, proxyPort,
                             request.headers.get('Proxy-Authorization', None))
                return self._TunnelingAgent(
                    reactor,
                    proxyConf,
                    contextFactory=self._contextFactory,
                    connectTimeout=timeout,
                    bindAddress=bindaddress,
                    pool=self._pool)
            else:
                endpoint = TCP4ClientEndpoint(reactor,
                                              proxyHost,
                                              proxyPort,
                                              timeout=timeout,
                                              bindAddress=bindaddress)
                return self._ProxyAgent(endpoint)

        return self._Agent(reactor,
                           contextFactory=self._contextFactory,
                           connectTimeout=timeout,
                           bindAddress=bindaddress,
                           pool=self._pool)
 def _get_agent(self, request, timeout):
     bindAddress = request.meta.get('bindaddress') or self._bindAddress
     # this needs http_proxy environment variable or proxy middleware,
     # otherwise it will be none
     #        proxy = request.meta.get('proxy')
     proxy = settings.get('SOCKSPROXY', '127.0.0.1:9050')
     logger.debug('downloader agent proxy: %s' % proxy)
     if proxy:
         _, _, proxyHost, proxyPort, proxyParams = _parse(proxy)
         _, _, host, port, proxyParams = _parse(request.url)
         proxyEndpoint = TCP4ClientEndpoint(reactor,
                                            proxyHost,
                                            proxyPort,
                                            timeout=timeout,
                                            bindAddress=bindAddress)
         newcirc = settings.get('NEWCIRC', False)
         if newcirc:
             username = hex(random.randint(0, 2**32))
             password = hex(random.randint(0, 2**32))
             agent = SOCKS5Agent(
                 reactor,
                 proxyEndpoint=proxyEndpoint,
                 endpointArgs=dict(methods=dict(login=(username,
                                                       password))))
         else:
             agent = SOCKS5Agent(reactor, proxyEndpoint=proxyEndpoint)
         return agent
     return self._Agent(reactor,
                        contextFactory=self._contextFactory,
                        connectTimeout=timeout,
                        bindAddress=bindAddress,
                        pool=self._pool)
示例#3
0
    def _get_agent(self, request, timeout):
        bindaddress = request.meta.get('bindaddress') or self._bindAddress
        proxy = request.meta.get('proxy')
        if proxy:
            scheme, _, host, port, _ = _parse(proxy)
            endpoint = TCP4ClientEndpoint(reactor, host, port, timeout=timeout,
                                          bindAddress=bindaddress)
            return self._ProxyAgent(endpoint)

        return self._Agent(reactor, contextFactory=self._contextFactory,
            connectTimeout=timeout, bindAddress=bindaddress, pool=self._pool)
    def _get_agent(self, request, timeout):
        bind_address = request.meta.get('bindaddress') or self._bindAddress
        proxy = os.environ.get("SOCKS_PROXY", request.meta.get('proxy'))
        _proxy_protocol, _proxy_hostport, proxy_host, proxy_port, _proxy_params = _parse(
            proxy)

        proxy_endpoint = TCP4ClientEndpoint(reactor,
                                            proxy_host,
                                            proxy_port,
                                            timeout=timeout,
                                            bindAddress=bind_address)
        agent = txtorcon_web.tor_agent(reactor, socks_endpoint=proxy_endpoint)

        return agent