Greasemonkey有一些脚本可以绕过这个插件,我下来看了下,不知道这些脚本的有效性,因为支付宝页面是变动还是时常的,而且我只用firebug,于是我想试下读懂这些代码在firebug下手工处理。
经分析几个页面的js代码,控件验证基本是通过checkForm函数,然而有的是CheckForm(大小写区别),有的挂在form的onsubmit上,有的用了window的listener,使得绕过方式不尽相同(PS:发现了好多不该有的注释,以及开发者语文和英语都不过关的证据...- -);而我初次实验就栽在了支付宝转帐上面,好不容易绕过了控件验证后,却报身份验证失败的错误。
走的弯路就不提了,后来我发现唯独转帐这页的checkForm中同时还有ajax的身份验证代码,因此绕过就失败。灵光一闪,其实“绕过”并不是必须的,它要什么我给它什么可能更简单。结果,就是“伪造”了控件的接口,只是一部分,但最后通过了我做的所有测试,最终的代码就这几句:
代码: 全选
p_Edit = document.createElement("input");
p_Edit.TextData = "登录/付款密码";
p_Edit.ci1 = function() {return "XOR_1_000000000000000000000000000000_63504554470A7C710A750170";};
p_Edit.ci2 = function() {return "";};
AlieditControl = new Object();
AlieditControl.installedAliedit = true;
AlieditControl.getAliedit = function(o){return [p_Edit];}
细节说明:
虽然创建的是一个input,但控件并不是,只是以此让它拥有所有的DOM属性,ci1函数的值可能不是必须的,这个常数是我在走弯路的时候找到的,在我机器上每次都一样,但不保证其他电脑上的情况。
-----------------------------3-11更新----------------------------------
由于iframe的问题,确认收货页以上代码支持不良,暂做一个workaround,仅能用于firebug:
代码: 全选
if (!window.AlieditControl && $('alipay-iframe')) cd($('alipay-iframe').contentWindow);
p_Edit = document.createElement("input");
p_Edit.TextData = "登录/付款密码";
p_Edit.ci1 = function() {return "XOR_1_000000000000000000000000000000_63504554470A7C710A750170";};
p_Edit.ci2 = function() {return "";};
AlieditControl.installedAliedit = true;
AlieditControl.getAliedit = function(o){return [p_Edit];}