下面的代码将 ip 地址绑定到 urllib、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

telnetlib是否也可以绑定IP地址?

有帮助吗?

解决方案

telnetlib 至少在最近的 Python 版本中使用 socket.create_connection (参见 telnetlib 的来源 这里)但这也应该被你的猴子补丁捕获(来源 这里 -- 你会看到它使用一个裸标识符 socket 但这正是您正在猴子修补的模块中)。当然,monkeypatching 总是非常脆弱(未来版本中最微小的优化,提升全局查找 socketcreate_connection, ,你就干杯了……;-)所以也许你会想要猴子路径 create_connection 直接作为一种稍强的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top