Вопрос

Код ниже привязывает 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 но это именно тот модуль, который вы патчите).Конечно, обезьянье исправление всегда чрезвычайно хрупко (мельчайшая оптимизация в каком-нибудь будущем выпуске, повышающая глобальный поиск socket в create_connection, и ты поджарен... ;-) так что, может быть, тебе захочется обезьяний путь create_connection непосредственно как умеренно более сильный подход.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top