Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- from zipfile import ZipFile
- from contextlib import contextmanager
- from io import BytesIO
- from pathlib import Path
- from tempfile import TemporaryDirectory
- from subprocess import Popen, STARTUPINFO, CREATE_NO_WINDOW, DEVNULL
- from threading import Thread, Event
- import requests
- # pip install requests[socks5]
- @contextmanager
- def download_unzip():
- req = requests.get('https://tor.eff.org/dist/torbrowser/9.0.1/tor-win32-0.4.1.6.zip')
- print('Tor heruntergeladen')
- archive = ZipFile(BytesIO(req.content))
- with TemporaryDirectory() as tmp_dir:
- print('Entpacke Tor')
- archive.extractall(tmp_dir)
- yield Path(tmp_dir)
- def run_server(event):
- with download_unzip() as path:
- tor_exe = path / 'Tor/tor.exe'
- sinfo = STARTUPINFO()
- sinfo.dwFlags |= CREATE_NO_WINDOW
- print('Starte Tor')
- proc = Popen([tor_exe], cwd=path, startupinfo=sinfo, stderr=DEVNULL, stdout=DEVNULL)
- while not event.is_set():
- time.sleep(1)
- proc.terminate()
- # Prozess wird beendet
- proc.wait()
- # Wartet bis der Prozess beendet ist
- # Kontextmanager verlassen führt dazu, dass die temporären Dateien
- # gelöscht werden.
- close_event = Event()
- tor_thread = Thread(target=run_server, args=[close_event])
- tor_thread.start()
- while True:
- try:
- req = requests.get(
- 'https://api.ipify.org/',
- proxies={
- 'http': 'socks5://localhost:9050',
- 'https': 'socks5://localhost:9050',
- }
- )
- except Exception as e:
- print('Not connected to socks5')
- continue
- print(req.text)
- close_event.set()
- break
Add Comment
Please, Sign In to add comment