遇到一个奇葩的 js 验证,求破解 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
hanmeimei
V2EX    Javascript

遇到一个奇葩的 js 验证,求破解

  •  
  •   hanmeimei 2016-10-07 22:35:39 +08:00 4170 次点击
    这是一个创建于 3348 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近学习 js 来填写表单。遇到一个奇怪的表单,我如果是人工输入邮箱账号,或者粘贴,都是可以通过验证。如果是通过代码填写邮箱,都显示不通过。请问这个编码是如何写验证的?如果通过 js 填表,如何绕过验证?求大神,指导。

    第 1 条附言    2016-10-07 23:26:40 +08:00
    这个地方在这里: https://app.meiqia.com/setting/profile 需要先登入账号,然后转到上面这个链接。有个修改邮箱的地方。这个何解?
    19 条回复    2016-10-08 16:22:58 +08:00
    finalspeed
        1
    finalspeed  
       2016-10-07 22:39:23 +08:00 via Android
    可能 你看到的只是显示,还有另一个标签正真做验证
    ZhaoMiing
        2
    ZhaoMiing  
       2016-10-07 22:41:24 +08:00
    目测数据层没有同步,手动触发一下 change 事件?
    ykrl089
        3
    ykrl089  
       2016-10-07 22:41:32 +08:00
    键盘输入比对,这是我想到最简单的办法
    helloccav
        4
    helloccav  
       2016-10-07 23:01:27 +08:00
    目测是 js 绑定事件的问题,通过代码输入的话无法触发相应的验证事件。
    Kokororin
        5
    Kokororin  
       2016-10-07 23:09:37 +08:00
    if ("createEvent" in document) {
    var evt = document.createEvent("HTMLEvents");
    evt.initEvent("change", false, true);
    element.dispatchEvent(evt);
    }
    else
    element.fireEvent("onchange");
    hanmeimei
        6
    hanmeimei  
    OP
       2016-10-07 23:14:23 +08:00
    @helloccav 那么如何通过代码自动设置让其看起来像触发一样。
    hanmeimei
        7
    hanmeimei  
    OP
       2016-10-07 23:19:43 +08:00
    @ZhaoMiing 手动点击不行,需要随便按下键盘字母。就可以了,复制粘贴。或者邮件粘贴也是可以的。
    hanmeimei
        8
    hanmeimei  
    OP
       2016-10-07 23:20:45 +08:00
    @Kokororin 感谢,这个代码。明天电脑试一试。。有办法移除检测触发的代码不?
    Kokororin
        9
    Kokororin  
       2016-10-07 23:22:48 +08:00
    @hanmeimei 分析下他的提交代码,然后自己写个提交吧
    ZhaoMiing
        10
    ZhaoMiing  
       2016-10-07 23:27:19 +08:00
    @hanmeimei 「手动触发」的意思是 .val('abc').trigger('change'),不是点击
    hanmeimei
        11
    hanmeimei  
    OP
       2016-10-07 23:34:16 +08:00
    @ZhaoMiing 试过,不是。上面有网址,有时间可以测试一下。
    ZhaoMiing
        12
    ZhaoMiing  
       2016-10-08 00:31:36 +08:00   1
    @hanmeimei 看了一下页面用了 react ,更改 input 的 value 时数据没有同步到对应的组件 state 里去。由于没有 jQuery 只能这样触发 change 事件了。
    var event = new Event('input', { bubbles: true });
    document.querySelector('#newEmail').dispatchEvent(event);
    jprovim
        13
    jprovim  
       2016-10-08 05:42:00 +08:00
    静观大牛的各种解法.
    mathcoder23
        14
    mathcoder23  
       2016-10-08 08:34:19 +08:00
    直接新建一个提交方便吗?
    indooorsman
        15
    indooorsman  
       2016-10-08 09:34:25 +08:00 via Android
    keyup keydown input 这些事件挨个触发一遍
    Kokororin
        16
    Kokororin  
       2016-10-08 10:06:41 +08:00
    测试可行,能够收到邮件,但是后端还是有做邮件地址的验证
    var getCookie = function(name) {
    var value = "; " + document.cookie;
    var parts = value.split("; " + name + "=");
    if (parts.length == 2) return parts.pop().split(";").shift();
    }
    fetch('https://app.meiqia.com/api/agent/agents/' + getCookie('_agent_id') + '?v=' + new Date().getTime(), {
    method: 'put',
    headers: {
    Accept: 'application/json',
    'Content-Type': 'application/json',
    Authorization: getCookie('_authenticated')
    },
    body: JSON.stringify({
    email: '[email protected]'
    })
    })
    .then(function(response) {
    return response.json()
    })
    .then(function(json) {
    console.log(json)
    })
    hanmeimei
        17
    hanmeimei  
    OP
       2016-10-08 14:56:16 +08:00
    @Kokororin 牛叉。可以使用。但是这个是如何知道表单是这样子触发的呢?
    hanmeimei
        18
    hanmeimei  
    OP
       2016-10-08 15:00:17 +08:00
    @ZhaoMiing 亲测可用。感谢。这个 even 是怎么抓取到的呢?我找不到
    Kokororin
        19
    Kokororin  
       2016-10-08 16:22:58 +08:00 via iPhone   1
    @hanmeimei 点提交的时候在 network 里可以看到
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5162 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 05:51 PVG 13:51 LAX 21:51 JFK 00:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86