极验4文字点选验证

极验4 汉字点选 数据模拟

接上篇文章ibox工具开发
原本博主使用c# 开发了一个ibox工具,突然ibox平台加上极验验证了,哦吼,工具用不了,
博主原本从事传统软件开发,非逆向人员,由于疫情,封在家里无聊才搞了搞这方面,所以ibox突然加上这个极验也是懵了一下,做开发有一句行话,不要重新造轮子(Stop Trying to Reinvent the Wheel),如果有现成的东西直接拿过来用不就可以了,也就想着找一找网络上现成的东西,或者付费的也行(太贵的付不起)。
1.到网上找的源码,基本不能用
2.找文章核心的基本都是一笔带过,都是想引流,让人私下去买他的api
3.找人买,太贵了
在这里插入图片描述
索性就自己研究一下js逆向了

js逆向的步骤

出于js代码的安全性考虑,通常前端工程师在打包发布代码到web服务器的时候会进行代码混淆
混淆?混淆嘛,就是把代码打乱,不改变代码实现的功能,防止别人看懂代码。
好进入主题:
就和写代码一样,逆向嘛,也得先理清逻辑,可能这个逻辑是反着来的了,就以登录时点击发送验证码的验证为例子
在这里插入图片描述

极验请求的第一个接口

在这里插入图片描述

curl 'https://gcaptcha4.geetest.com/load?captcha_id=68309e2ff42954131328bc455ce80c14&challenge=978f6ef9-39a9-4d52-8145-ce9a324dc3dc&client_type=h5&lang=zh-cn&callback=geetest_1655536911358' \
  -H 'authority: gcaptcha4.geetest.com' \
  -H 'pragma: no-cache' \
  -H 'cache-control: no-cache' \
  -H 'user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1' \
  -H 'accept: */*' \
  -H 'sec-fetch-site: cross-site' \
  -H 'sec-fetch-mode: no-cors' \
  -H 'sec-fetch-dest: script' \
  -H 'referer: https://www.ibox.art/zh-cn/login/' \
  -H 'accept-language: zh-CN,zh;q=0.9' \
  --compressed

可以看到是个GET方法
参数:
captcha_id 固定的,这个看当前接口传的是什么就是什么
challenge 就是个uuid 算法

    def uuid(self):
        """
      var uuid = function () {
          return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
              var r = Math.random() * 16 | 0;
              var v = c === 'x' ? r : (r & 0x3 | 0x8);
              return v.toString(16);
          });
      };
      """

        def __random(c):
            r = int(random.random() * 16)
            v = r if c == 'x' else (r & 0x3 | 0x8)
            return hex(v)[2:]

        string = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
        ret = ''
        for i in string:
            if i in 'xy':
                i = __random(i)
            ret += i
        return ret

client_type 固定就好,当前请求是什么就是什么
lang 固定就好,当前请求是什么就是什么
callback :geetest_+时间搓

t = int(time.time() * 1000)

到这里load接口需要的参数就齐活了,直接请求就好
请求完就会得到,下面这段字符串,可以看到

geetest_1655536911358({
    "status": "success",
    "data": {
        "lot_number": "5ce2d27764e6457b8b97364f277131a9",
        "captcha_type": "word",
        "js": "/js/gcaptcha4.js",
        "css": "/css/gcaptcha4.css",
        "static_path": "/v4/static/v1.5.6",
        "imgs": "captcha_v4/policy/fdd2aaa4a429487381bd673b104f152d/word/2832/2022-06-18T15/229d4cf130f242e6b9bedc43f8be5906.jpg",
        "ques": ["nerualpic/original_word_pic/jiangchengzhengjunti/431ffc5f2ab5ec46163eae0e2634ebbf.png", "nerualpic/original_word_pic/jiangchengzhengjunti/c98e3155d97bd67ee09d54eec87b5789.png", "nerualpic/original_word_pic/jiangchengzhengjunti/758aff19b3e36a56dfca4dad53c95d7b.png"],
        "gct_path": "/v4/gct/gct4.66a08f6c37c699c6f924158ae172c70e.js",
        "show_voice": false,
        "feedback": "https://www.geetest.com/Helper",
        "logo": true,
        "pt": "1",
        "captcha_mode": "adaptive",
        "language": "zh-cn",
        "custom_theme": {
            "_style": "stereoscopic",
            "_color": "hsla(224,98%,66%,1)",
            "_gradient": "linear-gradient(180deg, hsla(224,98%,71%,1) 0%, hsla(224,98%,66%,1) 100%)",
            "_hover": "linear-gradient(180deg, hsla(224,98%,66%,1) 0%, hsla(224,98%,71%,1) 100%)",
            "_brightness": "system",
            "_radius": "4px"
        },
        "pow_detail": {
            "version": "1",
            "bits": 4,
            "datetime": "2022-06-18T15:21:47.510094+08:00",
            "hashfunc": "md5"
        },
        "payload": "qgGaqrOsa7yf5glt6hJ8LI1puODIrU96NREF3igS8DQ711bSvSX1khrTGfGKPcTSp4OLj_FwE-QCWBxeG6u7hpQx5LqeSzME_7BqehlxUOMTS5Sjk-mJl7hg6jKjXVPfRYkQXYfoARow4zrYzRRjFHvip1Be2eRJ-EqIy9uuaaoRanSZwkKYRg9yeofZOe1wxa6W0ecgie4YJooo_WmMB7wDpUiHYNGW10FzOK55u3Va5awlG2vCEQ8BXkeyfaYi2T_1tHGavISIKIKc9rhDDyGarptz-Cy9IZTOXii0oiQKxwEO8OWvk0_6lUm96rhadKn0pS5f424BTxRfFs4fncdtDFOXVxZixLImAJPjpS6Xa3k1SHd-wTz5jngfey_ijiN7wd6h_J01GQesbmaXTd_Kcyc9YXwO-FNwKLu4-cUpi3pYvOBhJPNO-uxkF3ctqjl_gSWhFa_e4PROh6BOMTIp_Ey9Xc-d2MKm9HkVTI3kPaaUWwPREpdmLI4Xsb6aWeeuiBwIcaL8xb--Cn-N4LMOdOAwTr5kH8tfJcDjePPxCK8o33pNWPQZ4y3NILH8FN-7d61T7705QYzM727hXg==",
        "process_token": "9332895513fd33a99b31b0d3d7c9bc54c44a73f7c811ebe924b74be16ffeaec4",
        "payload_protocol": 1
    }
})

