当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 19 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : 一段代码搞定支付宝
帖子发表于 : 2010-03-08 18:39 

注册: 2008-06-23 14:42
帖子: 308
送出感谢: 0 次
接收感谢: 0 次
本来支付宝是有个支持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 次

页首
 用户资料  
 
2 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-08 18:44 

注册: 2008-01-09 22:41
帖子: 18311
送出感谢: 0 次
接收感谢: 6
:em11


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-08 19:42 
头像

注册: 2008-12-13 19:39
帖子: 13284
地址: 物华天宝人杰地灵
送出感谢: 1
接收感谢: 6
牛人啊。。。 :em11


_________________
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-08 19:44 

注册: 2008-06-23 14:42
帖子: 308
送出感谢: 0 次
接收感谢: 0 次
还是有差错...
确认付款页出错,伪造的控件被覆盖了,待查

-----

我想找到原因了,其他页面上AlieditControl这个对象都是一开始就创建好了,唯独这页的点确定按钮时才生成,伪造对象就被屏蔽了,在脚本出错处之前打了断点才执行成功。
思考解决办法中~


最后由 kappa8086 编辑于 2010-03-08 21:02,总共编辑了 2 次

页首
 用户资料  
 
5 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-08 19:44 

注册: 2008-01-09 22:41
帖子: 18311
送出感谢: 0 次
接收感谢: 6
i vbox it now

it is really hard to slove


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-08 21:22 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
个案的某阶段哦。


_________________
● 鸣学


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-09 15:13 
头像

注册: 2010-02-19 0:04
帖子: 184
送出感谢: 0 次
接收感谢: 0 次
eexpress 写道:
个案的某阶段哦。

:em11 谢谢个案分享


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-09 17:21 
头像

注册: 2005-08-14 19:53
帖子: 4002
送出感谢: 1
接收感谢: 2
看不大懂。。希望完善,opera使用支付宝就有望了。。


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-09 17:57 

注册: 2006-09-11 22:47
帖子: 2841
送出感谢: 0 次
接收感谢: 4
留个名回来再看。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-09 18:42 

注册: 2008-06-23 14:42
帖子: 308
送出感谢: 0 次
接收感谢: 0 次
一时想不出啥好办法,确认收货页还真得当个个例处理了
昨天测试发现那页的插件检测不完整,代码是异常跳出的,应该不用绕过,直接设置密码就行,不过没把关键代码保存下来。。。咳,这个测试不是随时都能做,要花钱的 :em06


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-09 20:34 
头像

注册: 2009-11-05 17:50
帖子: 130
送出感谢: 0 次
接收感谢: 0 次
脚印一下,等待改进


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-10 13:08 

注册: 2005-05-01 12:54
帖子: 920
送出感谢: 0 次
接收感谢: 0 次
马云这个外星人,再不出官方64位插件,我诅咒它速回老家!


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-11 21:40 

注册: 2008-06-23 14:42
帖子: 308
送出感谢: 0 次
接收感谢: 0 次
又有机会测试了... 这次发现不是被屏蔽,而是确认收货这页用了一个iframe,那个AlieditControl根本就在另一个页面里,firebug的自动上下文切换把我给蒙了,用chrome调试才知道...
查了一下,在firebug要用一个cd函数(?)手动切换上下文,目前得写成这样:cd($('alipay-iframe').contentWindow)
chrome貌似支持不了这个
:em20


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-03-11 21:41 
头像

注册: 2008-12-13 19:39
帖子: 13284
地址: 物华天宝人杰地灵
送出感谢: 1
接收感谢: 6
没事。。。楼主的辛苦研究并不是没用的。。。至少让大伙知道了某条道路是走不通的。 :em06


_________________
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 一段代码搞定支付宝
帖子发表于 : 2010-07-02 23:57 

注册: 2010-07-02 23:54
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
kappa8086,

还有朋友关注这个吗


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 19 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译