mirror of
https://github.com/scrapy/scrapy.git
synced 2025-02-25 22:43:57 +00:00
Merge branch 'issue82'
This commit is contained in:
commit
7201d074c1
@ -8,10 +8,9 @@ from scrapy.conf import settings
|
||||
from scrapy import optional_features
|
||||
|
||||
ssl_supported = 'ssl' in optional_features
|
||||
if ssl_supported:
|
||||
from twisted.internet.ssl import ClientContextFactory
|
||||
|
||||
HTTPClientFactory = load_object(settings['DOWNLOADER_HTTPCLIENTFACTORY'])
|
||||
ClientContextFactory = load_object(settings['DOWNLOADER_CLIENTCONTEXTFACTORY'])
|
||||
|
||||
|
||||
class HttpDownloadHandler(object):
|
||||
|
@ -9,6 +9,7 @@ from twisted.internet import defer
|
||||
from scrapy.http import Headers
|
||||
from scrapy.utils.httpobj import urlparse_cached
|
||||
from scrapy.responsetypes import responsetypes
|
||||
from scrapy import optional_features
|
||||
|
||||
|
||||
def _parsed_url_args(parsed):
|
||||
@ -135,3 +136,24 @@ class ScrapyHTTPClientFactory(HTTPClientFactory):
|
||||
def gotHeaders(self, headers):
|
||||
self.headers_time = time()
|
||||
self.response_headers = headers
|
||||
|
||||
|
||||
|
||||
if 'ssl' in optional_features:
|
||||
from twisted.internet.ssl import ClientContextFactory
|
||||
from OpenSSL import SSL
|
||||
else:
|
||||
ClientContextFactory = object
|
||||
|
||||
|
||||
class ScrapyClientContextFactory(ClientContextFactory):
|
||||
"A SSL context factory which is more permissive against SSL bugs."
|
||||
# see https://github.com/scrapy/scrapy/issues/82
|
||||
# and https://github.com/scrapy/scrapy/issues/26
|
||||
|
||||
def getContext(self):
|
||||
ctx = ClientContextFactory.getContext(self)
|
||||
# Enable all workarounds to SSL bugs as documented by
|
||||
# http://www.openssl.org/docs/ssl/SSL_CTX_set_options.html
|
||||
ctx.set_options(SSL.OP_ALL)
|
||||
return ctx
|
||||
|
@ -64,6 +64,7 @@ DOWNLOAD_TIMEOUT = 180 # 3mins
|
||||
DOWNLOADER_DEBUG = False
|
||||
|
||||
DOWNLOADER_HTTPCLIENTFACTORY = 'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'
|
||||
DOWNLOADER_CLIENTCONTEXTFACTORY = 'scrapy.core.downloader.webclient.ScrapyClientContextFactory'
|
||||
|
||||
DOWNLOADER_MIDDLEWARES = {}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user