繁体   English   中英

“SocketError:[Errno 61] 连接被拒绝” Selenium 与 TOR

[英]"SocketError: [Errno 61] Connection refused" Selenium with TOR

因此,我使用 TOR 作为更改 webdriver 的代理和 IP 地址的一种方式。 这是代码。 安装了所有依赖项(包括 Geckodriver 和最新版本的 Firefox)。

from stem import Signal
from stem.control import Controller
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from bs4 import BeautifulSoup

def switchIP():
    with Controller.from_port(port = 9051) as controller:
        controller.authenticate()
        controller.signal(Signal.NEWNYM)


def my_proxy(PROXY_HOST,PROXY_PORT):
    fp = webdriver.FirefoxProfile()
    fp.set_preference("network.proxy.type", 1)
    fp.set_preference("network.proxy.socks",PROXY_HOST)
    fp.set_preference("network.proxy.socks_port",int(PROXY_PORT))
    fp.update_preferences()
    options = Options()
    options.headless = True
    return webdriver.Firefox(options=options, firefox_profile=fp)

for x in range(10):
    proxy = my_proxy("127.0.0.1", 9050)
    proxy.get("https://whatsmyip.com/")
    html = proxy.page_source
    soup = BeautifulSoup(html, 'lxml')
    print(soup.find("span", {"id": "ipv4"}))
    print(soup.find("span", {"id": "ipv6"}))
    switchIP()

感谢您的帮助,阿拉夫。

这个错误信息...

SocketError: [Errno 61] Connection refused

...暗示连接被服务器拒绝。


由于以下几个原因,可能会出现此错误:

  1. 防火墙阻止请求/响应。
  2. 不正确的代理配置。
  3. 无效的代理类型。
  4. 无效的代理主机。
  5. 无效的代理端口。 等等

这个用例

但是,我没有看到您的代码块有任何问题,但是在使用来更改代理和 IP 地址时,您需要使用popen()命令启动torexe应用程序,如下所示( 操作系统的示例):

import os

torexe = os.popen(r'C:\Users\user_name\path\to\Tor Browser\Browser\TorBrowser\Tor\tor.exe')

参考

您可以在以下位置找到相关讨论:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM