如何修改urllib2的User Agent?解决Windows服务器403 Forbidden错误
解决urllib2在Windows上403 Forbidden的User-Agent修改方案
完全理解你的需求——不用替换成requests,咱们直接给urllib2加上Firefox的User-Agent就行!
出现403的原因确实大概率是默认的urllib2请求标识太“扎眼”了:它默认的User-Agent是类似Python-urllib/2.7这类字符串,很多服务器会直接把这种请求判定为爬虫,拒绝访问。换成Firefox的User-Agent就能模拟正常浏览器请求,绕过这个拦截。
具体修改步骤
- 定义Firefox的User-Agent字符串:你可以用Windows平台下Firefox的标准UA(下面这个是较新的版本,也可以根据实际需要调整):
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0 - 构造请求头字典:把User-Agent放进headers里
- 创建带请求头的Request对象:替代原来直接调用
urlopen的方式
修改前后的代码对比
原来的代码(可能会触发403):
import urllib2 response = urllib2.urlopen("你的目标页面URL")
修改后的代码(添加Firefox UA):
import urllib2 # 设定Windows平台Firefox的User-Agent firefox_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" # 构造请求头 request_headers = { 'User-Agent': firefox_user_agent # 如果需要,还可以添加其他请求头,比如Accept-Language: zh-CN,zh;q=0.8 } # 创建带请求头的Request对象 request = urllib2.Request("你的目标页面URL", headers=request_headers) # 发送请求并获取响应 response = urllib2.urlopen(request)
额外说明
如果你是用Python 3(注意Python3里已经没有urllib2,而是拆分到urllib.request模块),代码只需要稍微调整:
import urllib.request firefox_user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0" request_headers = {'User-Agent': firefox_user_agent} request = urllib.request.Request("你的目标页面URL", headers=request_headers) response = urllib.request.urlopen(request)
这样修改后,服务器会把你的请求识别为正常的Firefox浏览器访问,应该就能解决Windows上的403问题了。
内容的提问来源于stack exchange,提问作者J.doe
相关产品推荐
相关产品推荐

