python - 来自不同IP地址的请求

标签 python

我想使用 urllib2 并从不同的 IP 地址发出请求。

我已经检查过了,但我没有运气:Source interface with Python and urllib2

链接中的代码:

class BoundHTTPHandler(urllib2.HTTPHandler):

    def __init__(self, source_address=None, debuglevel=0):
        urllib2.HTTPHandler.__init__(self, debuglevel)
        self.http_class = functools.partial(httplib.HTTPConnection,
                source_address=source_address)

    def http_open(self, req):
        return self.do_open(self.http_class, req)

# test
handler = BoundHTTPHandler("192.168.1.1", 0)
opener = urllib2.build_opener(handler)
urllib2.install_opener(opener)
urllib2.urlopen("http://google.com/").read() 

错误:类型错误:init() 获得意外的关键字参数“source_address”

在使用 urllib2 之前我将如何运行此代码?

import socket
true_socket = socket.socket
def bound_socket(*a, **k):
    sock = true_socket(*a, **k)
    sock.bind((sourceIP, 0))
    return sock
socket.socket = bound_socket

所以你有了bound_socket函数,然后呢?

编辑我不相信我的Python版本支持source_address,我认为这就是我收到错误的原因。

那么,让我们尝试一下套接字代码。

最佳答案

代码socket.socket =bound_socket会影响全局任何模块中之后运行的所有代码,即一旦运行它;您不需要做任何其他事情。

httplib.HTTPConnection class has source_address parameter in Python 2.7因此您的 BoundHTTPHandler 也应该可以工作。

关于python - 来自不同IP地址的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26501176/

相关文章:

python - 即使对于 128 GB 的内存,图形聚类也会出现内存错误。为什么?

python - 对于成对求和,我需要多少项才能得到明显错误的结果?

python - 在Python中导入模块

python - 如何正确处理python中的可选特性

python - tensorflow - 'Unable to get element as bytes' 错误

python - 没有名为 Alchemy API 的模块

PYTHON Pandas - 根据其他数据框中的值对数据框使用 Pandas 样式

python - subprocess.call cd 不工作

python - 被 pxssh 卡住了。第一次登录成功后就不再登录了?

Python:如何将文本目录读入列表