Scrapy Как удалить сайт HTTPS через SSL прокси - PullRequest
0 голосов
/ 22 февраля 2019

У меня SSL прокси-сервер, и я хочу удалить https сайт.Я имею в виду, что связь между scrapy и прокси зашифрована, и тогда прокси откроет соединение с сайтом.после некоторой отладки я обнаружил следующее: - в настоящее время scopy обрабатывает ситуацию следующим образом: -

если сайт http, он использует ScrapyProxyAgent, который отправляет клиенту привет, затем отправляет запрос на подключение к веб-сайту прокси

но если сайт https

, он использует TunnelingAgent, который не отправляет клиенту привет на прокси-сервер и, следовательно, соединение разрывается.

Мне нужно сначала сказать scrapyустановите соединение через ScrapyProxyAgent, затем используйте TunnelingAgent, не уверенный, как это сделать.

Я пытался создать https DOWNLOAD_HANDLERS, но я не такой эксперт

class MyHTTPDownloader(HTTP11DownloadHandler):

    def download_request(self, request, spider):
        """Return a deferred for the HTTP download"""

        timeout = request.meta.get('download_timeout') or self._connectTimeout
        bindaddress = request.meta.get('bindaddress')
        proxy = request.meta.get('proxy')
        agent = ScrapyProxyAgent(reactor,proxyURI=to_bytes(proxy, encoding='ascii'),
                    connectTimeout=timeout, bindAddress=bindaddress, pool=self._pool)
        _, _, proxyHost, proxyPort, proxyParams = _parse(proxy)
        proxyHost = to_unicode(proxyHost)
        url = urldefrag(request.url)[0]
        method = to_bytes(request.method)
        headers = TxHeaders(request.headers)
        omitConnectTunnel = b'noconnect' in proxyParams
        proxyConf = (proxyHost, proxyPort,
                     request.headers.get(b'Proxy-Authorization', None))
        if request.body:
            bodyproducer = _RequestBodyProducer(request.body)
        if request.body:
            bodyproducer = _RequestBodyProducer(request.body)
        elif method == b'POST':
            bodyproducer = _RequestBodyProducer(b'')
        else:
            bodyproducer = None
            start_time = time()
        tunnelingAgent = TunnelingAgent(reactor, proxyConf,
                             contextFactory=self._contextFactory, connectTimeout=timeout,
                             bindAddress=bindaddress, pool=self._pool)

        agent.request(method, to_bytes(url, encoding='ascii'), headers, bodyproducer)

Мне нужно установитьтуннель после того, как прокси-агент подключен.это вообще возможно?

спасибо заранее

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...