Python CURL 指定ip地址

标签 python urllib2 urllib

我想发出 GET 请求来检索网页或 Web 服务的内容。 我想发送此请求的特定 header 并且 我想设置发送此请求的 IP 地址。 (运行此代码的服务器有多个可用的 IP 地址)。

如何使用 Python 及其库实现此目的?

最佳答案

我检查了urllib2,它不会设置源地址(至少在Python 2.7上不会)。底层库是 httplib,它确实具有该功能,因此直接使用它可能会有一些运气。

来自 httplib documentation :

class httplib.HTTPConnection(host[, port[, strict[, timeout[, source_address]]]])

The optional source_address parameter may be a tuple of a (host, port) to use as the source address the HTTP connection is made from.

您甚至可以通过创建自定义 HTTPHandler 类来说服 urllib2 使用此功能。您需要从 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_class 是 HTTP 连接的 httplib.HTTPConnection

可能如果修补urllib2.py(或复制并重命名它)是一种可接受的解决方法,那么这会起作用:

        h = http_class(host, timeout=req.timeout, source_address=(req.origin_req_host,0))

关于Python CURL 指定ip地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449221/

相关文章:

Python:解码为url格式

python - Tornado 中的异步如何工作?

python - 如何正常中断urllib2下载?

Python urllib2 和动态加载的数据

python - 使用 Python 的维基百科爬虫

python - 用 python 抓取图像但找不到图像

python - Google http ://maps. google.com/maps/geo 非英文字符查询

python - 如何比较 2 个有序字典并创建一个新的有差异的有序字典? ( python 3.7)

python - 如何使用python检查文件夹是否是快捷方式?

python - 在 matplotlib 中使用科学计数法时定位刻度标签的指数