首页 > 其他分享 >滑块 验证

滑块 验证

时间:2023-08-02 22:44:22浏览次数:26  
标签:__ fp 滑块 验证 self import def

爬虫方面必须会的

两款 需要还原 底图 轨迹

第一个 pkulaw

import json
import random

from PIL import Image
from io import BytesIO
from base64 import b64decode
from ddddocr import DdddOcr
import time

import requests

def generate_track(distance):
    """
    生成滑块的轨迹
    :param distance: 滑块需要滑动的距离
    :return: 滑块的轨迹列表
    """
    tracks = []  # 滑块的轨迹列表
    current = 0  # 当前滑动距离
    mid = distance * 3 / 4  # 拖动距离的3/4作为中间位置
    t = 0.2  # 模拟人的动作间隔时间

    v = 0  # 初始速度
    while current < distance:
        if current < mid:
            a = random.uniform(2, 3)  # 加速度在2-3之间随机取值
        else:
            a = -random.uniform(2, 3)  # 加速度在-2到-3之间随机取值

        v0 = v  # 初始速度
        v = v0 + a * t  # 当前速度
        move = v0 * t + 0.5 * a * t * t  # 当前位移

        current += move
        tracks.append(round(move))
    vv = []
    det = 0
    for i in tracks:
        det += i
        t = round(time.time() * 1000)
        vv.append("{},{}".format(det, t))
        time.sleep(0.005)

    return '|'.join(vv)
class Slider():
    def __init__(self):
        self.dd = DdddOcr(det=False, ocr=False)
        self.req = requests.Session()
        self.req.headers = {
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
            'Connection': 'close',
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
            'Origin': 'https://www.pkulaw.com',
            'Referer': 'https://www.pkulaw.com/',
            'Sec-Fetch-Dest': 'empty',
            'Sec-Fetch-Mode': 'cors',
            'Sec-Fetch-Site': 'same-origin',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.188',
            'X-Requested-With': 'XMLHttpRequest',
            'sec-ch-ua': '"Not/A)Brand";v="99", "Microsoft Edge";v="115", "Chromium";v="115"',
            'sec-ch-ua-mobile': '?0',
            'sec-ch-ua-platform': '"Windows"',
        }

    def downimg(self):
        data = 'act=getcode&spec=300*200'

        response = self.req.post('https://www.pkulaw.com/VerificationCode/GetVerifiCodeResult',
                                 data=data).json()
        resjson = json.loads(response)
        y = resjson['y']
        arr = resjson['array']
        small = resjson['small']
        with open('target.jpg', 'wb') as fp:
            fp.write(b64decode(small.split(',')[1]))
        normal = resjson['normal']
        self.resimg(arr.split(','), b64decode(normal.split(',')[1]))

    def resimg(self, arr, imgtxt):
        # 还原 图片
        img = Image.open(BytesIO(imgtxt))
        newimg = Image.new("RGB", img.size)
        u = 30
        f = 100
        for i in range(len(arr)):
            num = int(arr[i])
            x = int((i - 10) * u if i > 9 else i * u)
            y = 100 if i > 9 else 0
            #         开始截取
            cort = img.crop((x, y, x + u, y + f))
            newx = (num - 10) * u if num > 9 else num * u
            newy = 100 if num > 9 else 0
            newimg.paste(cort, (newx, newy))
        newimg.save('bg.jpg')

    def detslice(self):
        with open('bg.jpg', 'rb') as fp:
            bg = fp.read()
        with open('target.jpg', 'rb') as fp:
            tar = fp.read()
        return (self.dd.slide_match(tar, bg, simple_target=True))['target']

    def postslider(self, x):
        # 发送请求
        data = {
            'act': 'check',
            'point': '{}'.format(x),
            'timespan': '1625',
            'datelist': generate_track(x)
        }
        print(generate_track(x))
        response = self.req.post(
            'https://www.pkulaw.com/VerificationCode/GetVerifiCodeResult',
            data=data,
        )
        print(response.json())



    def main(self):
        self.downimg()
        x = self.detslice()
        self.postslider(x[0])


if __name__ == '__main__':
    x = Slider()
    x.main()
View Code

效果:

 

第二个极验 明天弄

 

