selenium 模拟登录 突破图片验证码(豆瓣网)

这篇博客介绍了如何利用selenium模拟登录豆瓣网站,并通过阿里云打码平台解决图片验证码,成功登录后获取Cookie信息。整个过程包括发送登录请求、输入账号密码、处理验证码、点击登录以及保存Cookie。
摘要由CSDN通过智能技术生成
from selenium import webdriver
import time
import requests
from lxml import etree
import base64

# 请求浏览器
driver=webdriver.Chrome()
# 定义登录界面 url
url ='https://accounts.douban.com/login?alias=&redir=https%3A%2F%2Fwww.douban.com%2F&source=index_nav&error=1001'
#  发送请求
driver.get(url)
time.sleep(1)
# 定义账号框 账号
driver.find_element_by_id('email').send_keys('18510556963')
time.sleep(1)
# 定义密码框 密码
driver.find_element_by_id('password').send_keys('yaoqinglin2011')
time.sleep(1)


# 获取验证码相关信息
html_str = driver.page_source
html_ele = etree.HTML(html_str)
# 得到验证码的 url
image_url = html_ele.xpath('//img[@id="captcha_image"]/@src')[0]
# 获取这个图片的内容
response = requests.get(image_url)
# 获取base64的str   (也就是将验证码图片进行解析)
b64_str=base64.b64encode(response.content)
v_type='cn'   #阿里云内已经写好
# post提交打码平台的数据
form = {
    'v_pic': b64_str,
    'v_type': v_type,
}
# 构建authtication的headers
headers = {
    'Authorization': 'APPCODE cf8078376ed643019db7332bb0b1d510',
}
# 从打码平台获取验证码信息
dmpt_url = 'http://yzmplus.market.alicloudapi.com/fzyzm'
response = requests.post(dmpt_url, form, headers=headers)
print(response.text)
# captcha_value 就是我们的验证码信息    阿里云内已经规定好
captcha_value = response.json()['v_code']

print(image_url)
print(captcha_value)

#人工输入验证码
# captch_value=input('请输入验证码:')


# 让系统自行验证
driver.find_element_by_id('captcha_field').send_keys(captcha_value)
time.sleep(1)
# 定义登录框   点击登录
# ***此时已经登录成功***  如果想保持登录 则需要获取Cookie
driver.find_element_by_class_name('btn-submit').click()
time.sleep(1)




# 获取Cookie   driver.get_cookie()方法
cookies = driver.get_cookies()
cookie_list=[]
# 对于每一个cookie_dict, 就是将name 和 value取出, 拼接成name=value;
for cookie_dict in cookies:
    cookie_str=cookie_dict['name']+':'+cookie_dict['value']
    cookie_list.append(cookie_str)
# 拼接所有的cookie到header_cookie中     '; '.join()代表将所有后面加一个分号
headers_cookie='; '.join(cookie_list)
headers={
    "Cookie": "headers_cookie",
    "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36",
}

# 最后发起请求 个人信息页面
update_url='https://www.douban.com/accounts/'
response=requests.get(update_url,headers=headers)

with open('cc.html', 'wb') as f:
    f.write(response.content)

# with open('douban.html','wb')as f:
#     f.write(driver.page_source.encode('utf-8'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值