反爬机制——验证码识别

一、古诗文网案例 

1.获取登录接口的请求地址

7877d9c8769544f49af3a092dd29ba7b.png

2.获取解析验证码图片链接

91e550b7f47c48d3ad6dc901e7ca6f4b.png

#解析图片链接 https://so.gushiwen.cn/RandCode.ashx
xml=etree.HTML(r.text)
img_src='https://so.gushiwen.cn'+xml.xpath('//img[@id="imgCode"]/@src')[0]
print(img_src)

3.将其保存在本地

img_data=self.s.get(img_src,headers=self.headers).content with open('code.png','wb')as f: f.write(img_data)

4.但由于验证码是动态的,每次都不一样,所以解决方案——session会话来维持

#实例化session
self.s=requests.session()

5.得到图片后,想要将其读取出来——需要用到超级鹰

二、超级鹰的使用

1.进入超级鹰平台(超级鹰验证码识别-专业的验证码云端识别服务,让验证码识别更快速、更准确、更强大 (chaojiying.com)

2.新用户点击注册即可,随后进入用户中心界面

22b0e24feda843079a6bd1284d6a1c39.png

3.积分购买1元——1000积分,验证码一次10积分

4.进入价格体系中可以查看套餐价格,在本次案例中选择1004进行fb2264722d2e4427baa78569808bd44e.png

5.点击进入用户中心,点击软件id——点击生成一个软件id

31f0d3ad1d01404bad63e30ebb270402.png

53baa3ac6e6c4675aa50a20bedb5e7d2.png

5b659f7215144ca6959ebd636411ec1b.png

6.如何使用?

进入开发文档,选择python然后下载即可

2cee776daa6040c697ccb818d0c2aca7.png

下载好了之后解压并复制到项目同级下面。

c68aded8325e47ca90c8d6d517bf94d8.png

修改chaojiying.py文件——账号,密码,软件id

eaa6ea45812744fe9e614d32fb635e72.png

在项目中使用

chaojiying = Chaojiying_Client('18975935829', 'zxia0677', ' 951854')  # 用户中心>>软件ID 生成一个替换 96001
im = open('code.png', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
result=chaojiying.PostPic(im,1004)
print(result)

代码案例:

import requests
from lxml import etree
from chaojiying_Python.chaojiying import Chaojiying_Client
#登录接口
class Spider():
    def __init__(self):
        #首页接口
        self.url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
        self.data = {
            '__VIEWSTATE':' 9GkOE0VPlFW/0FQ2VRS1kp7Re1dqhowRVJXxibJ3AS6xU3RfBluHF+5kd4CPjJp/caTeLEogHDyngZjDkz9nzsB3iZGJ7+TjkuRyyRKbmSM93J+aglgHmJvkQA7l+PxGjofFFWu7knx5HrIY+W4WAovaeLY=',
            '__VIEWSTATEGENERATOR':' C93BE1AE',
            'from':' http://so.gushiwen.cn/user/collect.aspx',
            'email':' 18975935829',
            'pwd':' zxia0677',
            'code':' HPWU',
            'denglu':' 登录',
        }
        self.headers={
            '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'
        }
        #实例化session
        self.s=requests.session()
    #像首页发请求 得到图片链接
    def get_data(self):
        r = self.s.get(self.url,headers=self.headers)
        # print(r.text)
        #解析图片链接 https://so.gushiwen.cn/RandCode.ashx
        xml=etree.HTML(r.text)
        img_src='https://so.gushiwen.cn'+xml.xpath('//img[@id="imgCode"]/@src')[0]
        print(img_src)
        img_data=self.s.get(img_src,headers=self.headers).content
        with open('code.png','wb')as f:
            f.write(img_data)
        chaojiying = Chaojiying_Client('18975935829', 'zxia0677', '	951854')  # 用户中心>>软件ID 生成一个替换 96001
        im = open('code.png', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
        result=chaojiying.PostPic(im,1004)
        print(result)
        return result
    def post_img(self):
        result=self.get_data()
        self.data['code']=result

if __name__ == '__main__':
    s = Spider()
    # s.get_data()
    s.post_img()

显示结果:

7da891f3b38349a1b387ed481ccdd1d9.png

 

编写自动化抢票脚本并解决验证码识别和登录过程中的反爬机制,是一项具有挑战性的任务。首先,要理解大麦网的购票流程和反爬机制,这包括了解网站的登录验证、请求频率限制、IP限制等策略。其次,需要熟练使用Python语言,并掌握网络请求处理(如使用requests库)、自动化测试(如selenium工具)、验证码处理(如使用OCR技术或第三方验证码识别服务)等相关技能。 参考资源链接:[大麦网抢票脚本Python源码分享](https://wenku.csdn.net/doc/7t9zem6fds) 在具体的实现过程中,可以先使用selenium模拟用户登录,绕过验证码(如果可能的话),或者采用自动化识别技术来处理验证码。在处理网络请求时,可以设置合理的延迟和模拟用户的行为,以避免触发反爬机制。此外,还可以通过分析网络请求的模式,构造相应的HTTP请求,以实现自动化购票流程。 鉴于抢票行为可能违反网站服务条款和相关法律法规,建议用户在了解并承担相应风险的前提下进行技术探索。同时,推荐参考《大麦网抢票脚本Python源码分享》这份资源,它不仅提供了可以直接运行的Python脚本,还包含了对自动化抢票过程中可能遇到的问题和解决方案的讨论,对于深入理解和实操抢票脚本具有很高的参考价值。 参考资源链接:[大麦网抢票脚本Python源码分享](https://wenku.csdn.net/doc/7t9zem6fds)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值