标签:__,fp,滑块,验证,self,import,def
From: https://www.cnblogs.com/inkser/p/17602005.html

相关文章

  • YUV文件-y,u,v分量验证
    通过程序采集yuv数据,并落1帧数据到文件中;一、此处记录下思路变化:1、第一步是了解YUV格式,为什么会比RGB节省空间;2、二则是按照YUV数据格式读取:因为没有任何消息头尾的封装,所以只需要看YUV是什么格式,再按照字节读取分量即可;3、验证总结:验证时,最好以图片进行验证,视频......
  • 华中科技大学成功验证LK-99,美国实验室证实常温常压超导理论可行!
    原创|文BFT机器人上周,全球物理学界迎来了一则令人震惊的消息:一支韩国科学家团队宣布他们发现了全球首个室温超导材料。这种材料被称为“改性铅磷灰石晶体结构(下称LK-99,一种掺杂铜的铅磷灰石)”。这项研究引起了全球范围内的轰动,目前已有多个机构和实验室,包括北航、美国伯克利国家......
  • WPF使用FluentValidation进行表单验证
    WPF使用FluentValidation进行表单验证.net版本:6.0使用的NuGet包FluentValidation:11.6.0MaterialDesignThemes:4.9.0Prism.DryIoc:8.1.97在WPF里验证表单使用的是INotifyDataErrorInfo接口,这个接口长这样publicinterfaceINotifyDataErrorInfo{boolHasErrors{get;......
  • 【Python小随笔】Pillow简单示例(图片添字,图片覆盖图片,复杂验证码...)
     简单创建添加文字到图片fromPILimportImage,ImageDraw,ImageFont,ImageFilter#导入PIL库中的相关模块importrandom#导入random库#简单的添加文字"""mode:图片模式,指定了每个像素点的颜色组织方式。常用的模式有:'1':二值图像,每个像素点只有黑和白两种颜......
  • .net 7 验证码功能
    usingSixLabors.ImageSharp还需要用到2个的插件,SixLabors.Fonts和SixLabors.ImageSharp.Drawing通过CLI手动安装dotnetaddpackageSixLabors.ImageSharp.Drawing--version1.0.0-beta15dotnetaddpackageSixLabors.Fonts--version1.0.0-beta19usingSystem.Text;......
  • 直播带货源码,什么是cross field validation(交叉验证)
    直播带货源码,什么是crossfieldvalidation(交叉验证)解释crossfield可以理解为跨字段,跨字段就是这个字段的校验依赖于另外一个字段(我的理解),比如 publicclassMyBean{ privatebooleanselected; privateStringsomeString; ...}​ 以上就是直播带货源码,什么是cr......
  • jQuery验证控件jquery.validate.js使用说明
    官网地址:http://bassistance.de/jquery-plugins/jquery-plugin-validationjQueryplugin:Validation使用说明一导入js库<scriptsrc="../js/jquery.js"type="text/javascript"></script><scriptsrc="../js/jquery.validate.js"type=&q......
  • UVM:2.1_验证平台的组成
    1.首先看下面的结构吧:这个结构虽然不是一个严格满足官方规范的架构,但它真的可以跑.1).driver:产生最原始的data,发送给两部分。一个是DUT,另一个是referencemodel。2) referencemodel:是一个和DUT逻辑上相同的模块,可以sv,也可以通过DPI实现。我遇到的问题是,如果referencemodel和DU......
  • UVM:4.1.1 验证平台内部的通信
    1.两个components通信可以有如下方法:1)设置全局变量。2)设置public让外部访问。3)写一个新的class,uvm_object,用config_db(config_object)配置,被配置的components去吃这个新的class。但是都不好!!!!!!!!!!!!!!!!2.1)上面的方法如果加入阻塞和非阻塞的概念,会更复杂。2)scoreboard主动要求数据,又怎么实现......
  • SpringBoot SpringSecurity(四)短信验证码登录
    SpringSecurity默认只提供了账号密码的登录认证逻辑,所以要实现手机短信验证码登录认证功能,我们需要模仿SpringSecurity账号密码登录逻辑代码来实现一套自己的认证逻辑。通过下面步骤来完成短信验证码登录:1、短信验证码生成2、改造登录页3、添加短信验证码认证3.1定义SmsAu......