详见:https://github.com/YEZHIAN1996/crawl_pass

滑块例子缺口图如下:

处理逻辑:

1.获取dt

        get_conf_data = self.request_getconf()
        dt = get_conf_data['dt']
        bid = get_conf_data['ac']['bid']  # 不变 "07e2387ab53a4d6f930b8d9a9be71bdf"
        assert bid == self.request_params['id'], f'id不一致:{bid=}  {self.request_params["id"]}'

        self.ss.headers['Referer'] = self.request_params['referer']

2.下载图片(这里设置图片的大小)

        get_data = self.request_get(dt, bid)
        download_and_resize_image(url=get_data['bg'][0], width=320, height=160,  output_path='bg.jpg')
        download_and_resize_image(url=get_data['front'][0], width=61,height=160, output_path= 'front.png' )
        # self.download_img('bg.jpg', url=get_data['bg'][0])
        # self.download_img('front.png', url=get_data['front'][0])

3.识别滑块的距离有2种方法(方法一更准确采用ddddocr)

# 方法一:
        distance = int(get_distince_dddd('front.png', 'bg.jpg'))
# 方法二:
        distance = self.get_distance(get_data['bg'][0], get_data['front'][0])

4.生成滑动轨迹

        track = self.get_track(distance)
        time.sleep(1)

5.请求校验

        resp_json = self.request_check(dt, bid, token=get_data['token'], track=track, distance=distance)
        self.resp_json2 = resp_json

        # 解码 validate
        validate = self.ctx.call('do_onVerify', resp_json['validate'], self.fp)

        if resp_json.get('result'):
            logger.success(f'验证成功:{resp_json}')
            logger.success(f'解码validate:{validate}')
            return True
        else:
            logger.warning(f'验证失败:{resp_json}', )
            return False

至此完成滑块的验证

最终结果:

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