Skip to content

Instantly share code, notes, and snippets.

@vetleledaal
Created February 24, 2019 22:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vetleledaal/110a3d2e433e52bf1ba80e2affc42a0c to your computer and use it in GitHub Desktop.
Save vetleledaal/110a3d2e433e52bf1ba80e2affc42a0c to your computer and use it in GitHub Desktop.
Doesn't work on Windows, works on Linux and maybe OS X.
import socket
import requests
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.poolmanager import PoolManager
class SourceInterfaceAdapter(HTTPAdapter):
def __init__(self, source_interface, **kwargs):
self.source_interface = source_interface
super(SourceInterfaceAdapter, self).__init__(**kwargs)
def init_poolmanager(self, connections, maxsize, block=False):
self.poolmanager = PoolManager(
num_pools=connections,
maxsize=maxsize,
block=block,
socket_options=((socket.SOL_SOCKET, 25, str(self.source_interface + '\0').encode('utf-8')),)
)
s = requests.Session()
s.mount('http://', SourceInterfaceAdapter('eth0'))
s.mount('https://', SourceInterfaceAdapter('eth0'))
r = s.get('https://ifconfig.co/', headers={'User-Agent': 'curl/7.61.0'})
print(r.text)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment