General SOCKS server failure when switching identity using stem

后端 未结 3 1527
北海茫月
北海茫月 2020-12-10 09:11

I have Tor running on a remote server (Ubuntu) on port 9150 with the control port on 9151. I\'ve confirmed both are running via netstat -ant.

Here is my code which i

3条回答
  •  -上瘾入骨i
    2020-12-10 09:46

    You can't open a new controller once you've connected to Tor. Try opening a controller right at the top of your script. Then both the Tor connection and signaller use the same controller object.

    This seems to work with Python3:

    import time
    
    import socket
    import socks
    
    import requests
    from bs4 import BeautifulSoup
    from stem import Signal
    from stem.control import Controller
    
    controller = Controller.from_port(port=9051)
    
    
    def connectTor():
        socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5 , "127.0.0.1", 9050, True)
        socket.socket = socks.socksocket
    
    
    def renew_tor():
        controller.authenticate()
        controller.signal(Signal.NEWNYM)
    
    
    def show_my_ip():
        url = "http://www.showmyip.gr/"
        r = requests.Session()
        page = r.get(url)
        soup = BeautifulSoup(page.content, "lxml")
        ip_address = soup.find("span",{"class":"ip_address"}).text.strip()
        print(ip_address)
    
    
    for i in range(10):
        renew_tor()
        connectTor()
        showmyip()
        time.sleep(10)
    

提交回复
热议问题