Привязка исходящего IP-адреса для каждого соединения, выполненного интерпретатором Python - PullRequest
2 голосов
/ 21 мая 2011

Мне нужно встроить простой скрипт, написанный на Python, в мое C-приложение. Сценарий просто загружает некоторый контент из Интернета, анализирует его и печатает результат в стандартный вывод. Мне нужно привязать исходящий IP-адрес каждого соединения, созданного скриптом, чтобы использовать множество IP-адресов, предоставляемых сервером. Я могу использовать функции Python / C API или C system () / execve (). Я предпочитаю не изменять сам скрипт, так как он использует liburl2, который не поддерживает привязку локального IP напрямую.

Буду благодарен за каждый намек.

С уважением, Михал Пьетрас.

Ответы [ 3 ]

1 голос
/ 21 мая 2011

Ответ на ваш вопрос здесь: Исходный интерфейс с Python и urllib2

0 голосов
/ 27 ноября 2012

Вы можете установить исходящий IP-адрес без редактирования исходного кода Python, просто выполнив код, описанный здесь в виде строки в интерпретаторе перед запуском встроенного кода.Примерно так будет работать:

#include <Python.h>

int main(int argc, char *argv[]) {
  Py_SetProgramName(argv[0]);
  Py_Initialize();
  PyRun_SimpleString
    ("import socket\n"
     "true_socket = socket.socket\n"
     "def bound_socket(*a, **k):\n"
     "    sock = true_socket(*a, **k)\n"
     "    sock.bind((127.0.0.1, 0))\n"
     "    return sock\n"
     "socket.socket = bound_socket\n");

  // Run embedded code here

  Py_Finalize();
  return 0;
}

Конечно, вы бы заменили 127.0.0.1 на правильный IP-адрес источника.

0 голосов
/ 17 мая 2012

Вы можете получить исходящий IP, используя следующий пакет,

outgoingip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...