模拟登录WEB

模拟登录

  • 流程:
    • 对点击登录按钮对应的请求进行发送(post请求)
    • 处理参数:
      • 用户名
      • 密码
      • 验证码
      • 其他防伪参数
某网登录

https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx

import ddddocr
import requests
from lxml import etree

ocr = ddddocr.DdddOcr()

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.3538.77 Safari/537.36'
}

url = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'

# 1、先将验证码下载到本地
response = requests.get(url=url, headers=headers).text
tree = etree.HTML(response)
# 解析验证码图片地址
img_src = 'https://so.gushiwen.cn/' + tree.xpath('//*[@id="imgCode"]/@src')[0]
img_data = requests.get(url=img_src, headers=headers).content

# 图片识别
res = ocr.classification(img_data)

# 2、拼接好数据后发请求
data = {
    '__VIEWSTATE': '/g8t04nmWMIHtrpE8eGPh2KXJR6afoVeEJC4uDyTld71PWYjENBp/vVflShsohSk7YD+NGiebe2wY1oYNJIwzPvTzNLSM3zmXvQTffx0rIxmhYoHXbKy0YeYbA0=',
    '__VIEWSTATEGENERATOR': 'C93BE1AE',
    'from': 'http://so.gushiwen.cn/user/collect.aspx',
    'email': 'xuwang@protonmail.com',
    'pwd': '123456',
    'code': res,  # 动态变化
    'denglu': '登录'
}
page_text = requests.post(url=url, headers=headers, data=data).text

with open('./古诗网.html', 'w', encoding='utf-8') as fp:
    fp.write(page_text)

模拟登陆失败

原因:

  • Cookie
  • 验证码问题

登陆成功:session请求(解决)

import ddddocr
import requests
from lxml import etree

ocr = ddddocr.DdddOcr()

headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.3538.77 Safari/537.36'
}

url = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'

# 1、先将验证码下载到本地
response = requests.get(url=url, headers=headers).text
tree = etree.HTML(response)
# 解析验证码图片地址
img_src = 'https://so.gushiwen.cn/' + tree.xpath('//*[@id="imgCode"]/@src')[0]
img_data = requests.get(url=img_src, headers=headers).content

# 图片识别
res = ocr.classification(img_data)

# 2、拼接好数据后发请求
data = {
    '__VIEWSTATE': '/g8t04nmWMIHtrpE8eGPh2KXJR6afoVeEJC4uDyTld71PWYjENBp/vVflShsohSk7YD+NGiebe2wY1oYNJIwzPvTzNLSM3zmXvQTffx0rIxmhYoHXbKy0YeYbA0=',
    '__VIEWSTATEGENERATOR': 'C93BE1AE',
    'from': 'http://so.gushiwen.cn/user/collect.aspx',
    'email': 'xuwang@protonmail.com',
    'pwd': '123456',
    'code': res,  # 动态变化
    'denglu': '登录'
}
page_text = requests.post(url=url, headers=headers, data=data).text

with open('./古诗网.html', 'w', encoding='utf-8') as fp:
    fp.write(page_text)

在请求参数中如果看到一组乱序的请求参数,最好去验证这组请求参数是否为动态变化

处理:

  • 方式一:常规来讲一般动态变化的请求参数会被隐藏在前台页面中,需要去前台源码中寻找

    在这里插入图片描述

    在这里插入图片描述

  • 方式二:如果前台页面没有的话,就可以基于浏览器抓包工具进行全局搜索

基于百度AI实现爬虫功能

在这里插入图片描述

  • 图像识别
  • 语音识别&合成
  • 自然语言处理
某视频爬取
  • 将每个视频详情的url进行解析
  • 对视频详情页的url进行请求发送
  • 在视频详情页的页面源码数据中进行全局搜索,发现没有找到vidoe标签
    • 视频标签是动态加载出来的
    • 动态加载的数据方式
      • ajax
      • js
    • 在页面源码中搜索.mp4,定位到了视频地址(存在一组js代码)
      • 通过正则将视频地址解析出来发起请求即可
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值