在Python上使用Selenium来操作Tor。不是因为不明原因而工作

时间:2016-12-16 02:46:27

标签: python selenium tor

来自这个网站 http://www.thedurkweb.com/automated-anonymous-interactions-with-websites-using-python-and-tor/

我做了以下代码

enter code here

import stem.process
from stem import Signal
from stem.control import Controller
from splinter import Browser

proxyIP = "127.0.0.1"
proxyPort = 9150

proxy_settings = {"network.proxy.type": 1,
              "network.proxy.ssl": proxyIP,
              "network.proxy.ssl_port": proxyPort,
              "network.proxy.socks": proxyIP,
              "network.proxy.socks_port": proxyPort,
              "network.proxy.socks_remote_dns": True,
              "network.proxy.ftp": proxyIP,
              "network.proxy.ftp_port": proxyPort
              }
browser = Browser('firefox', profile_preferences=proxy_settings)
browser.visit("http://www.icanhazip.com")

没有工作。只是得到这些错误

追踪(最近一次通话):   文件" C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ selenium \ webdriver \ common \ service.py",第74行,开始     stdout = self.log_file,stderr = self.log_file)   文件" C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ subprocess.py",第947行, init     restore_signals,start_new_session)   文件" C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ subprocess.py",第1224行,在_execute_child中     STARTUPINFO) FileNotFoundError:[WinError 2]系统找不到指定的文件

在处理上述异常期间,发生了另一个异常:

追踪(最近一次通话):   文件" C:/Users/User/PycharmProjects/LittleBot/Main.py" ;,第15行,在     browser =浏览器(' firefox',profile_preferences = proxy_settings)   文件" C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ splinter \ browser.py",第63行,在浏览器中     返回驱动程序(* args,** kwargs)   文件" C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ splinter \ driver \ webdriver \ firefox.py",第48行,初始化     超时=超时)   文件" C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ selenium \ webdriver \ firefox \ webdriver.py",第140行,初始化     self.service.start()   文件" C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ selenium \ webdriver \ common \ service.py",第81行,开始     os.path.basename(self.path),self.start_error_message) selenium.common.exceptions.WebDriverException:消息:' geckodriver'可执行文件需要在PATH中。

在:>中忽略了异常 Traceback(最近一次调用最后一次):   文件" C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ selenium \ webdriver \ common \ service.py",第173行,德尔     self.stop的()   文件" C:\ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ selenium \ webdriver \ common \ service.py",第145行,停止     如果self.process是None: AttributeError:'服务'对象没有属性' process'

使用退出代码1完成处理

我安装了网页上请求的所有库,甚至做了 - 升级selenium的东西,希望摆脱错误。 有什么方法可以解决这个问题吗? 到目前为止,我所知道的是程序运行得很好,直到浏览器=浏览器(' firefox',profile_preferences = proxy_settings)'发生。 Tor浏览器也是开放的,所以没有问题。 一直在寻找一个半小时的解决方案,我已经尝试了与此主题相关的所有内容。

3 个答案:

答案 0 :(得分:0)

修正了它 pip install selenium == 2.53.6 Selenium想要介绍一些壁虎的东西,这是搞乱一切。 希望这对其他人有用。

答案 1 :(得分:-1)

要在Firefox中使用selenium 3.x,您必须安装geckodriver。 发布的官方网站位于:https://github.com/mozilla/geckodriver/releases

来自selenium python docs:

  

" Selenium需要驱动程序与所选浏览器进行交互。   例如,Firefox需要geckodriver,这需要   安装之前可以运行以下示例。确保它在你的   路径,e。例如,将其放在/ usr / bin或/ usr / local / bin。

     

如果不遵守此步骤,则会出错   selenium.common.exceptions.WebDriverException:消息:'geckodriver'   可执行文件需要在PATH中。"

答案 2 :(得分:-2)

如果您使用的是最新的selenium和最新的Firefox 1.下载最新的geckodriver 2.打开浏览器,隐藏它。 3.运行代码:

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.firefoc.firefox_profile import FirefoxProfile

binary = FirefoxBinary('C:/Program Files(x86)/Mozilla Firefox/firefox.exe')
profile = webdriver.FirefoxProfile()

profile.set_preference('network.proxy.type', 1)
profile.set_preference('network.proxy.socks', '127.0.0.1')
profile.set_preference('network.proxy.socks_port', 9150)

driver = webdriver.Firefox(firefox_binary = binary, firefox_profile = profile, executable_path='path/to/geckodriver.exe')
driver.get('https://check.torproject.org')