python自动识别验证码 模拟登陆古诗文网

#接下来发表的是自动识别验证码模拟登陆的方式 --共勉

1.验证码识别,获取验证码数据

2.对post请求发送处理参数

import os
import requests
from lxml import html
import chaojiying as cjy

if name == ‘main’:
# 使用session 自动获取到cookie信息
session = requests.Session()
url = ‘https://so.gushiwen.cn/user/collect.aspx’
headers = {
‘User-Agent’: ‘User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11’
# ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36’
# ,‘cookie’: ‘login=true; ASP.NET_SessionId=13h0zxglotr21c5hlubxnkk4; Hm_lvt_9007fab6814e892d3020a64454da5a55=1621518001; login=true; gswZhanghao=15267107632; Hm_lpvt_9007fab6814e892d3020a64454da5a55=1621663635’

}

#
page = session.get(url=url,headers=headers).text
# print(page)
etree = html.etree.HTML(page)

# 实例化对象
path = etree.xpath("/html/body/form[1]/div[4]/div[4]/img/@src")[0]

# 拼接新的url 图片地址
url_n = 'https://so.gushiwen.cn'+path
# print(url_n)
# 识别图片地址
page_png = session.get(url_n).content

# 保存图片到本地 以便于自动识别
with open('./爬取的文件/code1.png','wb') as wrt:
    wrt.write(page_png)

# 使用超级鹰自动识别验证码
cj = cjy.Chaojiying_Client('15267107632','bcrbcr123','917103')
im = open('./爬取的文件/code1.png','rb').read()
result = cj.PostPic(im,1004)
# 由于返回的是一个字典 所以取出来字典中对应的二维码值 如下个注释
rst = result['pic_str']
print(rst)

# tt = {'err_no': 0, 'err_str': 'OK', 'pic_id': '9141815506328500003', 'pic_str': 'm39c',
#  'md5': 'c417608f3f8568d11fac2daf2c16ee8b'}['pic_str']
# print(tt)

# 此种方式使用的人工的方式,便于没有超级鹰的同学手动输入验证码,哈哈哈
# rst = input("请手动输入验证码:")
url_login = 'https://so.gushiwen.cn/user/login.aspx'
data = {
    '__VIEWSTATE':'CO4g754YVorx44Y82oCtATNp1lmAgOH//ETyGy//Tjgjr3stvG9n2EjDfL+TTZzxAUk2oePLv9vCUCd47dAuVwWt2rb+9leoR9fdyA/TVnbRjG1NiIp/f4UopKs=',
    '__VIEWSTATEGENERATOR': 'C93BE1AE',
    'from': 'http://so.gushiwen.cn/user/collect.aspx',
    'email': '此处修改为你的账号',
    'pwd': '修改为你的密码',
    'code': str(rst),
    'denglu': '登录'
}

response = session.post(url=url_login,data=data,headers=headers)
# 查看状态码值
print(response.status_code)
# 获取文本信息
page_tet = response.text
print(page_tet)

---- 有问题及时交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值