一段代码搞定支付宝

上网、浏览、聊天、下载等
kappa8086
帖子: 308
注册时间: 2008-06-23 14:42

一段代码搞定支付宝

#1

帖子 kappa8086 » 2010-03-08 18:39

本来支付宝是有个支持linux系统下firefox的插件的,但敷衍用户的程度不比QQ强多少,不但一直没有64位版本出来,firefox 3.6还不兼容,一加载插件直接崩溃,BUG已经报了很久了。

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];}
密码补上,在firebug的控制台上执行一下,就可以按页面上的提交按钮了。除了淘宝的登录页还是要用标准登录,支付宝的各个支付页面通用,不依赖页面细节的变化,只要控件接口不变。greasemonkey下应该也可以用,不过密码输入的部分还得加点内容才行。


细节说明:
虽然创建的是一个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];}
上次由 kappa8086 在 2010-03-11 22:55,总共编辑 2 次。
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 一段代码搞定支付宝

#2

帖子 delectate » 2010-03-08 18:44

:em11
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: 一段代码搞定支付宝

#3

帖子 wangdu2002 » 2010-03-08 19:42

牛人啊。。。 :em11
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
kappa8086
帖子: 308
注册时间: 2008-06-23 14:42

Re: 一段代码搞定支付宝

#4

帖子 kappa8086 » 2010-03-08 19:44

还是有差错...
确认付款页出错,伪造的控件被覆盖了,待查

-----

我想找到原因了,其他页面上AlieditControl这个对象都是一开始就创建好了,唯独这页的点确定按钮时才生成,伪造对象就被屏蔽了,在脚本出错处之前打了断点才执行成功。
思考解决办法中~
上次由 kappa8086 在 2010-03-08 21:02,总共编辑 2 次。
delectate
帖子: 18311
注册时间: 2008-01-09 22:41

Re: 一段代码搞定支付宝

#5

帖子 delectate » 2010-03-08 19:44

i vbox it now

it is really hard to slove
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 一段代码搞定支付宝

#6

帖子 eexpress » 2010-03-08 21:22

个案的某阶段哦。
● 鸣学
头像
tamamaxox
帖子: 184
注册时间: 2010-02-19 0:04

Re: 一段代码搞定支付宝

#7

帖子 tamamaxox » 2010-03-09 15:13

eexpress 写了:个案的某阶段哦。
:em11 谢谢个案分享
头像
jarryson
帖子: 4002
注册时间: 2005-08-14 19:53

Re: 一段代码搞定支付宝

#8

帖子 jarryson » 2010-03-09 17:21

看不大懂。。希望完善,opera使用支付宝就有望了。。
poet
帖子: 2841
注册时间: 2006-09-11 22:47

Re: 一段代码搞定支付宝

#9

帖子 poet » 2010-03-09 17:57

留个名回来再看。
kappa8086
帖子: 308
注册时间: 2008-06-23 14:42

Re: 一段代码搞定支付宝

#10

帖子 kappa8086 » 2010-03-09 18:42

一时想不出啥好办法,确认收货页还真得当个个例处理了
昨天测试发现那页的插件检测不完整,代码是异常跳出的,应该不用绕过,直接设置密码就行,不过没把关键代码保存下来。。。咳,这个测试不是随时都能做,要花钱的 :em06
头像
dexinzang
帖子: 130
注册时间: 2009-11-05 17:50

Re: 一段代码搞定支付宝

#11

帖子 dexinzang » 2010-03-09 20:34

脚印一下,等待改进
Freesnake
帖子: 920
注册时间: 2005-05-01 12:54

Re: 一段代码搞定支付宝

#12

帖子 Freesnake » 2010-03-10 13:08

马云这个外星人,再不出官方64位插件,我诅咒它速回老家!
kappa8086
帖子: 308
注册时间: 2008-06-23 14:42

Re: 一段代码搞定支付宝

#13

帖子 kappa8086 » 2010-03-11 21:40

又有机会测试了... 这次发现不是被屏蔽,而是确认收货这页用了一个iframe,那个AlieditControl根本就在另一个页面里,firebug的自动上下文切换把我给蒙了,用chrome调试才知道...
查了一下,在firebug要用一个cd函数(?)手动切换上下文,目前得写成这样:cd($('alipay-iframe').contentWindow)
chrome貌似支持不了这个
:em20
头像
wangdu2002
帖子: 13284
注册时间: 2008-12-13 19:39
来自: 物华天宝人杰地灵

Re: 一段代码搞定支付宝

#14

帖子 wangdu2002 » 2010-03-11 21:41

没事。。。楼主的辛苦研究并不是没用的。。。至少让大伙知道了某条道路是走不通的。 :em06
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!
xing979020
帖子: 1
注册时间: 2010-07-02 23:54

Re: 一段代码搞定支付宝

#15

帖子 xing979020 » 2010-07-02 23:57

kappa8086,

还有朋友关注这个吗
回复