gpt4 book ai didi

python - 生成有效 IP 地址列表并在 Python Selenium 循环中随机使用

转载 作者:太空宇宙 更新时间:2023-11-03 21:32:23 25 4
gpt4 key购买 nike

免责声明:这是我第一次涉足网络抓取

我有一个大约 400 个搜索结果 URL 的列表,我正在尝试使用 Selenium 循环遍历这些搜索结果 URL 来收集信息。在某个时刻,我被重定向并显示以下文本:

“由于使用率高于正常水平,您对 VINELink.com 的访问已被拒绝...您正尝试从以下 IP 地址访问此网站。请确保您的防火墙设置未限制访问。 [我的 IP 地址]"

有没有办法生成有效的随机 IP 地址列表,在循环中随机选择一个并将其提供给 Selenium WebDriver 以避免被阻止?

我知道这个问题存在道德方面的考虑(实际上,我已经联系该网站解释我的良性用例并询问他们是否可以解锁我的真实 IP 地址);我主要感兴趣的是这是否是人们可以做的事情。

URL 缩写列表:

['http://www.vinelink.com/vinelink/servlet/SubjectSearch?siteID=34003&agency=33&offenderID=2662',
'http://www.vinelink.com/vinelink/servlet/SubjectSearch?siteID=34003&agency=33&offenderID=A21069',
'http://www.vinelink.com/vinelink/servlet/SubjectSearch?siteID=34003&agency=33&offenderID=B59293',
...]

循环的缩写代码(缺少有效 IP 地址的实际列表):

info = {}

for url in detail_urls:

proxy = ### SELECT RANDOM IP ADDRESS FROM A LIST OF VALID IP ADDRESSES ###

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--proxy-server='+str(proxy))
driver = webdriver.Chrome(executable_path='/PATH/chromedriver', options=chrome_options)
driver.get(url)
driver.implicitly_wait(3)

if drive.find_element_by_xpath('//*[@id="ngVewDiv"]/div/div/div/div[3]/div[3]/div[2]/div/search-result/div/div[4]/div[1]/more-info/div[1]/button'):
button = driver.find_element_by_xpath('//*[@id="ngVewDiv"]/div/div/div/div[3]/div[3]/div[2]/div/search-result/div/div[4]/div[1]/more-info/div[1]/button').click()
name = driver.find_element_by_xpath('//*[@id="ngVewDiv"]/div/div/div/div[3]/div[3]/div[2]/div/search-result/div/div[1]/div/div[1]/span[1]/span[1]/div/div/div[2]/span')
name = name.text
offenderid = driver.find_element_by_xpath('//*[@id="ngVewDiv"]/div/div/div/div[3]/div[3]/div[2]/div/search-result/div/div[4]/div[1]/more-info/div[2]/div/div/div[2]/div[1]/div/div[2]/span')
offenderid = offenderid.text
info[name] = [offenderid]
driver.close()
else:
driver.close()

最佳答案

Is there a way to generate a list of valid random IP addresses, select one randomly within a loop and feed it to the Selenium WebDriver to avoid being blocked?

要从序列中获取随机项,请使用 random 模块中的 random.choice(seq)

参见:https://docs.python.org/3/library/random.html#random.choice

示例:

import random

proxies = ['10.0.1.1', '10.0.1.2', '10.0.1.3']
proxy = random.choice(proxies)

注意:您的问题有点没有意义,因为您说过您想要生成有效 IP 地址列表。您不能只是生成随机 IP 并期望它们能够工作...您必须实际向脚本提供有效的 IP。您将需要提供此功能的服务器基础设施(即绑定(bind)到列表中每个地址的工作代理服务器池),因为请求将通过这些服务器进行路由。如果您只是想欺骗您的 IP,并且没有可供代理的服务器池,那么答案是“不,那行不通。”

关于python - 生成有效 IP 地址列表并在 Python Selenium 循环中随机使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53453290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com