内容导航:('重新滑动'),('滑动失败'),重新滑动'),推荐你收集了很多实用美白美容方法
  • 如何使用puppeteer破解极验的滑动验证码
  • 3G手机为什么百分之八十以上都支持联通网络为什么iphone4也是联
  • 请问超能经验记录器怎么用
  • 知道的进啊!军训的防晒
  • {image}

    一 、如何使用puppeteer破解极验的滑动验证码

    这篇文章主要介绍了利用puppeteer破解极验的滑动验证功能 ,基本流程代码实现给大家介绍的非常详细,需要的朋友可以参考下
    基本的流程:
    1. 打开租启前端网差悔,点击登录。
    2. 填写账号,密码 。
    3. 点解验证按钮 ,通过滑动验证,最后成功登陆。
    代码实现:
    github上可以虚型正checkout。
    具体代码如下所示:

    const puppeteer = require('puppeteer');
    const devices = require('puppeteer/DeviceDescriptors');
    const iPhone = devices['iPhone 6 Plus'];
    let timeout = function (delay) {
    return new Promise((resolve, reject) => {
    setTimeout(() => {
    try {
    resolve(1)
    } catch (e) {
    reject(0)
    }
    }, delay);
    })
    }
    let page = null
    let btn_position = null
    let times = 0 // 执行重新滑动的次数
    const distanceError = [-10,2,3,5] // 距离误差
    async function run() {
    const browser = await ({
    headless:false //这里我设置成false主要是为了让大家看到效果,设置为true就不会打开浏览器
    });
    page = await ();
    // 1.打开前端网
    await (iPhone);
    await ('/');
    await timeout(1000);
    // 2.打开登录页面
    ('a[data-type=login]')
    await timeout(1000);
    // 3.输入账号密码
    ('input[data-type=email]','你的账号')
    await timeout(500);
    ('input[placeholder=密码]','你的密码')
    await timeout(1000);
    // 4.点击验证
    ('.geetest_radar_tip')
    await timeout(1000);
    btn_position = await getBtnPosition();
    // 5.滑动
    drag(null)
    }
    /
    计算按钮需要滑动的距离
    /
    async function calculateDistance() {
    const distance = await (() => {
    // 比较像素,找到缺口的大概位置
    function compare(document) {
    const ctx1 = ctor('.geetest_canvas_fullbg'); // 完成图片
    const ctx2 = ctor('.geetest_canvas_bg'); // 带缺口图片
    const pixelDifference = 30; // 像素差
    let res = []; // 保存像素差较大的x坐标
    // 对比像素
    for(let i=57;i<260;i++){
    for(let j=1;j<160;j++) {
    const imgData1 = t("2d").getImageData(1
    i,1j,1,1)
    const imgData2 = t("2d").getImageData(1
    i,1*j,1,1)
    const data1 = ;
    const data2 = ;
    const res1=(data1[0]-data2[0]);
    const res2=(data1[1]-data2[1]);
    const res3=(data1[2]-data2[2]);
    if(!(res1 < pixelDifference && res2 < pixelDifference && res3 < pixelDifference)) {
    if(!(i)) {
    (i);
    }
    }
    }
    }
    // 返回像素差最大值跟最小值 ,经过调试最小值往左小7像素,最大值往左54像素
    return {min:res[0]-7,max:res[-1]-54}
    }
    return compare(document)
    })
    return distance;
    }
    /

    计算滑块位置
    /
    async function getBtnPosition() {
    const btn_position = await (() => {
    const {clientWidth,clientHeight} = ctor('.geetest_popup_ghost')
    return {btn_left:clientWidth/2-104,btn_top:clientHeight/2+59}
    })
    return btn_position;
    }
    /
    尝试滑动按钮
    @param distance 滑动距离
    /
    async function tryValidation(distance) {
    //将距离拆分成两段,模拟正常人的行为
    const distance1 = distance - 10
    const distance2 = 10
    (btn__left,btn__top,{delay:2000})
    (btn__left,btn__top)
    (btn__left+distance1,btn__top,{steps:30})
    await timeout(800);
    (btn__left+distance1+distance2,btn__top,{steps:20})
    await timeout(800);
    ()
    await timeout(4000);
    // 判断是否验证成功
    const isSuccess = await (() => {
    return ctor('.geetest_success_radar_tip_content') && ctor('.geetest_success_radar_tip_content').innerHTML
    })
    await timeout(1000);
    // 判断是否需要重新计算距离
    const reDistance = await (() => {
    return ctor('.geetest_result_content') && ctor('.geetest_result_content').innerHTML
    })
    await timeout(1000);
    return {isSuccess:isSuccess==='验证成功',reDistance:('怪物吃了拼图')}
    }
    /

    拖动滑块
    @param distance 滑动距离
    /
    async function drag(distance) {
    distance = distance || await calculateDistance();
    const result = await tryValidation()
    if() {
    await timeout(1000);
    //登录
    ('验证成功')
    ('#modal-member-login button')
    }else if(e) {
    ('重新计算滑距离录 ,重新滑动')
    times = 0
    await drag(null)
    } else {
    if(distanceError[times]){
    times ++
    ('重新滑动')
    await drag({min:,max:+distanceError[times]})
    } else {
    ('滑动失败')
    times = 0
    run()
    }
    }
    }
    run()

    {
    "name": "demo",
    "version": "1.0.0",
    "dependencies": {
    "puppeteer": "^1.0.0"
    }
    }运行
    1. 将这个两个文件保存到文件夹下面 ,终端切换到当前路径下
    2. npm i
    3. 补上前端网的账号,密码
    4. node run
    演示
    下图演示可以分为四步:
    1. 打开登陆页面,输入事先写好的账号密码 。
    2. 第一次拖动滑块提示“被怪兽吃了” ,所以重新计算了新的图片的缺口距离。
    3. 第二,三次拖动提示“没正确合拼 ”,所以重新拖动。
    4. 验证成功 ,登录 。
    (请将鼠标放到gif上查看演示效果,或者请拖到新窗口打开gif)

    说明
    1. 滑动验证有三个canvas,其中只需要 classname为‘geetest_canvas_fullbg'以及‘geetest_canvas_bg'的进行像素差对比。ps:前者是完整图片 ,后者是带缺口的图片。

    2. 每个带缺口的图片都有一块误导的阴影,所以对比像素差的时候,计算出的距离分别是误导阴影以及缺口的 。因此 ,滑动距离的取值,我取‘{min:res[0]-7,max:res[-1]-54}' 。当缺口比误导阴影靠左时, min(距离最小值) 值就是滑动距离 ,否则就是 max(距离最大值)减去滑块宽度 。

    3. 滑动结果分三种情况:验证成功 ,被吃了,失败。 “被吃了” 会重新请求图片,所以重新计算了距离再滑动; “失败” 则重新滑动 ,如果执行 4 次依然失败,则重新run整个流程 。
    上面是我整理给大家的,希望今后会对大家有帮助。
    相关文章:
    在swiper中如何解决动态加载数据滑动失效的问题?

    在ES6箭头函数中有关this方面的问题?

    在vue中使用echarts3.0自适应的方法有哪些?

    二、3G手机为什么百分之八十以上都支持联通网络为什么iphone4也是联

    因为联通的3G网络WCDMA:

    是欧洲标准。是全球技术最成熟 ,应用最广 。速度最快。。也是支持终端最多的3G网络 。。

    占用了全球90%的用户。

    璇锋偍鑱旂郴鎴戞椂璇峰憡鐭ヨ浠锋簮浜嶪銆?a href="#" onclick="getid('DivShowInfo').='none';">[鍏抽棴]鐑棬鎼滅储锛?/strong> 渚涜揣鍟?/strong> 绗?椤碉紝鏈〉鏄剧ず璁板綍0-0锛屽叡0鏉¤褰曞垎0椤垫樉绀?/span>TCL-M16V2-S鐗圭偣: 鐨凾CL - M16V2 - S鏄竴涓弻閫氶亾淇″彿鍦ㄥ唴鐕冩満妫€娴嬭繃鏃╁紩鐖嗗鐞咺C銆傝繖涓や釜浼犳劅鍣ㄩ€氶亾鍙€夋嫨閫氳繃SPI鎬荤嚎銆傚湪鐖嗛渿浼犳劅鍣ㄩ€氬父鎻愪緵涓€涓數瀛愪俊鍙锋斁澶у櫒鐨勮緭鍏ャ€傛劅娴嬩俊鍙疯繘琛屽鐞嗭紝閫氳繃涓€涓彲缂栫▼鐨勫甫閫氭护娉㈠櫒鏉ユ彁鍙栨劅鍏磋叮鐨勯鐜囷紙鍙戝姩鏈虹垎闇囨垨骞充俊鍙凤級銆傝甯﹂€氭护娉㈠櫒娑堥櫎浠讳綍寮曟搸涓庣噧鐑х浉鍏崇殑鑳屾櫙鍣煶銆傝鍙戝姩鏈虹殑鑳屾櫙鍣煶浣庯紝鏄吀鍨嬬殑骞呭害鐩告瘮锛岀垎杞板櫔闊炽€?br>TCL-M16V2-S(缁濆)鏈€澶ч瀹氬€? 鍐呴儴鍖归厤鍒?0惟棰戠巼鑼冨洿瀹斤紙3.2 GHz鐨? dB甯﹀锛夊钩鏉?3鍒嗚礉澧炵泭锛?鍒嗚礉鍘嬬缉鐐瑰湪1鍒嗚礉鑹ソ鐨勭嚎鎬у害浣庣數娴侊紙楂樿揪2.7 GHz鐨処P3out锛? dBm鐨勮緭鍑哄姛鐜? 22 dBm鏃讹級浣庣璋愭尝; -38鍦ㄧ壒绛塪Bc鐨? -5 dBm鐨勬棤鏉′欢绋冲畾锛堥噾1.2锛夈€?br>TCL-M16V2-S寮曡剼璇存槑: 椹卞姩绋嬪簭- Plus鐨勮懀浜嬩細锛屽鍥?鎵€绀猴紝鏄笌鎺у埗鍣ㄥ拰鍔熺巼绾х殑鎺ュ彛銆傚畠鍖呭惈浜咺GBT鏍呮瀬椹卞姩鍣紝淇濇姢鐢佃矾锛屽弽棣堬紝鍒跺姩椹卞姩鍣ㄥ拰褰撳湴鐨勭數鍔涗緵搴斻€傝鍙告満杩樺悜AC杈撳叆鎺ュ彛绾裤€備富妤煎唴鏈夌洿娴佹瘝绾跨數瀹瑰櫒锛岀敤NTC鍦ㄧ箒蹇欓檺鍒剁儹鏁忕數闃诲拰娴秾鎶戝埗MOVs銆傝閫嗗彉鍣ㄦ爡鏋侀┍鍔ㄧ數璺紝涓嶪R2233鍗曠墖涓夌浉HVIC鐨勯┍鍔ㄧ▼搴忓疄鐜帮紝deliverrs IGBT鐨勬爡鏋侀┍鍔ㄥ埌鐩稿簲鐨凱WM鎺у埗淇″彿閫氳繃IN6 IN1鐨勩€傚畠寮曞叆浜嗕竴涓?.2寰涔嬮棿鐨勬鍖烘椂闂翠笂鍜屾瘡涓樁娈电殑浣庨棬淇″彿銆備换浣曢澶栫殑姝讳骸鏃堕棿鏄繀瑕佺殑tmust鍖呮嫭鍦≒WM淇″彿銆傜粡杩囬€嗗彉鍣ㄦ晠闅滄儏鍐典笅閮借绂佺敤鍜屾爡鏋侀┍鍔ㄥ櫒閿佸畾銆傝鏁呴殰绠¤剼涔熻兘瀹夌劧娓¤繃涓€涓紑鏀剧殑娴佸け锛屾槧鐓х潃绾㈣壊浣嶭ED銆傞棬椹卞姩鍣ㄥ繀椤诲惎鐢ㄤ簡绉瀬鐨勪綆鑴夊啿TCL-M16V2-S Features: The TCL-M16V2-S is a dual-channel signal processing IC for detection of premature detonation in combustion engine. The two sensor channels are selectable through the SPI bus. The knock sensor typically provides an electrical signal to the amplifier inputs. The sensed signal is processed through a programmable band-pass filter to extract the frequency of interest (engine knock or ping signals). The band-pass filter eliminates any engine background noise associated with combustion. The engine background noise is typically low in amplitude compared to the predetonation noise. TCL-M16V2-S(Absolute) Maximum Ratings: Internally
    顺便给你一个送IPHONE活动的 /044FHa联通的WCDMA是欧洲的3G网络制式,技术相当成熟了…移动的TD是亚洲少数几个国家最近几年自己研发的,电信的CDMA有在美国用…3G当然首选WCDMA

    三、请问超能经验记录器怎么用

    不是,点右键,喝了后就没了,再用再买,不是很合算,有的有等级限制建议与游戏中的玩家进行交流.

    四 、知道的进啊!军训的防晒

    我是干性的肌肤很容易长斑 ,平时不怎么晒但是学校要军训实在没办了!我手上现在有ZA 的隔离请问还需要怎么什么要适合我干性的皮肤的还有怎么修复说明白点另追分雪肌精对晒后肌肤有用吗??希思黎的50+的防晒霜很适合你,如果要价格便宜点的就用理肤泉的50+的防晒霜,身体和脸部分开使用 ,我都用过,很不错,去海南都没问题 。楼主你好:在临睡前 ,将鸡蛋清在干净的脸上薄薄的涂上一层 ,然后美美的入睡。(注意是皮肤不紧崩为标准,因为带着紧崩状态入睡容易产生皱纹)你可以去达人姐姐空间:3,6,9,5,2,4,8,0,0,上面很多实用的美容知道 ,还有达人的推荐,我都加好友了,现在皮肤真的好了很多 ,她空间收藏的日志也很实用,快去看看吧!选我满意答案哦,嘻嘻!将西红柿捣碎 ,装入碗内,用汤匙挤出果汁,并加入少许的蜂蜜 ,涂擦机部和手臂,20分钟后,用清水洗净。每日数次 ,可使皮肤渐渐变白 。推荐你收集了很多实用美白美容方法 ,美白产品排行的Q空间: 3,6,9,5,2,4,8,0,0,我都加好友了,现在皮肤真的好了很多 ,里面还有达人的超级经验分享,总结的详细网购步骤和网购心得,肯定对你购物有很大帮助!快去看看吧!!璇锋偍鑱旂郴鎴戞椂璇峰憡鐭ヨ浠锋簮浜嶪銆?a href="#" onclick="getid('DivShowInfo').='none';">[鍏抽棴]鐑棬鎼滅储锛?/strong> 渚涜揣鍟?/strong> 绗?椤碉紝鏈〉鏄剧ず璁板綍0-0锛屽叡0鏉¤褰曞垎0椤垫樉绀?/span>TCL-M16V2-S鐗圭偣: 鐨凾CL - M16V2 - S鏄竴涓弻閫氶亾淇″彿鍦ㄥ唴鐕冩満妫€娴嬭繃鏃╁紩鐖嗗鐞咺C銆傝繖涓や釜浼犳劅鍣ㄩ€氶亾鍙€夋嫨閫氳繃SPI鎬荤嚎銆傚湪鐖嗛渿浼犳劅鍣ㄩ€氬父鎻愪緵涓€涓數瀛愪俊鍙锋斁澶у櫒鐨勮緭鍏ャ€傛劅娴嬩俊鍙疯繘琛屽鐞嗭紝閫氳繃涓€涓彲缂栫▼鐨勫甫閫氭护娉㈠櫒鏉ユ彁鍙栨劅鍏磋叮鐨勯鐜囷紙鍙戝姩鏈虹垎闇囨垨骞充俊鍙凤級銆傝甯﹂€氭护娉㈠櫒娑堥櫎浠讳綍寮曟搸涓庣噧鐑х浉鍏崇殑鑳屾櫙鍣煶銆傝鍙戝姩鏈虹殑鑳屾櫙鍣煶浣庯紝鏄吀鍨嬬殑骞呭害鐩告瘮锛岀垎杞板櫔闊炽€?br>TCL-M16V2-S(缁濆)鏈€澶ч瀹氬€? 鍐呴儴鍖归厤鍒?0惟棰戠巼鑼冨洿瀹斤紙3.2 GHz鐨? dB甯﹀锛夊钩鏉?3鍒嗚礉澧炵泭锛?鍒嗚礉鍘嬬缉鐐瑰湪1鍒嗚礉鑹ソ鐨勭嚎鎬у害浣庣數娴侊紙楂樿揪2.7 GHz鐨処P3out锛? dBm鐨勮緭鍑哄姛鐜? 22 dBm鏃讹級浣庣璋愭尝; -38鍦ㄧ壒绛塪Bc鐨? -5 dBm鐨勬棤鏉′欢绋冲畾锛堥噾1.2锛夈€?br>TCL-M16V2-S寮曡剼璇存槑: 椹卞姩绋嬪簭- Plus鐨勮懀浜嬩細锛屽鍥?鎵€绀猴紝鏄笌鎺у埗鍣ㄥ拰鍔熺巼绾х殑鎺ュ彛銆傚畠鍖呭惈浜咺GBT鏍呮瀬椹卞姩鍣紝淇濇姢鐢佃矾锛屽弽棣堬紝鍒跺姩椹卞姩鍣ㄥ拰褰撳湴鐨勭數鍔涗緵搴斻€傝鍙告満杩樺悜AC杈撳叆鎺ュ彛绾裤€備富妤煎唴鏈夌洿娴佹瘝绾跨數瀹瑰櫒锛岀敤NTC鍦ㄧ箒蹇欓檺鍒剁儹鏁忕數闃诲拰娴秾鎶戝埗MOVs銆傝閫嗗彉鍣ㄦ爡鏋侀┍鍔ㄧ數璺紝涓嶪R2233鍗曠墖涓夌浉HVIC鐨勯┍鍔ㄧ▼搴忓疄鐜帮紝deliverrs IGBT鐨勬爡鏋侀┍鍔ㄥ埌鐩稿簲鐨凱WM鎺у埗淇″彿閫氳繃IN6 IN1鐨勩€傚畠寮曞叆浜嗕竴涓?.2寰涔嬮棿鐨勬鍖烘椂闂翠笂鍜屾瘡涓樁娈电殑浣庨棬淇″彿銆備换浣曢澶栫殑姝讳骸鏃堕棿鏄繀瑕佺殑tmust鍖呮嫭鍦≒WM淇″彿銆傜粡杩囬€嗗彉鍣ㄦ晠闅滄儏鍐典笅閮借绂佺敤鍜屾爡鏋侀┍鍔ㄥ櫒閿佸畾銆傝鏁呴殰绠¤剼涔熻兘瀹夌劧娓¤繃涓€涓紑鏀剧殑娴佸け锛屾槧鐓х潃绾㈣壊浣嶭ED銆傞棬椹卞姩鍣ㄥ繀椤诲惎鐢ㄤ簡绉瀬鐨勪綆鑴夊啿TCL-M16V2-S Features: The TCL-M16V2-S is a dual-channel signal processing IC for detection of premature detonation in combustion engine. The two sensor channels are selectable through the SPI bus. The knock sensor typically provides an electrical signal to the amplifier inputs. The sensed signal is processed through a programmable band-pass filter to extract the frequency of interest (engine knock or ping signals). The band-pass filter eliminates any engine background noise associated with combustion. The engine background noise is typically low in amplitude compared to the predetonation noise. TCL-M16V2-S(Absolute) Maximum Ratings: Internally 其实减肥方法是因人而异的 ,每个人的体质都不同,所以适合自己的方法也不一样,别人的意见只能是一个参考 。我和我的朋友都用至尊强效瘦买二送一(瘦身+巩固),一个月下来我减了十六斤,她减了十二斤左右。所以说 ,你如果想用的话,就去试试,祝你减肥成功!我是从网址: taobibuy .cn 的“减肥产品排行榜 ”里买的 ,我看他是专门收集热卖,信誉好的东西,收藏起来挺实用的,还有当季最流行服饰的推荐 ,等,你也去看看吧,^_^希望可以采纳我哦!用一层隔离 ,再用一层防晒,晚上的时候可以把压缩面膜泡在牛奶里敷脸,或者买点晒后修复的面膜

    本文版权归趣快排SEO www.SeogurUblog.com 所有,如有转发请注明来出,竞价开户托管,seo优化请联系QQ▶61910465