【问题标题】:Binding ip address to urllib2 is not working for me将 ip 地址绑定到 urllib2 对我不起作用
【发布时间】:2015-01-20 14:16:42
【问题描述】:

我是 urllib2 的新手。我尝试使用 urllib2 将 IP 地址绑定到 URL 请求,它不适用于 Tor 提供的 IP 地址。

import socks
import socket
import urllib2

true_socket = socket.socket


def make_bound_socket(source_ip):
    def bound_socket(*a, **k):
        sock = true_socket(*a, **k)
        sock.bind((source_ip, 0))
        return sock
    return bound_socket

if __name__ == '__main__':
socket.socket = make_bound_socket('123.108.224.70')
print "IP address: from tor-",urllib2.urlopen('http://my-ip.herokuapp.com').read()

上面我提到的IP地址是从tor获取的。在此致谢

它给了我以下错误

Traceback (most recent call last):
  File "socks_ppp.py", line 56, in <module>
    newIdentity()
  File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 404, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 422, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1214, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/usr/lib/python2.7/urllib2.py", line 1184, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 99] Cannot assign requested address>

【问题讨论】:

    标签: python binding urllib2 tor


    【解决方案1】:

    您要求绑定到 IP 地址123.108.224.70 对应的接口。如果你的机器上没有对应的接口,那么就无法绑定socket,会报错。这是一个简化的例子:

    >>> import socket
    >>> s = socket.socket()
    >>> s.bind(('123.108.224.70', 0))
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib64/python2.7/socket.py", line 224, in meth
        return getattr(self._sock,name)(*args)
    socket.error: [Errno 99] Cannot assign requested address
    

    这失败了,因为我没有与该 IP 地址的接口,我怀疑你也一样 - 试试看。

    您可以使用ifconfig 查看与接口对应的 IP 地址。我怀疑123.108.224.70 不存在。

    否则,当我使用机器上存在的 IP 地址时,我发现您的代码可以正常工作。

    【讨论】:

    • 你是写的。但是,如果我们没有与该 IP 地址的接口,是否有任何方法可以绑定这样的 IP。我的意思是 Tor 如何使这样的调用成为可能。
    • 答案是否定的
    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 2016-03-08
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多