0

因此,我使用 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()

感谢您的帮助,阿拉夫。

4

1 回答 1

0

此错误消息...

SocketError: [Errno 61] Connection refused

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


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

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

这个用例

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

import os

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

参考

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

于 2019-12-12T11:55:45.847 回答