如何通过 Selenium 在 Chrome 浏览器中使用 Tor
How to use Tor with Chrome browser through Selenium
我正在尝试 运行 我在 Tor 上的 selenium 驱动程序。请注意,脚本已经 运行 在没有 Tor 的情况下没有错误。
这是我到目前为止所做的:
1) 我调用了Tor框架
import socks
import socket
from stem.util import term
import stem.process
SOCKS_PORT=7000
socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5,
addr = "127.0.0.1",
port = SOCKS_PORT)
socket.socket = socks.socksocket
# Perform DNS resolution through the socket
def getaddrinfo(*args): return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
socket.getaddrinfo = getaddrinfo
def print_bootstrap_lines(line):
if "Bootstrapped " in line:
print(term.format(line, term.Color.GREEN))
tor_process = stem.process.launch_tor_with_config(
tor_cmd = "C:/Users/my-username\Desktop/Tor Browser/Browser/TorBrowser/Tor//tor.exe" ,
config = { 'SocksPort': str(SOCKS_PORT),},
init_msg_handler = print_bootstrap_lines,
)
调用 Tor 框架后,我理解它就像一个容器,然后调用 Chrome 驱动程序:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
options = Options()
options.binary_location = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
driver = webdriver.Chrome(options=options, executable_path = r'C:\Users\my-username\chromedriver')
3) 此时我插入抓取脚本。
4) 关闭驱动程序并终止 Tor 进程:
driver.close()
tor_process.kill()
我得到的输出如下:
Apr 15 14:31:20.000 [notice] Bootstrapped 0%: Starting
Apr 15 14:31:23.000 [notice] Bootstrapped 10%: Finishing handshake with directory server
Apr 15 14:31:23.000 [notice] Bootstrapped 80%: Connecting to the Tor network
Apr 15 14:31:23.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
Apr 15 14:31:24.000 [notice] Bootstrapped 100%: Done
Traceback (most recent call last):
File "<ipython-input-2-2b2233fc0ae4>", line 1, in <module>
runfile('C:/Users/my-username-folder/FireStarter_All_1Step_2.py', wdir='C:/Users/my-username-folder')
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
execfile(filename, namespace)
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/my-username-folder/FireStarter_All_1Step_2.py", line 94, in <module>
driver = webdriver.Chrome(options=options, executable_path = r'C:\Users\my-username-folder\chromedriver')
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
self.service.start()
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\common\service.py", line 104, in start
raise WebDriverException("Can not connect to the Service %s" % self.path)
WebDriverException: Can not connect to the Service C:\Users\my-username-folder\chromedriver
我做错了什么?
更新:
我希望通过 Chrome 浏览器使用 Tor。
我首先要看的东西。
- ports - tor socks 端口是否以任何方式干扰 webdriver 端口?
- 处理订单(您可以设置 webdriver 然后启动 tor 服务)
- 您可以设置一个通过 tor 连接到 selenium 节点的 selenium hub
这可能会使 webdriver、tor 和您的测试之间的连接更容易分离。
要通过 将 Tor 与 Chrome 浏览器一起使用,您可以使用以下解决方案:
代码块:
from selenium import webdriver
import os
# To use Tor's SOCKS proxy server with chrome, include the socks protocol in the scheme with the --proxy-server option
# PROXY = "socks5://127.0.0.1:9150" # IP:PORT or HOST:PORT
torexe = os.popen(r'C:\Users\Debanjan.B\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe')
PROXY = "socks5://localhost:9050" # IP:PORT or HOST:PORT
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=%s' % PROXY)
driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
driver.get("http://check.torproject.org")
浏览器快照:
You can find a relevant discussion in
我正在尝试 运行 我在 Tor 上的 selenium 驱动程序。请注意,脚本已经 运行 在没有 Tor 的情况下没有错误。
这是我到目前为止所做的:
1) 我调用了Tor框架
import socks
import socket
from stem.util import term
import stem.process
SOCKS_PORT=7000
socks.setdefaultproxy(proxy_type=socks.PROXY_TYPE_SOCKS5,
addr = "127.0.0.1",
port = SOCKS_PORT)
socket.socket = socks.socksocket
# Perform DNS resolution through the socket
def getaddrinfo(*args): return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', (args[0], args[1]))]
socket.getaddrinfo = getaddrinfo
def print_bootstrap_lines(line):
if "Bootstrapped " in line:
print(term.format(line, term.Color.GREEN))
tor_process = stem.process.launch_tor_with_config(
tor_cmd = "C:/Users/my-username\Desktop/Tor Browser/Browser/TorBrowser/Tor//tor.exe" ,
config = { 'SocksPort': str(SOCKS_PORT),},
init_msg_handler = print_bootstrap_lines,
)
调用 Tor 框架后,我理解它就像一个容器,然后调用 Chrome 驱动程序:
from selenium import webdriver from selenium.webdriver.common.keys import Keys from selenium.webdriver.chrome.options import Options options = Options() options.binary_location = r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe' driver = webdriver.Chrome(options=options, executable_path = r'C:\Users\my-username\chromedriver')
3) 此时我插入抓取脚本。
4) 关闭驱动程序并终止 Tor 进程:
driver.close()
tor_process.kill()
我得到的输出如下:
Apr 15 14:31:20.000 [notice] Bootstrapped 0%: Starting
Apr 15 14:31:23.000 [notice] Bootstrapped 10%: Finishing handshake with directory server
Apr 15 14:31:23.000 [notice] Bootstrapped 80%: Connecting to the Tor network
Apr 15 14:31:23.000 [notice] Bootstrapped 90%: Establishing a Tor circuit
Apr 15 14:31:24.000 [notice] Bootstrapped 100%: Done
Traceback (most recent call last):
File "<ipython-input-2-2b2233fc0ae4>", line 1, in <module>
runfile('C:/Users/my-username-folder/FireStarter_All_1Step_2.py', wdir='C:/Users/my-username-folder')
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
execfile(filename, namespace)
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/my-username-folder/FireStarter_All_1Step_2.py", line 94, in <module>
driver = webdriver.Chrome(options=options, executable_path = r'C:\Users\my-username-folder\chromedriver')
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 73, in __init__
self.service.start()
File "C:\Users\my-username\AppData\Local\Continuum\anaconda3\lib\site-packages\selenium\webdriver\common\service.py", line 104, in start
raise WebDriverException("Can not connect to the Service %s" % self.path)
WebDriverException: Can not connect to the Service C:\Users\my-username-folder\chromedriver
我做错了什么?
更新: 我希望通过 Chrome 浏览器使用 Tor。
我首先要看的东西。
- ports - tor socks 端口是否以任何方式干扰 webdriver 端口?
- 处理订单(您可以设置 webdriver 然后启动 tor 服务)
- 您可以设置一个通过 tor 连接到 selenium 节点的 selenium hub 这可能会使 webdriver、tor 和您的测试之间的连接更容易分离。
要通过
代码块:
from selenium import webdriver import os # To use Tor's SOCKS proxy server with chrome, include the socks protocol in the scheme with the --proxy-server option # PROXY = "socks5://127.0.0.1:9150" # IP:PORT or HOST:PORT torexe = os.popen(r'C:\Users\Debanjan.B\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe') PROXY = "socks5://localhost:9050" # IP:PORT or HOST:PORT options = webdriver.ChromeOptions() options.add_argument('--proxy-server=%s' % PROXY) driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe') driver.get("http://check.torproject.org")
浏览器快照:
You can find a relevant discussion in