界面就出现下图了
在这里插入图片描述
imgs 就是显示的整图
ques 就是需要按照顺序点击的文字的图片
那么接下来需要做的事情就是模拟点击数据,请求接口拿到验证结果

这里 推荐 ddddocr

1.先识别 先用ddddocr 识别 imgs 的坐标
2.按顺序识别 ques 获取点选顺序
3.通过2 识别的顺序,去排序坐标
最终效果

在这里插入图片描述

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
### 回答1: Python文字点选验证是指利用Python编程语言实现的一种验证机制,通过文字点选验证用户的身份或进行某些操作。 在实现中,可以使用Python的GUI库如Tkinter或PyQt等来创建图形用户界面,其中包含需要用户点击的文字内容。用户需要按照特定的要求选择正确的文字,以完成验证。 一种常见的实现方式是使用图片或文字作为验证内容,用户需要根据要求在一组选项中选择正确的项。这可以防止自动化程序进行恶意操作,保护网站等系统的安全。 实现文字点选验证的步骤如下: 1. 创建一个图形界面,包含验证内容和选项。 2. 根据需求,随机生成验证内容,并将其展示在界面上。 3. 生成选项,并将其展示在界面上,其中包含一个正确的选项和其他几个错误选项。 4. 监听用户的点击事件,当用户点击了某个选项后,进行判断是否选择正确。 5. 根据用户的选择结果,给出相应的反馈,当选择正确时,验证通过;当选择错误时,提示用户继续选择。 文字点选验证具有较高的安全性,因为用户需要主动进行选择,而不是简单的输入验证码。同时,利用Python的编程能力,可以灵活地设计验证内容和选项,提高验证的难度和安全性。 在实际应用中,文字点选验证被广泛应用于各类网站的用户注册、登录、找回密码等流程中,以及防止恶意爬虫等行为。通过结合Python的强大编程能力,可以更好地保护系统的安全和用户的隐私。 ### 回答2: Python文字点选验证是一种用于验证用户输入的机制。通常用于网站表单中的验证码功能。在这种验证中,用户需要从给定的文字选项中选择正确的一个或多个选项,以证明他们是真实的用户,并不是自动化程序或恶意机器人。 Python中实现文字点选验证可以使用各种技术和库。一种常见的方法是通过在网页中使用HTML和CSS创建一个包含文字选项的表单。然后,使用Python的Web框架(如Django或Flask)来处理表单提交和验证。 在实现中,我们可以在后端代码中定义一个包含正确选项的列表,并从中随机选择若干个选项作为验证码。然后,将这些选项通过HTML和CSS渲染到网页上,并使用JavaScript为它们添加交互性。用户需要点击正确的选项才能通过验证。 在后端,可以编写验证逻辑来判断用户选择的是否是正确的选项。如果是,则表明用户是真实的,并且可以继续进行后续操作。否则,可以提示用户重新选择,或采取其他防止恶意行为的措施。 通过Python文字点选验证,可以有效地减少自动化程序和恶意机器人对网站的干扰。同时,它也给用户带来了一定的便利性,因为只需要进行简单的选项点击即可完成验证。这种验证机制已经广泛应用于各种网站和应用中,提高了用户体验并增强了安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值