创建了一个程序,该程序具有以下特点:
- 使用格式为代理:端口号:用户名:密码的代理。
- 从列表中先后选择一个代理。
- 打开http://example.com。
- 填写详情,数据来自data.txt(CSV)。
- 导出cookie、用户名、密码、电子邮件地址–>cookie.txt。
- 删除cookies。
- 登录关联的电子邮件帐户,并通过访问该电子邮件地址发送的链接来确认该帐户。
- 重新执行步骤1。
已经阅读了StackOverflow中的一些类似问题,并计划使用Selenium实现此程序,但是在阅读此处评论时:
- 如何使用Selenium RC保存并还原所有cookie?
- get_cookie方法不提供每个cookie的路径、域和有效期,因此无法使用create_cookie完全还原这些参数。
想要知道解决此问题最简单的办法,计划运行单线程应用程序。
解决方案
可以使用Selenium和requests库解决此问题。
首先,需要安装两个库:
pip install selenium
pip install requests
然后,可以使用以下代码实现此程序:
from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType
from requests import get
# 设置代理列表
proxies = ['proxy1:port1:username1:password1', 'proxy2:port2:username2:password2', 'proxy3:port3:username3:password3']
# 设置Selenium驱动程序
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=%s' % proxies[0])
driver = webdriver.Chrome(options=options)
# 打开http://example.com
driver.get("http://example.com")
# 填写细节,数据来自data.txt(CSV)
with open('data.txt', 'r') as f:
lines = f.readlines()
for line in lines:
parts = line.split(',')
username = parts[0]
password = parts[1]
email = parts[2]
# 填写用户名和密码
username_field = driver.find_element_by_name('username')
password_field = driver.find_element_by_name('password')
username_field.send_keys(username)
password_field.send_keys(password)
# 提交表单
submit_button = driver.find_element_by_name('submit')
submit_button.click()
# 导出cookie、用户名、密码、电子邮件地址-->cookie.txt
cookies = driver.get_cookies()
with open('cookie.txt', 'w') as f:
f.write('Cookie: %s\n' % cookies)
f.write('Username: %s\n' % username)
f.write('Password: %s\n' % password)
f.write('Email Address: %s\n' % email)
# 删除cookies
driver.delete_all_cookies()
# 登录关联的电子邮件帐户,并通过访问该电子邮件地址发送的链接来确认该帐户
email_link = get('https://example.com/email_link').text
driver.get(email_link)
# 重新执行步骤1
options.add_argument('--proxy-server=%s' % proxies[1])
driver = webdriver.Chrome(options=options)
driver.get("http://example.com")
此代码将使用代理列表中的第一个代理打开http://example.com,并填写来自data.txt的数据。然后,它将导出cookie、用户名、密码和电子邮件地址到cookie.txt中,删除cookies,并登录关联的电子邮件帐户以确认该帐户。然后,它将重新执行步骤1,并使用列表中的下一个代理。
此程序可以作为单线程应用程序运行,并且使用Selenium和requests库轻松完成。