模拟登录古诗文网

简介: 一只小爬虫
"""
作者:acha
时间:2021-2-16
功能:模拟登录古诗文网
"""

import requests
from lxml import etree
from 爬虫.chaojiying_Python.chaojiying import Chaojiying_Client
# 请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"
}
# 创建好session对象
sess = requests.Session()
# 处理动态变化的请求参数
# 1.解析出本次登录页面对应的验证码图片地址
login_url = 'https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx'
page_text = sess.get(url=login_url, headers=headers).text
tree = etree.HTML(page_text)
# 解析出了验证码图片的地址
img_path = 'https://so.gushiwen.org' + tree.xpath('//*[@id="imgCode"]/@src')[0]
img_data = sess.get(url=img_path, headers=headers).content  # 请求到了图片数据
# 将图片保存到本地存储
with open('./code.jpg', 'wb') as fp:
    fp.write(img_data)
# 将动态变化的请求参数从页面源码中解析出来
__VIEWSTATE = tree.xpath('//*[@id="__VIEWSTATE"]/@value')[0]
__VIEWSTATEGENERATOR = tree.xpath('//*[@id="__VIEWSTATEGENERATOR"]/@value')[0]


# 识别验证码
def imgcode(file_path):
    chaojiying = Chaojiying_Client('用户名', '密码', '软件ID')
    im = open(file_path, 'rb').read()
    code = (chaojiying.PostPic(im, 1004)['pic_str'])
    print(code)
    return code


# 获取验证码
code_result = imgcode('code.jpg')
# 古诗文网 url
post_url = 'https://so.gushiwen.org/user/login.aspx?from=http%3a%2f%2fso.gushiwen.org%2fuser%2fcollect.aspx'
# 动态参数
data = {
    "__VIEWSTATE": "lG3WvIKiDx5sEmj8IeYT6LmF1reN9ep/Q2b+U7W2RCMdA2JF5F9NRvaEfIepywyrCTFVIlRHGtorc6dkttOZ0GCzQsQPFdpLeB2kDD6J+vXb/BvqhxWtwSJ+02I=",
    "__VIEWSTATEGENERATOR": "C93BE1AE",
    "from: http": "//so.gushiwen.cn/user/collect.aspx",
    "email": "wz.0527@qq.com",
    "pwd": "qwerqwer",
    "code": code_result,
    "denglu": "登录",
}
# 模拟登录的请求
response = sess.post(url=post_url, headers=headers, data=data)
# 登录成功后页面的源码数据
page_text = response.text
# 保存网页
with open('gushiwen.html', 'w', encoding='utf-8') as fp:
    fp.write(page_text)
相关文章
|
Web App开发 JavaScript PHP
【CURL】模拟登录网站并获取用户信息
模拟登录网站并获取用户信息 前言 这次来做的是通过代码的方式,模拟登录秒拍官网,获取登录用户的信息。 前后端分离 本文的标题是CURL,传统的网站是PHP代码直接渲染项目视图,通过表单提交到控制器直接进行数据操作。
1785 0
|
4月前
|
Python
scrapy模拟登录
scrapy模拟登录
22 0
|
10月前
|
Java 数据安全/隐私保护
模拟登陆系统
模拟登陆系统
88 0
|
Web App开发 C# 数据安全/隐私保护
C# 13行代码带你模拟登录QQ空间
C# 13行代码带你模拟登录QQ空间
93 0
python+selenium 通过添加cookies或token解决网页上验证码登录问题
cookie或token可以保存登录信息,当我们拿到cookie后,可以通过向浏览器发送cookie中记录的数据,直接变成登录状态,不需要再登录。
1873 0
|
数据采集 数据安全/隐私保护 Python
python爬虫携带cookie访问QQ空间
python爬虫携带cookie访问QQ空间
540 0
python爬虫携带cookie访问QQ空间
调用postman拿CSRF token的隐藏Cookie处理
调用postman拿CSRF token的隐藏Cookie处理
调用postman拿CSRF token的隐藏Cookie处理
|
Web App开发 前端开发
处理一次模拟登录问题
因多系统集成,要实现单点登录,各个系统采用的架构不一,并且改造成本比较高,不能完全使用cas单点登录方案,有的系统年代久远,还需要再IE7 ,IE8等浏览器上运行,所以就有了在chrome上唤起IE浏览器,并模拟其他系统登录的场景。
457 0
处理一次模拟登录问题
|
机器学习/深度学习 Web App开发 JavaScript
使用ApiPost测试接口时需要先登录怎么办?利用Cookie模拟登陆!
在后台在开发、调试接口时,常常会遇到需要登陆才能请求的接口。本文主要介绍利用ApiPost发送Cookie,使服务器识别已登录用户的Cookie。

热门文章

最新文章