如何在Python中将IP地址绑定到telnetlib

1 投票
1 回答
916 浏览
提问于 2025-04-15 20:24

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

1 个回答

2

在最近的Python版本中,telnetlib这个库其实是用socket.create_connection来工作的(你可以在这里查看telnetlib的源代码这里)。不过,这个也应该能被你做的猴子补丁(monkeypatch)捕捉到(源代码可以在这里查看这里——你会看到它使用了一个简单的标识符socket,而这个正好是在你做猴子补丁的模块里)。当然,猴子补丁总是非常脆弱(如果将来某个版本做了微小的优化,比如提升了create_connectionsocket的全局查找,那你就麻烦了……;-)所以你可能想直接对create_connection做猴子补丁,这样会稍微强一点。

撰写回答