selenium控制tor浏览器





(技术纯属自己瞎研究,其他啥事与我无关!)*

tor简介
tor是个浏览器,内核是火狐的但是和普通又不太一样,最重要的功能是tor可以实现ip的多重转换和动态(有啥用我就不说明了)。还有个隐藏又出名的功能——-访问传说中的an网

访问an网的sock5协议需要转化为http 怎么转换的我就不说了(我大哥给我的)然后我们就直接说今天的重头戏 selenium控制tor浏览器。

由于tor的浏览器的内核是火狐浏览器故启动方法和火狐一样,但是由于tor浏览器有自己的firefox.exe
故我们只需要将启动文件设置为tor的firefox.exe的启动路径。

以为这样就完了?no!单纯这样启动的firefox.exe会显示tor启动失败。在我反复的测试下发现tor的firefox.exe的配置文件的参数和正常火狐的不一样。故我们需要将配置文件的路径传给我们的selenium。

    topath = "C:\\Users\\zbx\\Desktop\\Tor Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default"
    #这是配置文件的路径
    path = 'C:\\Users\\zbx\\Desktop\\Tor Browser\\firefox.exe'
    #这是启动驱动的路径

但我以为这样就完的时候我发现。这样确实能启动tor但是无法访问任何网页。一直会显示代理问题。我又测试过代理是没问题的这就是tor最牛逼的地方—–tor环路

但是我研究了很久也没发现他的环是怎么生成的(笨啊)然后就另辟蹊径,直接调用它。让他自己生成环路。我们在让浏览器处于这个环路里就ok了

法一:

	topath = "C:\\Users\\zbx\\Desktop\\Tor Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default"
    path = 'C:\\Users\\zbx\\Desktop\\Tor Browser\\firefox.exe'
    profile = webdriver.firefox.firefox_profile.FirefoxProfile(topath)
    profile1=webdriver.FirefoxProfile()
    profile.set_preference("webdriver.firefox.bin", path)
    profile=webdriver.FirefoxOptions()
    profile.set_preference("binary", path)
    profile.set_preference("profile", topath)
    profile.set_preference('network.proxy.type', 1)
    profile.set_preference('network.proxy.socks', 'ip(自己写代理)')
    profile.set_preference('network.proxy.socks_port', 9150)
    driver=webdriver.Firefox(options=profile)
    
    

这样我们就启动了tor但是我们怎么让他处于tor环路中喃:
我的办法是cmd启动tor浏览器他就会启动一个tor环路

os.system(
       C:\\Users\\zbx\\Desktop\\Tor Browser\\firefox.exe ' https://login.baidu.com')

这样我们就用selenium控制tor了

法二:
是参照很老版本java的代码改来的
run.py

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.common.exceptions import NoSuchElementException
from subprocess import Popen
from os import getcwd
from time import sleep
import time
def setup_tor(binary, delay=False):
    global driver
    Popen('initialize.bat', cwd=getcwd())
    if delay:
        sleep(delay)
    driver = webdriver.Firefox(firefox_binary=binary)
def check_tor():
   #l里面是你selenium的操作
if __name__ == '__main__':
    binary = FirefoxBinary('{}\\Browser\\firefox.exe'.format(open('path.txt', 'r').read().strip('\n')))
    setup_tor(binary)
    check_tor()

path.txt

C:\Users\zbx\Desktop\Tor Browser

initialize.bat

set /p binary=

好了今天就分析到这儿了。(纯技术讨论,其他和我无关)
我爱祖国
富强、 民主、 文明、 和谐、 自由、 平等、 公正、 法治、爱国、 敬业、 诚信、 友善。

发布了6 篇原创文章 ·
获赞 32 ·
访问量 3830