首页 > 其他 > 详细

requests高级之人人网进行模拟登陆

时间:2021-05-08 00:33:07      阅读:36      评论:0      收藏:0      [点我收藏+]

一、引出模拟登陆需求

  • 什么场景需要使用爬虫程序进行模拟登陆需求呢 ?

    • 经常爬取的内容是基于某些用户的用户信息,这些用户信息是需要进行登陆后才会跳转到用户信息当中的;
    • 我们需要使用requests模块进行模拟登陆,登录后才可以进行对用户信息爬取;
  • 所以接下来会对 人人网 进行模拟登陆,那么和此前的验证码识别有什么关联;

  • 人人网的登陆验证码为 当连续失败登陆超过 3次以后就会弹出验证码登陆;

技术分享图片

二、需求分析

  • 需求 :对人人网进行模拟登陆
  • 分析 :
    1、手动对人人网 进行点击登陆,打开抓包工具,查看发起的请求,获取请求的接口信息;

技术分享图片
技术分享图片
技术分享图片

2、Post请求对ajaxLogin接口请求参数分析

# 用户名
email: 15354210326
# 验证码
icode: mtk9n
origURL: http://www.renren.com/home
domain: renren.com
key_id: 1
captcha_type: web_login
# 密码
password: 6ddaf106350275c7aaee8b6d705db9cab365d2c71608f04b95d3a38401303ede
rkey: 9a2b62f121c905c1104fe9ecc17e936a
f: http%3A%2F%2Fwww.renren.com%2F976783671%2Fprofile

3、根据上述分析,如果我们想实现对人人网的模拟登陆,只需要对ajaxLogin接口发起请求,并携带正确登陆参数;
4、验证码 :每次请求都会动态变化,所以我们在模拟登陆前,需要对登陆页的验证码数据进行识别,识别的结果需要作为 对登陆接口 POST请求时一个参数;
技术分享图片

三、人人网模拟登陆编码

3.1、编码流程

1、验证码识别,获取验证码图片的文字数据 :对当前登陆页面进行请求,将验证码进行解析,对验证码地址发起请求,就可以获取验证码图片并保存到本地,然后使用超级鹰提供的图片识别功能进行识别解析;
2、对POST请求发起请求,处理请求参数;
3、对响应数据进行持久化存储;

3.2、

# _*_coding : UTF-8_*_
# 开发时间 : 2021/5/7 22:11

import requests
from lxml import etree

# 1、对验证码图片进行捕获和识别
headers = {
    ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36‘
}
url = "http://www.renren.com/SysHome.do"
page_text = requests.get(url=url, headers=headers).text
tree = etree.HTML(page_text)
code_image_src = tree.xpath(‘//*[@id="verifyPic_login"]/@src‘)[0]
code_imag_data = requests.get(url=code_image_src, headers=headers).content   # 二进制
with open(‘./code.jpg‘, ‘wb‘) as fp:
    fp.write(code_image_src)

# 使用超级鹰提供的示例代码对验证码图片进行识别








requests高级之人人网进行模拟登陆

原文:https://www.cnblogs.com/dai-zhe/p/14743009.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!