下面的代码将一个 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
它还能够将IP地址绑定到telnetlib吗?
下面的代码将一个 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
它还能够将IP地址绑定到telnetlib吗?
telnetlib
至少在最近的 Python 版本中使用socket.create_connection
(请参阅此处的 telnetlib 的源代码),但这也应该被您的 monkeypatch 捕获(此处的源代码——您会看到它使用了一个裸标识符socket
,但这正是您正在猴子补丁的模块中)。当然,monkeypatching 总是非常脆弱(未来版本中最微小的优化,提升socket
in的全局查找create_connection
,然后你就干杯了......;-)所以也许你会希望create_connection
直接使用 monkeypath 作为一种适度更强的方法。