如图,识别上图验证码,打码工具为超级鹰
以下是识别验证码所需要的函数类codeClass

#!/usr/bin/env python
# coding:utf-8import requests
from hashlib import md5class Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = usernamepassword = password.encode('utf8')self.password = md5(password).hexdigest()self.soft_id = soft_idself.base_params = {'user': self.username,'pass2': self.password,'softid': self.soft_id,}self.headers = {'Connection': 'Keep-Alive','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}def PostPic(self, im, codetype):"""im: 图片字节codetype: 题目类型 参考 http://www.chaojiying.com/price.html"""params = {'codetype': codetype,}params.update(self.base_params)files = {'userfile': ('ccc.jpg', im)}r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files,headers=self.headers)return r.json()def ReportError(self, im_id):"""im_id:报错题目的图片ID"""params = {'id': im_id,}params.update(self.base_params)r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)return r.json()
http/https协议特性:无状态。
没有请求到对应页面数据的原因:发起的基于个人主页页面请求的时候,服务器端并不知道该此请求是基于登录状态下的请求。
cookie:用来让服务器端记录客户端的相关状态。-手动处理:通过抓包工具获取cookie值,将该值封装到headers中。(不建议)-自动处理:-cookie值的来源是哪里?-模拟登录post请求后,由服务器端创建。session会话对象:-作用:1.可以进行请求的发送。2.如果请求过程中产生了cookie,则该cookie会被自动存储/携带在该session对象中。-创建一个session对象:session = requests.Session()-使用session对象进行模拟登录post请求的发送(cookie就会被存储在session中)- session对象对个人主页对应的get请求进行发送(携带了cookie)

以下是具体主函数

# 将验证码图片下载到本地
import requests
from lxml import etree
from codeClass import Chaojiying_Client# 封装识别验证码图片的函数
def getCodeText(imgPath, codeType):chaojiying = Chaojiying_Client('2735291402', 'fen122kang', '922352')  # 用户中心>>软件ID 生成一个替换 96001im = open(imgPath, 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//result = chaojiying.PostPic(im, codeType)['pic_str']  # 1902 验证码类型  官方网站>>价格体系 3.4+版 print 后要加()return resultsession = requests.Session()
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) ''Chrome/73.0.3683.103 Safari/537.36 '
}
url = 'https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
page_text = session.get(url=url, headers=headers).text# 解析验证码图片中img中src属性值
tree = etree.HTML(page_text)
code_img_src = 'https://so.gushiwen.cn' + tree.xpath('//*[@id="imgCode"]/@src')[0]
img_data = session.get(url=code_img_src, headers=headers).content
# 将验证码图片保存到本地
with open('./code.jpg', 'wb') as fp:fp.write(img_data)# 调用打码平台的示例程序进行验证码图片数据识别
code = getCodeText('code.jpg', 1004)
print(code)
# 模拟登录古诗文网
post_url = 'https://so.gushiwen.cn/user/login.aspx?from=http%3a%2f%2fso.gushiwen.cn%2fuser%2fcollect.aspx'
data = {'__VIEWSTATE': '2QNXwcCYrv0G19Axv7OVoEFd1Y+2J8/NNhXzix9SFWamPpTxAKdHqSMnBfhMKWx8/Z0j8b07wMBCQA/luaiDHbHJnnDefryOpuSi7cXhR9NNvgbHwu3o3yxESw8=','__VIEWSTATEGENERATOR': 'C93BE1AE','from': 'http://so.gushiwen.cn/user/collect.aspx','email': '182********',#自己的用户名及密码'pwd': '*********','code': code,'denglu': '登录',
}
response = session.post(url=post_url, headers=headers, data=data)
print(response.status_code)
self_url = 'https://so.gushiwen.cn/user/collect.aspx'
data_text = session.get(url=self_url, headers=headers).text
with open('./denglu.html', 'w', encoding='utf-8') as fp:fp.write(data_text)

输出结果

验证码图片

获取到的个人信息页面

