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'))
selenium 模拟登录 突破图片验证码(豆瓣网)
最新推荐文章于 2024-07-01 23:27:54 发布
这篇博客介绍了如何利用selenium模拟登录豆瓣网站,并通过阿里云打码平台解决图片验证码,成功登录后获取Cookie信息。整个过程包括发送登录请求、输入账号密码、处理验证码、点击登录以及保存Cookie。
摘要由CSDN通过智能技术生成