破解极验验证码奇妙思路(不适用所有情况)登录授信类爬虫效果很好

该文章仅用于学习,侵权联系删除
主要是分享一些思路,和爬虫的方法。大家探讨学习
有段时间没更新爬虫的东西了
今天更新一个另类过极验所有验证码的方式(而且不惧更新)
但该方式使用场景有限,用在授信登录类场景还比较合适

道理相同,主要是给大家分析思路

这次练习的网址是平安的一个登录网页
http://www.4008000000.com/fuwuzhongxin/haochezhu/ip.shtml
旧版的网页 点击登录就可以进入
在这里插入图片描述

分析开始

首先了解极验或者其他验证码平台的都应该知道,极验会有一个gt和challenge的参数去区分商户和单个验证码
知己知彼方能百战不殆
我们可以去极验官网看看
在这里插入图片描述
假设我们是去对接极验,就需要着几个东西。

那如果我们把指定网址的gt(区分商户的参数),和challenge放到我们网址,加上gt.js。我们就可以成功调用起极验的接口,并验证成功。

首先分析一下目标网址
接口一已经使用到了gt
在这里插入图片描述

查找gt从哪来的
很容易我们就看到是getHCZSlideCode接口
在这里插入图片描述

{"code":0,"data":{"challenge":"72a818395c1ff6004c911897ee90e373","gt":"f69f2123999ef7112a1a2e54c4867f8b","new_captcha":false,"success":1},"result":"操作成功"}

这样challenge和gt我们都有了

假设我们不知道如何调用
那我们看下平安如何调用的
在这里插入图片描述

我们通过谷歌浏览器的堆栈跟踪,看到函数的执行顺序
跟着查找一下看看
在这里插入图片描述
看看标红的重要部分
大家应该清楚了其中的奥妙了

var result = captchaObj.getValidate();

最后应该是通过这里唤起验证码的
大家可以断点测试一下

分析结束
我们开始实验(爬虫很大部分便是一个实验的过程)
来直接官网找个接入的例子搞起来
在这里插入图片描述

在这里插入图片描述

把源代码全拿出来放到本地

在这里插入图片描述

可以看到官网例子的gt是019924a82c70bb123aae90d483087f94

只要改成目标网址并验证成功,那就成功了

接下来就是分析js 写代码的过程了
下面是关键代码

    var handler = function (captchaObj) {
        captchaObj.appendTo('#captcha');
        captchaObj.onReady(function () {
            $("#wait").hide();
        });
        $('#btn').click(function () {
            var result = captchaObj.getValidate();
            if (!result) {
			captchaObj.verify();
                return ;
            }
            $.ajax({
                url: 'gt/validate-slide',
                type: 'POST',
                dataType: 'json',
                data: {
                    username: $('#username2').val(),
                    password: $('#password2').val(),
                    geetest_challenge: result.geetest_challenge,
                    geetest_validate: result.geetest_validate,
                    geetest_seccode: result.geetest_seccode
                },
                success: function (data) {
                    if (data.status === 'success') {
                        alert('登录成功');
                    } else if (data.status === 'fail') {
                        alert('登录失败,请完成验证');
                        captchaObj.reset();
                    }
                }
            });
        })
        // 更多接口说明请参见:http://docs.geetest.com/install/client/web-front/
        window.gt = captchaObj;
    };


    $.ajax({
        url: "https://www.pingan.com/customer/getHCZSlideCode.do?" + new Date().getTime(), // 加随机数防止缓存
        type: "get",
        dataType: "json",
        success: function (data) {

            $('#text').hide();
            $('#wait').show();
			data = data.data;
            // 调用 initGeetest 进行初始化
            // 参数1:配置参数
            // 参数2:回调,回调的第一个参数验证码对象,之后可以使用它调用相应的接口
            initGeetest({
                // 以下 4 个配置参数为必须,不能缺少
                gt: data.gt,
                challenge: data.challenge,
                offline: !data.success, // 表示用户后台检测极验服务器是否宕机
                new_captcha: data.new_captcha, // 用于宕机时表示是新验证码的宕机
				api_server:'captcha-api.pingan.com',
                product: "bind", // 产品形式,包括:float,popup
                width: "300px",
                https: true

                // 更多配置参数说明请参见:http://docs.geetest.com/install/client/web-front/
            }, handler);
        }
    });
发布了31 篇原创文章 · 获赞 11 · 访问量 6437

猜你喜欢

转载自blog.csdn.net/cyz52/article/details/103997801