Если у вас есть несколько интерфейсов с несколькими IP-адресами или если вы просто хотите, чтобы ядро обрабатывало это, вам просто нужно добавить маршрут к хосту в вашем ядре. На linux это будет выглядеть примерно так:
ip route add 10.45.0.20/32 src 10.45.0.10
Где 10.45.0.10 - это IP-адрес, который вы хотите использовать в качестве источника, а 10.45.0.20 - веб-сервер. Примечание: если у вас есть шлюз для доступа к серверу, то вам нужно иметь оператор «via» и желаемый исходный ip должен иметь возможность отправлять на него трафик c (то же самое su bnet).
Если у вас есть несколько интерфейсов, и IP-адрес, который вы хотите использовать, является единственным, привязанным к одному из этих интерфейсов, то вы можете просто добавить в свою программу Pycurl следующее:
c = pycurl.Curl()
...
c.setopt(pycurl.INTERFACE, "eth2")
Где eth2 Имя интерфейса, с которого будет поступать запрос. Если IP-адрес, который вы хотите использовать в качестве источника, является единственным, привязанным к eth2, то запрос будет иметь этот IP-адрес источника.