1

下面的代码将一个 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吗?

4

1 回答 1

2

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

于 2010-03-14T01:17:34.640 回答