仅通过标准 python 套接字获取 Tor7.0 的新 ip
Get new ip of Tor7.0 by standard python socket only
当我尝试在 windows 10 上更新 Tor 的 ip 时,它总是失败(我已经阅读了很多堆栈溢出的帖子,比如 this and this,但没有任何效果)。
- OS : windows 10 64 位
- tor:版本 7.0
我的 torrc 的内容
# This file was generated by Tor; if you edit it, comments will not be preserved
# The old torrc file was renamed to torrc.orig.1 or similar, and Tor will ignore it
DataDirectory C:\Users\yyyy\Desktop\Tor Browser\Browser\TorBrowser\Data\Tor
GeoIPFile C:\Users\yyyy\Desktop\Tor Browser\Browser\TorBrowser\Data\Tor\geoip
GeoIPv6File C:\Users\yyyy\Desktop\Tor Browser\Browser\TorBrowser\Data\Tor\geoip6
HiddenServiceStatistics 0
HashedControlPassword 16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
CookieAuthentication 1 #either with nor without this line, still fail
torrc-defaults 的内容
# torrc-defaults for Tor Browser
#
# DO NOT EDIT THIS FILE
#
# This file is distributed with Tor Browser and SHOULD NOT be modified (it
# may be overwritten during the next Tor Browser update). To customize your
# Tor configuration, shut down Tor Browser and edit the torrc file.
#
# If non-zero, try to write to disk less frequently than we would otherwise.
AvoidDiskWrites 1
# Where to send logging messages. Format is minSeverity[-maxSeverity]
# (stderr|stdout|syslog|file FILENAME).
Log notice stdout
CookieAuthentication 1
## fteproxy configuration
ClientTransportPlugin fte exec TorBrowser\Tor\PluggableTransports\fteproxy --managed
## obfs4proxy configuration
ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit exec TorBrowser\Tor\PluggableTransports\obfs4proxy
## meek configuration
ClientTransportPlugin meek exec TorBrowser\Tor\PluggableTransports\terminateprocess-buffer TorBrowser\Tor\PluggableTransports\meek-client-torbrowser -- TorBrowser\Tor\PluggableTransports\meek-client
用于更新ip的脚本
import repr as reprlib
import socket
import sys
try:
tor_c = socket.create_connection(("127.0.0.1", 9151))
tor_c.send('AUTHENTICATE "{}"\r\n'.format("16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2"))
response = tor_c.recv(1024)
if response != '250 OK\r\n250 OK\r\n':
sys.stderr.write('Unexpected response from Tor control port: {}\n'.format(response))
except Exception, e:
sys.stderr.write('Error connecting to Tor control port: {}\n'.format(repr(e)))
但是服务器总是回复我
来自 Tor 控制端口的意外响应:515 身份验证失败:密码与 HashedControlPassword 不匹配或
身份验证 cookie。
我知道有 python 库可用于此类任务,但我只想通过 python 的标准套接字库更新 ip,我该如何正确执行此操作?谢谢
HashedControlPassword
是身份验证密码的哈希值。要进行身份验证,它将是 AUTHENTICATE "your actual password"
。
控制协议表面上比较简单
例如:
telnet localhost 9051
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
authenticate "password"
250 OK
signal NEWNYM
250 OK <-- identity changed for new circuits
这对我有用:
import repr as reprlib
import socket
import sys
try:
tor_c = socket.create_connection(("127.0.0.1", 9051))
tor_c.send("AUTHENTICATE \"{}\"\n".format("password"))
response = tor_c.recv(1024)
if response != '250 OK\r\n':
sys.stderr.write('Unexpected response from Tor control port: {}\n'.format(response))
tor_c.send("SIGNAL NEWNYM\n");
response = tor_c.recv(1024)
print(response)
except Exception, e:
sys.stderr.write('Error connecting to Tor control port: {}\n'.format(repr(e)))
您也可以按照以下示例避免 Python:Request new identity from Windows command line。
当我尝试在 windows 10 上更新 Tor 的 ip 时,它总是失败(我已经阅读了很多堆栈溢出的帖子,比如 this and this,但没有任何效果)。
- OS : windows 10 64 位
- tor:版本 7.0
我的 torrc 的内容
# This file was generated by Tor; if you edit it, comments will not be preserved
# The old torrc file was renamed to torrc.orig.1 or similar, and Tor will ignore it
DataDirectory C:\Users\yyyy\Desktop\Tor Browser\Browser\TorBrowser\Data\Tor
GeoIPFile C:\Users\yyyy\Desktop\Tor Browser\Browser\TorBrowser\Data\Tor\geoip
GeoIPv6File C:\Users\yyyy\Desktop\Tor Browser\Browser\TorBrowser\Data\Tor\geoip6
HiddenServiceStatistics 0
HashedControlPassword 16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2
CookieAuthentication 1 #either with nor without this line, still fail
torrc-defaults 的内容
# torrc-defaults for Tor Browser
#
# DO NOT EDIT THIS FILE
#
# This file is distributed with Tor Browser and SHOULD NOT be modified (it
# may be overwritten during the next Tor Browser update). To customize your
# Tor configuration, shut down Tor Browser and edit the torrc file.
#
# If non-zero, try to write to disk less frequently than we would otherwise.
AvoidDiskWrites 1
# Where to send logging messages. Format is minSeverity[-maxSeverity]
# (stderr|stdout|syslog|file FILENAME).
Log notice stdout
CookieAuthentication 1
## fteproxy configuration
ClientTransportPlugin fte exec TorBrowser\Tor\PluggableTransports\fteproxy --managed
## obfs4proxy configuration
ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit exec TorBrowser\Tor\PluggableTransports\obfs4proxy
## meek configuration
ClientTransportPlugin meek exec TorBrowser\Tor\PluggableTransports\terminateprocess-buffer TorBrowser\Tor\PluggableTransports\meek-client-torbrowser -- TorBrowser\Tor\PluggableTransports\meek-client
用于更新ip的脚本
import repr as reprlib
import socket
import sys
try:
tor_c = socket.create_connection(("127.0.0.1", 9151))
tor_c.send('AUTHENTICATE "{}"\r\n'.format("16:D14CC89AD7848B8C60093105E8284A2D3AB2CF3C20D95FECA0848CFAD2"))
response = tor_c.recv(1024)
if response != '250 OK\r\n250 OK\r\n':
sys.stderr.write('Unexpected response from Tor control port: {}\n'.format(response))
except Exception, e:
sys.stderr.write('Error connecting to Tor control port: {}\n'.format(repr(e)))
但是服务器总是回复我
来自 Tor 控制端口的意外响应:515 身份验证失败:密码与 HashedControlPassword 不匹配或 身份验证 cookie。
我知道有 python 库可用于此类任务,但我只想通过 python 的标准套接字库更新 ip,我该如何正确执行此操作?谢谢
HashedControlPassword
是身份验证密码的哈希值。要进行身份验证,它将是 AUTHENTICATE "your actual password"
。
控制协议表面上比较简单
例如:
telnet localhost 9051
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
authenticate "password"
250 OK
signal NEWNYM
250 OK <-- identity changed for new circuits
这对我有用:
import repr as reprlib
import socket
import sys
try:
tor_c = socket.create_connection(("127.0.0.1", 9051))
tor_c.send("AUTHENTICATE \"{}\"\n".format("password"))
response = tor_c.recv(1024)
if response != '250 OK\r\n':
sys.stderr.write('Unexpected response from Tor control port: {}\n'.format(response))
tor_c.send("SIGNAL NEWNYM\n");
response = tor_c.recv(1024)
print(response)
except Exception, e:
sys.stderr.write('Error connecting to Tor control port: {}\n'.format(repr(e)))
您也可以按照以下示例避免 Python:Request new identity from Windows command line。