gpt4 book ai didi

python - Scrapy 代理 ip 不适用于 https,返回 'ssl handshake failure'

转载 作者:行者123 更新时间:2023-11-28 22:37:42 27 4
gpt4 key购买 nike

Scrapy 使用我的代理 ip 来处理 http 请求,但不能处理 https 请求。

我知道我的代理 IP 正在使用 http,因为我通过向 http://ipinfo.io/ip 发送请求来测试它:

2016-03-28 12:10:42 [scrapy] DEBUG: Crawled (200) <GET http://ipinfo.io/ip> (referer: http://www.google.com)
2016-03-28 12:10:42 [root] INFO: *** TEST, WHAT IS MY IP: ***
107.183.7.XX

我知道由于此错误消息,它无法处理 https 请求:

2016-03-28 12:10:55 [scrapy] DEBUG: Gave up retrying <GET https://www.my-company-url.com> (failed 3 times): [<twisted.python.failure.Failure OpenSSL.SSL.Error: [('SSL routines', 'ssl23_read', 'ssl handshake failure')]>]

我的 settings.py 包含:

DOWNLOADER_MIDDLEWARES = {
'crystalball.middlewares.ProxyMiddleware': 100,
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110
}

我的 crystalball.middlewares.ProxyMiddleware 包含:

import base64

class ProxyMiddleware(object):

def process_request(self, request, spider):
request.meta['proxy'] = "https://107.183.X.XX:55555"
proxy_user_pass = "hXXbp3:LitSwDXX99"
encoded_user_pass = base64.encodestring(proxy_user_pass)
request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass

关于我下一步应该尝试什么有什么建议吗?

旁注:这篇 SO 帖子上的解决方案没有奏效:Scrapy and proxies .

最佳答案

罪魁祸首是 base64.encodestring(),它将不需要的换行符 \n 添加到请求的 Proxy-Authorization header 的值中。

解决方案很简单,strip() 关闭 \n

改变这一行:

request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass

对此:

request.headers['Proxy-Authorization'] = 'Basic ' + encoded_user_pass.strip()

关于python - Scrapy 代理 ip 不适用于 https,返回 'ssl handshake failure',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36269843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com