我想发出GET请求来检索网页或网络服务的内容。 我想为此请求发送特定标头 我想设置发送此请求的IP地址FROM WHICH。 (运行此代码的服务器有多个可用的IP地址)。
如何使用Python及其库来实现这一目标?
答案 0 :(得分:1)
您可以使用许多选项来发出http请求。我甚至认为没有真正达成共识的“最佳”。你可以使用以下任何一个:
此列表并非详尽无遗。阅读文档并选择。有些是较低级别,有些提供丰富的浏览器功能。所有这些都允许您在提出请求之前设置标题。
答案 1 :(得分:1)
我检查了urllib2
并且它不会设置源地址(至少在Python 2.7上没有)。底层库是httplib
,它具有该功能,因此您可以直接使用它。
class httplib.HTTPConnection(host[, port[, strict[, timeout[, source_address]]]])
可选的
source_address
参数可以是(主机,端口)的元组,用作建立HTTP连接的源地址。
您甚至可以通过创建自定义urllib2
课来说服HTTPHandler
使用此功能。您需要复制urllib2.py
中的一些代码,因为AbstractHTTPHandler
正在使用此调用的更简单版本:
class AbstractHTTPHandler(BaseHandler):
# ...
def do_open(self, http_class, req):
# ...
h = http_class(host, timeout=req.timeout) # will parse host:port
HTTP连接的http_class
为httplib.HTTPConnection
。
可能相反,如果修补urllib2.py
(或复制并重命名)是一种可接受的解决方法,那么这将有效:
h = http_class(host, timeout=req.timeout, source_address=(req.origin_req_host,0))