如何在selenium中为每个url发送随机代理,而无需一次又一次打开Chrome窗口

问题描述 投票:0回答:1

这段代码为每个 url 迭代打开新的 Chrome 窗口,如果我在循环之外使用 WebDriver 实例,那么这不会为每个 url 迭代发送随机代理

  1. 我想为这些行中的每个网址发送随机代理
chrome_options.add_argument(f"--proxy-server={proxy}")
print(f"Using proxy: {proxy} for URL: {url}")
  1. 我不想一次又一次打开 webdriver.Chrome 窗口

proxyscrape_premium_http_proxies.txt

38.162.7.130:3128
38.162.15.189:3128
38.162.5.127:3128
38.162.18.151:3128

网址.txt

https://myexternalip.com/raw
https://2ip.io
http://httpbin.org/ip
https://ipv4.webshare.io

应用程序.py

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
import random

def rand_proxy():
    with open('proxyscrape_premium_http_proxies.txt', 'r') as file:
        product_names = file.read().splitlines()
        return random.choice(product_names)


with open('urls.txt', 'r') as file:
    urls = file.readlines()

for url in urls:
    proxy = rand_proxy()
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument(f"--proxy-server={proxy}")
    driver = webdriver.Chrome(options=chrome_options)

    url = url.strip()
    driver.get(url)

    print(f"Using proxy: {proxy} for URL: {url}")
time.sleep(10)
python selenium-webdriver proxy
1个回答
0
投票

要在浏览器会话中更改代理设置,您可以使用 https://github.com/seleniumbase/SeleniumBase 和有线模式 (

wire=True
)。

(请注意,SeleniumBase

driver
包括标准
driver
方法以及新方法。)

from seleniumbase import Driver

driver = Driver(wire=True)
try:
    driver.get("https://ipinfo.io/")
    driver.sleep(6)
    driver.set_wire_proxy("35.185.196.38:3128")
    driver.get("https://ipinfo.io/")
    driver.sleep(6)
finally:
    driver.quit()

set_wire_proxy
可接受的格式:

driver.set_wire_proxy("SERVER:PORT")
driver.set_wire_proxy("socks5://SERVER:PORT")
driver.set_wire_proxy("USERNAME:PASSWORD@SERVER:PORT")

要在列表中选择随机项目,请使用

random.choice(LIST)
:

import random

my_list = ["123", "456", "789"]
print(random.choice(my_list))
© www.soinside.com 2019 - 2024. All rights reserved.