如何为urllib构建的Python请求opener添加自定义请求头?
如何给urllib请求添加自定义请求头?
没问题!要给你的urllib请求加上自定义请求头,只需要稍微调整代码结构,用Request对象来封装URL和请求头信息即可。下面是修改后的完整代码:
import six from six.moves.urllib import request # 初始化带代理的opener opener = request.build_opener( request.ProxyHandler({'http': 'http://127.0.0.1:9000'}) ) # 定义你的自定义请求头(按需修改) custom_headers = { 'User-Agent': 'MyCustomClient/1.0', 'X-Custom-Header': 'MyUniqueValue', # 可以在这里添加任意需要的请求头 } # 创建包含请求头的Request对象 req = request.Request('http://example.com/data.json', headers=custom_headers) # 发送请求并读取响应内容 response = opener.open(req) print(response.read())
关键说明:
- 不再直接把URL字符串传给
opener.open(),而是先创建request.Request实例,把URL和自定义头都传入这个对象。这样opener在发送请求时会自动带上这些头信息。 headers参数接收一个字典,键是请求头的名称,值是对应的内容。你可以根据目标服务的要求,添加任意数量的自定义头。- 如果需要后续动态添加单个请求头,还可以用
req.add_header()方法,比如:req.add_header('Authorization', 'Bearer YourAuthToken')
这样修改后,目标URL就能收到你设置的自定义请求头,并根据这些头做出相应的响应啦。
内容的提问来源于stack exchange,提问作者WannabeCoder
相关产品推荐
相关产品推荐