古诗文登录验证码识别及登录相关推荐

  1. python爬虫-古诗文网验证码识别

    文章目录 一.前期准备 二.示例代码 一.前期准备 古诗文网验证码识别,是通过对古诗文网登陆界面的验证码图片进行识别的,利用专门的验证码识别网站,可以提取验证码图片中的验证码 网站推荐:超级鹰 注册登 ...

  2. 12306登录验证码识别

    最近在研究12306验证码识别,前期的12306查询验证码识别已经上线了,详见http://download.csdn.net/download/ghost_man_/10160932的博客,里面的1 ...

  3. UI自动化之登录验证码识别

    使用selenium进行自动化测试过程中,存在网站登录的时候需要输入验证码,由于是线上环境无法关闭,故使用tesseract工具辅助识别,但是较为复杂的验证码无法识别. 一.安装tesseract工具 ...

  4. 图片验证码识别-自动登录工具开发

    涉及工具技术 Tampermonkey jQuery Tesseract-OCR Flask Pillow 前言 开发软件系统时必然会有用户登陆的模块.每次验证自己的功能时,总是绕不开输入账号密码,这 ...

  5. php实现登录验证码_PHP实现登录验证码功能

    本篇文章主要介绍PHP如何编写登录验证码的功能,感兴趣的朋友参考下,希望对大家有所帮助. 在最顶端声明函数 session_start(); 告诉服务器我们要用这个函数的功能.session_star ...

  6. java 登录验证码_java实现登录验证码

    本文实例为大家分享了java实现登录验证码的具体代码,供大家参考,具体内容如下 1.ValidateCode.java import java.awt.Color; import java.awt.F ...

  7. 12306登录验证码识别(Java版)

    懒惰是程序员的第一生产力 源码地址 1 服务器性能差,不要频繁请求(做了熔断保护处理) 2 上传标准图片 3 添加了爬虫爬取验证功能,设置了ajax返回数据的css样式 窝在家里没事干- python ...

  8. python爬虫----DAY4-1-----验证码识别实战---识别古诗文网

    python爬虫----DAY4-1-----验证码识别实战 实战:识别古诗文网登录页面中的验证码 -https://so.gushiwen.cn/user/login.aspx 文章目录 pytho ...

  9. 用Python自动识别验证码(完整教程,陆续更新12306验证码识别,抢票)

    1.古诗文网验证码识别 2.fateadm_api.py(识别需要的配置,建议放在同一文件夹下) 调用api接口 全部源代码和相关配置,已古诗文网验证码识别为例,进行学习,代码中有相关说明,每一步都有 ...

  10. 爬虫day01(上午) 模拟登录古诗文网

    前言:今天是学习爬虫的第一天,因为看的教学视频比较老,所以很多案例都不能用了,于是我自己发挥动手操作,做了个比视频里更有含金量的练习,由于与视频案例大有不同,所以期间发生了点问题,经过探索现已解决,留 ...

最新文章

  1. 深入浅出搜索架构引擎、方案与细节(上)
  2. 聚类分析简单介绍(附R对应函数介绍)
  3. pygame做的著名游戏_pygame教程(十):汉诺塔游戏
  4. “物联网+云平台”的实验室管理方案,瞄准的是生物医药和化工行业
  5. PHP的CURL:请求接口 模拟请求登陆 上传下载
  6. 计算机在人力资源管理中的应用浅谈,计算机技术在人力资源管理工作中的应用.doc...
  7. android RecyclerView EditText 取消自动聚焦
  8. 计算机网络——基本介绍
  9. HTML5中本地储存概念是什么,什么优点 ,与cookie有什么区别?
  10. ubuntu12.04编译rtems doc目录
  11. 用CSS让文字居于div的底部
  12. 一个简单的现代化公司域名使用规律预测及生成工具
  13. [Spark]-结构化数据查询之自定义UDAF
  14. 即时语音提示软件php,InsTalk-即时语音校对软件
  15. php后台登录,实现后台管理员登录功能
  16. 利用Python处理Excel数据
  17. vue项目调用企业微信扫码权限skd,js-sdk
  18. win10下设置显示文件后缀名以及显示隐藏文件
  19. Shadow Defender影子卫士
  20. C#读取MP3文件的专辑图片和ID3V2Tag信息(带代码)

热门文章

  1. 网络设备高可用性简例
  2. php 解析lrc文件格式,前端LRC歌词解析播放插件
  3. 浅谈深度信念网络(Deep Belief Network)
  4. 模糊提取器(Fuzzy Extractor)
  5. meltdown linux检测,Spectre ampamp; Meltdown漏洞检测工具
  6. 电脑误格式化的数据怎么恢复,误格式化数据恢复教程
  7. 数据库系统概念4中级SQL
  8. 复活Google右键翻译方法及Google浏览器网页一键翻译
  9. k8s运维-06-kubectl delete node的过程
  10. SpringBoot+tomcat发布之war包发布