模拟登录古诗文网(模拟登录,验证码识别)

2023-12-12 20:30

本文主要是介绍模拟登录古诗文网(模拟登录,验证码识别),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 代码第一次编写
  1. url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
    page_text = requests.get(url=url, headers=headers).content# 实例化及获取验证码图片
    tree = etree.HTML(page_text)
    src = 'https://so.gushiwen.cn/' + tree.xpath('//*[@id="imgCode"]/@src')[0]
    img_date = requests.get(url=src, headers=headers).content
    # 将验证码图片保存到本地
    with open('./card.jpg', 'wb')as fp:fp.write(img_date)
    time.sleep(1)
    text = pytesseract.image_to_string(Image.open('card.jpg'))
    print(text)# 模拟登录
    load_url = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
    load_data = {'from': 'http://so.gushiwen.cn/user/ collect.aspx','email': '','pwd': '','code': text,'denglu': '登录'
    }
    login_text=requests.post(url=load_url, data=load_data,headers=headers).text
    with open('login.html','w',encoding='utf-8') as fp:fp.write(login_text)

古诗文网有两个问题:1.__VIEWSTATE参数是动态的;2.登录时状态码是302,发生了重定位。

暂时先学到这里,之后有其他的办法再作以修改

代码编写于2023.8.4 代码正常运行 提示验证码错误

  • 代码第二次编写
import requests
from lxml import etree
import pytesseract
import ddddocrif __name__ == '__main__':session = requests.Session()# 古诗文网登录页面urlget_url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'# 模拟登录请求头get_header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0'}# 请求url获取textpage_text = requests.get(url=get_url, headers=get_header).text#  解析HTMLtree = etree.HTML(page_text)#  定位src属性并拼接获得最终验证码urlsrc_url = 'https://so.gushiwen.cn' + tree.xpath('//*[@id="imgCode"]/@src')[0]# 请求验证码url获取二进制src_data = session.get(url=src_url, headers=get_header).content# 将获取的的二进制数据写入到当前目录下获得code.jpgwith open('./code.jpg', 'wb') as fp:fp.write(src_data)#pytesseract识别验证码    # code = pytesseract.image_to_string('code.jpg')# print(code)#ddddocr识别验证码ocr = ddddocr.DdddOcr()text2 = ocr.classification(src_data)print('ddddorc识别出的验证码为:', text2)# 模拟登录__VIEWSTATE = tree.xpath('//*[@id="__VIEWSTATE"]/@value')[0]__VIEWSTATEGENERATOR = tree.xpath('//*[@id="__VIEWSTATEGENERATOR"]/@value')[0]login_url = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'data = {'__VIEWSTATE': __VIEWSTATE,'__VIEWSTATEGENERATOR': __VIEWSTATEGENERATOR,'from': 'http://so.gushiwen.cn/user/collect.aspx','email': '','pwd': '','code': text2,'denglu': '登录',}gushiwen = session.post(url=login_url, headers=get_header, data=data).textwith open('./gushiwen.html', 'w', encoding='utf-8') as fp_h:fp_h.write(gushiwen)

pytesseract识别的准确率以及训练的成熟度不是很高 更换ddddocr之后就好多了

就是跳转到的HTML页面不好看

代码修改于2023.8.15 代码正常运行 运行结果大致正常

  • 代码第三次编写

以下代码承接模拟登录

# 收藏页面的标头
cookie = '收藏页面的cookie'
headers = {'Cookie': cookie,'Referer': 'https://so.gushiwen.cn/user/collect.aspx','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36 Edg/116.0.1938.62'}
# 主页的url
main_url = 'https://www.gushiwen.cn/'
# 收藏页的url
collect_url = 'https://so.gushiwen.cn/user/collect.aspx?type=m&id=4752846&sort=t'
# 主页的响应数据
gushiwen = session.post(url=main_url, headers=get_header, data=data).text
# #查看session内携带的cookie
# cookies_dict = requests.utils.dict_from_cookiejar(session.cookies)
# # 把cookies转化成字典。
# print("cookie:" + str(cookies_dict))
# 收藏页的相应数据
response = session.post(url=collect_url, headers=headers).text
with open('./gushiwen.html', 'w', encoding='utf-8') as fp_h:# 写入fp_h.write(response)

 打印session,发现携带的cookie内容与网页内的cookie不一致,于是手动使用cookie,此处在请求中额外携带cookie

代码修改于2023.8.31 代码正常运行 运行结果大致正常 

这篇关于模拟登录古诗文网(模拟登录,验证码识别)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/485833

相关文章

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

SpringBoot整合kaptcha验证码过程(复制粘贴即可用)

《SpringBoot整合kaptcha验证码过程(复制粘贴即可用)》本文介绍了如何在SpringBoot项目中整合Kaptcha验证码实现,通过配置和编写相应的Controller、工具类以及前端页... 目录SpringBoot整合kaptcha验证码程序目录参考有两种方式在springboot中使用k

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

usaco 1.2 Transformations(模拟)

我的做法就是一个一个情况枚举出来 注意计算公式: ( 变换后的矩阵记为C) 顺时针旋转90°:C[i] [j]=A[n-j-1] [i] (旋转180°和270° 可以多转几个九十度来推) 对称:C[i] [n-j-1]=A[i] [j] 代码有点长 。。。 /*ID: who jayLANG: C++TASK: transform*/#include<

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

hdu4431麻将模拟

给13张牌。问增加哪些牌可以胡牌。 胡牌有以下几种情况: 1、一个对子 + 4组 3个相同的牌或者顺子。 2、7个不同的对子。 3、13幺 贪心的思想: 对于某张牌>=3个,先减去3个相同,再组合顺子。 import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOExcepti