Skip to content

Instantly share code, notes, and snippets.

@xeno14
Created March 11, 2018 01:00
Show Gist options
  • Save xeno14/24c6214b89da6dbec66a86c78893cef4 to your computer and use it in GitHub Desktop.
Save xeno14/24c6214b89da6dbec66a86c78893cef4 to your computer and use it in GitHub Desktop.
Bind another IP address in requests
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
class SourceAddressAdapter(HTTPAdapter):
def __init__(self, source_address, **kwargs):
self.source_address = source_address
super(SourceAddressAdapter, self).__init__(**kwargs)
def init_poolmanager(self, connections, maxsize, block=False):
self.poolmanager = PoolManager(num_pools=connections,
maxsize=maxsize,
block=block,
source_address=self.source_address)
ipaddr=[
A,
B,
]
s = requests.Session()
# using address A
s.mount('http://', SourceAddressAdapter((ipaddr[0],0)))
print(s.get("http://httpbin.org/ip").text)
# using adress B
s.mount('http://', SourceAddressAdapter((ipaddr[1],0)))
print(s.get("http://httpbin.org/ip").text)
@xeno14
Copy link
Author

xeno14 commented Mar 11, 2018

originally posted at here

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment