破豆瓣网验证码反爬机制

from selenium import webdriver
import time
import requests
from lxml import etree
import base64
#获取登陆页面的页面信息和Url
driver = webdriver.Chrome()
url = "https://accounts.douban.com/login?alias=doraemon_meow_meow%40163.com&redir=https%3A%2F%2Fwww.douban.com%2Fsettings%2F&source=index_nav&error=1016"
driver.get(url)
time.sleep(1)
driver.find_element_by_id('email').send_keys('********')#这里的******代表豆瓣账号
time.sleep(1)
driver.find_element_by_id('password').send_keys('******')#这里的****代表豆瓣密码
time.sleep(1)
html_str = driver.page_source
html_ele = etree.HTML(html_str)
image_url = html_ele.xpath('//img[@id="captcha_image"]/@src')[0]
response = requests.get(image_url)
#把获取到的验证码信息转为base64str类型
b64_str = base64.b64encode(response.content)

#开始调用阿里云验证码
v_type = 'cn'
#把需要的验证码信息传入阿里云验证码识别
form = {
    'v_pic':b64_str,
    'v_type':v_type,
}
headers = {
    "Authorization": "APPCODE **********"#这里的*代表阿里云的appcode值,如有需要自行去阿里云购买
}
#
dmpt_url = "http://yzmplus.market.alicloudapi.com/fzyzm"
response = requests.post(dmpt_url,form,headers=headers)
captcha_value = response.json()['v_code']
driver.find_element_by_id('captcha_field').send_keys(captcha_value)
time.sleep(1)
driver.find_element_by_class_name('btn-submit').click()
time.sleep(1)
#获取所有cookie的信息
cookies = driver.get_cookies()
cookie_list = []
#循环拼接cookie信息
for cookie_dict in cookies:
    cookie_str = cookie_dict['name'] + '=' +cookie_dict['value']
    cookie_list.append(cookie_str)

header_cookie = ';'.join(cookie_list)
headers = {
    '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',
    'cookie': 'headers_cookie'
}
#登陆进入账号管理页面
another_url = "https://www.douban.com/accounts/"
response = requests.get(another_url,headers=headers)
#保存
with open('douban.html','wb') as f:
    f.write(response.content)







  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值