web-dev-qa-db-fra.com

Comment utiliser Tor avec Chrome navigateur par sélénium

J'essaie de courir mon pilote de sélénium sur Tor. Notez que le script fonctionne déjà sans erreur sans tor.

C'est ce que j'ai fait jusqu'à présent:

1) J'ai appelé le cadre 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,
)
  1. Après avoir appelé la structure Tor, qui ressemble à un conteneur à ma compréhension, j'ai ensuite appelé le pilote 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) À ce stade, j'insère le script de raclage.

4) Fermer le pilote et tuer le processus Tor:

driver.close()   
tor_process.kill()

La sortie que je reçois est la suivante:

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

Qu'est-ce que je fais mal?

MISE À JOUR: Je cherche à utiliser Tor avec le navigateur Chrome.

8
user1783739

Pour utiliser Tor avec chrome Navigateur à travers sélénium Vous pouvez utiliser la solution suivante:

  • Bloc de code:

    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")
    
  • Snapshot de navigateur:

Tor_Chrome


Vous pouvez trouver une discussion pertinente dans Comment se connecter au navigateur Tor à l'aide de Python

1
DebanjanB

Choses que je regarderais d'abord.

  1. ports - Le port Tor Socks est-il interférant avec les ports webDriver de quelque manière que ce soit?
  2. ordre de processus (pouvez-vous configurer le webDriver, puis commencer le service TOR)
  3. vous pouvez configurer un concentrateur de sélénium qui se connecte aux nœuds de sélénium via Tor Ceci pourrait effectuer la connexion entre le webDriver, TOR et votre test plus facile à séparer.
0
wordtronix