Python - IP 不会随词干而改变



我写了一个用词干改变IP的脚本,但似乎它不起作用。以下是脚本的缩短版本:

from stem import Signal
from stem.control import Controller
from stem.connection import connect
def changeIP():
    with Controller.from_port(port = 9051) as controller:
        controller.authenticate()
        controller.signal(Signal.NEWNYM)
def printIP():
    my_ip = urlopen('http://ip.42.pl/raw').read()
    print("IP -> %s" % my_ip)
#Some of my other codes
while(true):
    j+=1
    if j == 2:
        changeIP()
        j = 0
        printIP()

它只是一次又一次地打印我的公共IP。它应该打印相同的 IP 2 次,然后更改,但事实并非如此。我的 torrc 配置已正确配置。

ControlPort = 9051
HashedControlPassword 16:AD2DD67382E391D960F7E38F49A1AAB31479A0576222AB885C3CCFD70B
cookie authentication 1

我什至尝试将散列控制密码放在control.authenticate(password='AD2DD67382E391D960F7E38F49A1AAB31479A0576222AB885C3CCFD70B')中,但它仍然不起作用,我也希望我的脚本不要使用它。这几周我一直在寻找,我发现我可以使用SocksiPy模块,但我做不到。

请重新编码我的脚本,非常感谢。

我假设你正在处理Windows。我不确定这是否适用于Linux。

我建议您在不更改 torrc 配置的情况下下载 Tor 的新副本。就个人而言,我没有配置hashcontrolpassword但以下 python 代码仍然适用于我。请尝试此处列出的步骤 1:https://stackoverflow.com/a/48144473/9183144

按照步骤 1,您应该能够在终端中运行netstat -an时看到127.0.0.1:9150127.0.0.1:9151

之后复制以下代码并尝试运行它(将目录更改为您的 Tor 文件夹(。

# library to launch and kill Tor process
import os
import subprocess
# library for Tor connection
import socket
import socks
import http.client
import time
import requests
from stem import Signal
from stem.control import Controller
def launchTor():
    # start Tor (wait 30 sec for Tor to load)
    sproc = subprocess.Popen(r'.../Tor Browser/Browser/firefox.exe')
    time.sleep(30)
    return sproc
def killTor(sproc):
    sproc.kill()
def connectTor():
    socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9150, True)
    socket.socket = socks.socksocket
    print("Connected to Tor")
def set_new_ip():
    # disable socks server and enabling again
    socks.setdefaultproxy()
    """Change IP using TOR"""
    with Controller.from_port(port=9151) as controller:
        controller.authenticate()
        socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5, "127.0.0.1", 9150, True)
        socket.socket = socks.socksocket
        controller.signal(Signal.NEWNYM)
def checkIP():
    conn = http.client.HTTPConnection("icanhazip.com")
    conn.request("GET", "/")
    time.sleep(3)
    response = conn.getresponse()
    print('current ip address :', response.read())
# Launch Tor and connect to Tor network
sproc = launchTor()
connectTor()
# Check current IP
checkIP()
# Set new IP
set_new_IP()
# Check newly assigned IP
time.sleep(10)
checkIP()
# remember to kill process 
killTor(sproc)

最新更新