我试图从网页上获取一些数据,但它会返回错误[ 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,不知道吗?
答案 0 :(得分:3)
该网站可能正在使用请求中的任何内容来触发拒绝。
因此,请复制浏览器发出的请求中的所有标头。然后逐个删除它们以找出哪些是必要的。
根据Python requests. 403 Forbidden,要为请求添加自定义标头,请执行以下操作:
result = requests.get(url, headers={'header':'value', <etc>})
答案 1 :(得分:1)
我可以看到浏览器包含的通用GET
请求的所有标头:
Host: <URL>
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
Upgrade-Insecure-Requests: 1
尝试在请求中逐步包含所有这些(1乘1),以便确定成功请求所需的那些。
另一方面,请查看Cookies
选项下浏览器控制台/开发人员工具中提供的标签Security
和/或Network
。