python - python3.6和python3.7中相同请求对tor的状态差异
问题描述
我有一个过去在 python3.6 中工作的 Tor 请求。我切换到 python3.7,现在我得到 403 响应状态。
以下是使用 conda 环境和请求复制问题的方法:
在 python3.6 中:
conda create -n python3.6 python=3.6.5
conda activate python3.6
conda install requests
conda install ipython[all]
ipython
import requests
session = requests.session()
session.proxies = {}
session.proxies['http'] = 'socks5h://localhost:9050'
session.proxies['https'] = 'socks5h://localhost:9050'
url='https://dubicars.com'
session.get(url, headers={'User-Agent': "Mozilla/5.0 (Windows NT 6.1; rv:10.0) Gecko/20100101 Firefox/10.0"})
返回:<Response [200]>
在 python3.7 中:
conda create -n python3.7
conda activate python3.7
conda install requests
conda install ipython[all]
ipython
import requests
session = requests.session()
session.proxies = {}
session.proxies['http'] = 'socks5h://localhost:9050'
session.proxies['https'] = 'socks5h://localhost:9050'
url='https://dubicars.com'
session.get(url, headers={'User-Agent': "Mozilla/5.0 (Windows NT 6.1; rv:10.0) Gecko/20100101 Firefox/10.0"})
返回:<Response [403]>
两者都应该产生相同的响应(如果成功而没有超时或中断),但我200
在第一个中得到 a ,403
在第二个中得到 a 。有什么解释和解决方法吗?
这也发生在其他一些网站上。
区分每个环境的包,我只看到 3 个版本差异,其中一个显然是 python:
cryptography 2.3.1
openssl 1.0.2t
python 3.6.5
cryptography 2.7
openssl 1.1.1d
python 3.7.4
编辑:我将openssl降级到1.0.2t,它将密码学降级到与上面的python 3.6.5相同的版本并将python降级到3.7.0,升级python将沿着openssl和密码学升级。随着降级 python 3.7 请求工作正常。
我相信问题来自openssl,所以这是预期的行为吗?我应该以不同的方式设置请求吗?
解决方案
推荐阅读
- json - vba - 在json数据中获取方括号中的数组值
- laravel - 管理部分包含无效的资产链接
- php - 如何检查给定数组是否包含来自php中另一个数组的任何值?
- reactjs - React data-table-component:onClick on button 在内部图标上不起作用
- c# - Azure Function EventHubTrigger 如何从 Azure 应用配置中读取 EventHubName 和连接字符串?
- angular - 如何以角度使用 XLSX 将多个 HTML 表添加到单个工作表
- vb.net - Project Online CSOM:获取每日作业计划
- python - 在 Reportlab 中将变量页眉和页脚添加到多页 PDF
- c# - 为什么当 ModelState.IsValid 为 false 时无法在 Controller 中命中断点?
- python - 如何从“张量”中获取多个相同大小的切片?