代码之家  ›  专栏  ›  技术社区  ›  SIM

无法使用请求连接到Tor,而我使用selenium进行了相同的操作

  •  2
  • SIM  · 技术社区  · 6 年前

    我用python编写了两个脚本:一个使用 selenium 另一个使用 requests http://check.torproject.org 使用 托尔 得到这段文字 祝贺 你。此浏览器配置为使用Tor 为了确保我做的事情是正确的。

    当我使用下面的脚本时,我可以流畅地获得文本:

    from selenium import webdriver
    import os
    
    torexe = os.popen(r"C:\Users\WCS\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe")
    
    options = webdriver.ChromeOptions()
    options.add_argument('--proxy-server=socks5://localhost:9050')
    driver = webdriver.Chrome(chrome_options=options)
    
    driver.get("http://check.torproject.org")
    item = driver.find_element_by_css_selector("h1.not").text
    print(item)
    
    driver.quit()
    

    但是,当我尝试使用 请求 ,我得到一个错误 AttributeError: 'NoneType' object has no attribute 'text' :

    import requests
    from bs4 import BeautifulSoup
    import os
    
    torexe = os.popen(r"C:\Users\WCS\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe")
    
    with requests.Session() as s:
        s.proxies['http'] = 'socks5://localhost:9050'
        res = s.get("http://check.torproject.org")
        soup = BeautifulSoup(res.text,"lxml")
        item = soup.select_one("h1.not").text
        print(item)
    

    我怎样才能得到相同的文字使用 请求 从那个网站?

    当我用这个的时候 print(soup.title.text) ,我可以得到这个文本 Sorry. You are not using Tor. 请求 不是通过 Tor .

    1 回复  |  直到 6 年前
        1
  •  2
  •   drew010    6 年前

    check.torproject.org强制HTTPS,因此当请求遵循重定向到 https://check.torproject.org 您不再使用SOCKS代理,因为它只是为 http 协议。

    socks5h .

    s.proxies['http']  = 'socks5h://localhost:9050'
    s.proxies['https'] = 'socks5h://localhost:9050'
    

    这将导致您的测试正常工作。