我正在使用python 3开发一个简单的Web scraper,但是当我发送get或post请求时,响应为403。尽管在python 2中工作正常。我在两个版本中都使用了相同版本的请求库。我也尝试过,Verify=False/True
但两个版本的区别仍然存在。
要求= 2.22.0
证书= 2019.9.11
from requests import get
url = 'https://www.gamestop.com/'
header = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'en-US,en;q=0.5',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0',
'DNT': '1',
'Upgrade-Insecure-Requests': '1',
'Connection': 'keep-alive',
'Host': 'www.gamestop.com'
}
res = get(url, headers=header, verify=False).status_code
print(res)
# 403 when using python 3.7.4
# 200 when using python 2.7.16
通过@blhsing编辑:
下面的列表根据注释跟踪哪些特定的Python版本有效,哪些版本失败。到目前为止,跨平台的每个特定Python版本的成功和失败都是一致的。
随意编辑您自己的结果以及用于生成结果的特定Python版本的问题的这一部分。
2.7.14 works (blhsing)
2.7.16 works (repl.it)
3.6.5 works (blhsing)
3.6.8 fails (Reinderien and blhsing)
3.7.3 works (wim and blhsing)
3.7.4 fails (repl.it and blhsing)
3.8.0 fails (OP)
关于repl.it的演示:Python 2.7.16和Python 3.7.4
ssl.OPENSSL_VERSION
)。您不需要所有这些标头即可复制,只需一个简单的旧get(url)即可。