python - 从简单的 get 返回 403 Forbidden 但在浏览器中加载正常

标签 python python-2.7 web-scraping python-requests

我正在尝试从页面获取一些数据,但返回错误 [403 Forbidden]。

我以为是用户代理,但我尝试了几个用户代理,它仍然返回错误。

我还尝试使用库 fake user-agent但我没有成功。

with requests.Session() as c:
        url = '...'
        #headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2224.3 Safari/537.36'}
        ua = UserAgent()
        header = {'User-Agent':str(ua.chrome)}
        page = c.get(url, headers=header)
        print page.content

当我手动访问该页面时,一切正常。

我正在使用 python 2.7.14 和 requests library , 有什么想法吗?

最佳答案

网站可能会使用请求中的任何内容来触发拒绝。

因此,从您的浏览器发出的请求中复制所有 header 。然后将它们一一删除1,找出哪些是必不可少的。

根据 Python requests. 403 Forbidden , 要向请求添加自定义 header ,请执行以下操作:

result = requests.get(url, headers={'header':'value', <etc>})

1更快的方法是 delete half of them each time相反,但这更复杂,因为可能有多个基本 header

关于python - 从简单的 get 返回 403 Forbidden 但在浏览器中加载正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49542986/

相关文章:

python - 将 ElementTree 编写为规范化 XML (c14n)

python - 从字典中打印随机范围 2-4 中的 K 和 V

python - 为什么从 ggplot 生成的图没有显示出来?

python - 为什么 python3 的加载时间是 python2 的两倍?

windows - 在 python 2.7 ctypes 中构建 UCS4 字符串缓冲区

python - Scrapy - FormRequest 在方法为 POST 时发送 GET 请求

python - sklearn RandomizedSearchCV提取不同折叠的混淆矩阵

此python3代码的Python2版本用于编码

python蜘蛛返回空json文件

python - Scraper 不会停止点击下一页按钮