豆瓣登陆验证码的识别脚本 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
procen424
V2EX    分享创造

豆瓣登陆验证码的识别脚本

  procen424 2014-10-12 17:44:35 +08:00 31299 次点击
这是一个创建于 4070 天前的主题,其中的信息可能已经有所发展或是发生改变。
无意间发现豆瓣在登陆页使用了极验验证提供的验证码服务。
总觉得吧,这东西好像不安全。这个“基于行为的验证安全技术”到底是啥呢?
看了看调用的js,大概是只要鼠标发生移动就记录xy坐标和时间,最后对这个序列以及最终停下的位置分别加密,发给服务器判定。

那么问题来了。。。
1.最终停止位置xpos
每次验证请求都会得到三张图,fullbg:完整的验证图形、slice:拼图那一小块、bg:拼图对应那一块加阴影的fullbg,对比fullbg和bg,哪一列像素上开始发生较大变化那就是xpos
如果以后不提供fullbg,只要得到几张不同的bg,求它们的交集即可得到fullbg,不需要机器学习算法
2.鼠标移动轨迹a
根据xpos可以确定大概需要生成多少帧
x随帧编号产生不均匀增加,直至xpos,开始是用arctan函数模拟的,后来发现完全没必要,建个bitmap[xpos],从里面随机挑选不重复项选就行了
y用长周期小振幅的sin函数模拟
t随时间产生不均匀增加,并加入一些跳变
用以上方法填充a
3.加密
不需要破解,从js中剥离加密相关的函数,放入js虚拟机,传入xpos和a并执行,获得加密后结果

问题解决,大家应该知道哪家强了。。。

代码戳这里
https://github.com/procen424/scripts/blob/master/geetest-bypass.go
写得仓促,码风dirty

说明
go run geetest-bypass.go -c=次数 -gt="站点的gtid" 默认尝试豆瓣的验证码100次
success = 1 message = blahblahblah 通过
success = 0 message = failed 未通过
forbidden 判定为机器人

截至发帖时,识别通过率99%+
大家尽情玩耍
第 1 条附言    2014-10-12 20:59:02 +08:00
2014-10-12 20:57 通过率下降至97%,正确率依然99%+。难道已经有极验的朋友看到了本文?
第 2 条附言    2014-10-12 21:11:47 +08:00
2014-10-12 通过率60% 正确率99%+ 极验的动作好快!js库已更新至2.8.5!赞一个!
第 3 条附言    2014-10-12 21:12:16 +08:00
2014-10-12 21:11 通过率60% 正确率99%+ 极验的动作好快!js库已更新至2.8.5!赞一个!
第 4 条附言    2014-10-13 08:27:20 +08:00
2014-10-13 08:27 通过率99%+ 正确率99%+ 脚本已更新。极验更新了客户端js库,改了一个随机数生成函数,服务器端开始检查user-agent。
第 5 条附言    2014-10-13 10:08:02 +08:00
2014-10-13 10:08 通过率99%+ 正确率99%+ 极验再次更新,加入referer检测,请在脚本中自行修改。目前,核心算法仍不能识别机器行为,只要外界参数满足条件,脚本产生的xPosAnswer和moveTrack便可通过验证。极验的朋友们也不容易,大家别玩太狠了。
第 6 条附言    2014-10-13 13:11:52 +08:00
2014-10-13 13:11 豆瓣登陆页已更换回原来的文字验证码233333333333
第 7 条附言    2014-10-13 13:34:37 +08:00
2014-10-13 13:33 大概是因为这个帖子,害得两家公司白忙活一场,还让豆瓣在首页放上了验证码,在此道歉:“对不起,给大家添堵了!” (ˇˇ)
93 条回复    2020-01-20 22:04:25 +08:00
miyuki
    1
miyuki  
   2014-10-12 18:28:50 +08:00 via Android
v2ex找po主
bigtan
    2
bigtan  
   2014-10-12 20:01:59 +08:00   1
我去黑他们员工去,楼主简直不能再赞。
Iblard
    3
Iblard  
   2014-10-12 20:09:02 +08:00 via iPad
Nice Job.
vipdoain
    4
vipdomain  
   2014-10-12 20:18:33 +08:00
niubi
14
    5
14  
   2014-10-12 20:23:37 +08:00
干得漂亮!
icanfork
    6
icanfork  
   2014-10-12 20:24:32 +08:00
极验证会不会因为你这个脚本玩完呢?哈哈!
shiny
    7
shiny  
PRO
   2014-10-12 20:26:36 +08:00
记得极验验证的人在知乎信誓旦旦用一堆概念说破解不了。
procen424
    8
procen424  
OP
   2014-10-12 20:38:26 +08:00
@bigtan 我特想问问他们,“安全性提高44.78倍”,这个怎么算的啊。。。
procen424
    9
procen424  
OP
   2014-10-12 20:45:53 +08:00
@belin520 玩完可不太好。希望他们能改进算法,打败我这个简陋的脚本。
zzlettle
    10
zzlettle  
   2014-10-12 21:11:42 +08:00
楼主要端了极验证的技术核心壁垒。
哈哈
看楼主的分析,这种简单的验证一般都不可能靠谱。
一定要配合网站的后端搞出比如汉字这样的复杂验证码才是解决办法。验证码要你手动输入汉字,才是真正的破解无门我觉得。
procen424
    11
procen424  
OP
   2014-10-12 21:16:27 +08:00
@zzlettle 是的。写一个reCAPTCHA的bypass算法就要比极验的难很多很多,更何况复杂的汉字了。
貌似极验已经发现了这个帖子,浏览器端的js库神速更新了。
反应非常迅速积极,这点需要赞一个。
zzlettle
    12
zzlettle  
   2014-10-12 21:54:06 +08:00
他们核心的东西不改变,就修改了个JS库是没用的。
就是要搞成汉字这样的,否则什么都没用。
Wy4q3489O1z996QO
    13
Wy4q3489O1z996QO  
   2014-10-12 21:56:22 +08:00
挡不住人肉验证的码都不是好码
bigtan
    14
bigtan  
   2014-10-12 22:14:21 +08:00   4
@romotc 除了谷歌那套人都看不懂的验证码,估计能挡住人肉的比较少吧
Mihuwa
    15
Mihuwa  
   2014-10-12 22:18:52 +08:00
膜拜楼主。
Gauin
    16
Gauin  
   2014-10-12 23:18:48 +08:00
我去豆瓣体验过拖动验证 确实感觉不靠谱。。。

给楼主点赞

验证码的作用是区别人和机器,防止机器恶意注册。楼主的脚本证明了技术也是可以破解发现漏洞的。

极验证,这样的验证方式,感觉是方便了用户,不用输入较难识别的数字或者文字,但却本末倒置了,如果机器能破解这样的验证方式,就玩完了。
bigtan
    17
bigtan  
   2014-10-12 23:42:44 +08:00   1
@procen424 据我跟他们工作人员沟通,据说已经封了;可以测试一下。然后他们的系统是Python开发的,在武汉这个地界上用Python的真是极少。
procen424
    18
procen424  
OP
   2014-10-13 08:32:11 +08:00
@bigtan 是的,旧脚本已经不能用了。极验在本地端改了一个函数,服务器端加入user-agent校验。新脚本通过率与正确率重回99%+。
感觉要发展成拉锯战了。。。
procen424
    19
procen424  
OP
   2014-10-13 08:42:14 +08:00
@Gauin 事实证明,和传统文字验证码相比,机器非常容易通过极验的验证。而且,最令人震惊的是,只需要很简单的算法和极低的计算代价就能达到接近100%的通过率。
目前,他们的封禁处理仅仅是改个js代码里的计算式、后端加入ua检查。如果以后仍是这样的对策,而不改进核心的模式识别算法的话,前途非常堪忧。
est
    20
est  
   2014-10-13 08:45:28 +08:00
极验证思路是对的,但是方式不够狠。直接服务器判定各种资源请求先后以及参数正确性,少一个直接封IP。
procen424
    21
procen424  
OP
   2014-10-13 08:49:38 +08:00
@est 嗯。开始写脚本时还有这个顾虑呢,后来发现,我在得到challenge后就马上提交一个response,总耗时在500ms内,但response的数据号称是1500ms时完成滑动的,居然TMD都可以!笑死我了。。。
mornlight
    22
mornlight  
   2014-10-13 09:00:43 +08:00
我猜极验的程序员已哭晕在厕所...
kisshere
    23
kisshere  
   2014-10-13 09:03:29 +08:00 via Android
话说,客户端修改user-agent不是分分钟的事么,极限验证这种做法我就觉得不靠谱
matrix67
    24
matrix67  
   2014-10-13 09:18:10 +08:00
@est 那我拿着不全的参数整天在移动网络或者校园网络出口出发包,造成整个学校都上不了豆瓣的拒绝式服务攻击
est
    25
est  
   2014-10-13 09:21:28 +08:00
@matrix67 如果你能控制出口了,能干出来的事不仅这么点吧。
vuser
    26
vuser  
   2014-10-13 09:22:20 +08:00
“哪一列像素上开始发生较大变化那就是xpos”
极验改改这里呢
bigtan
    27
bigtan  
   2014-10-13 09:23:40 +08:00 via Android
@procen424 那个使用多少时间,打败了多少用户不就是抄360那个开机启动时间的玩法
bigtan
    28
bigtan  
   2014-10-13 09:31:51 +08:00 via Android
@est 你是说通过综合各种因素而不仅仅验证的正确性来判断?
sunocean
    29
sunocean  
   2014-10-13 09:39:41 +08:00
@ procen424 你就不能周一再公布吗?你让人家程序员大周末晚上还得加班。程序员何苦为难程序员啊,极验的程序员估计已经哭晕在厕所。
sunocean
    30
sunocean  
   2014-10-13 09:42:02 +08:00
@procen424 对于楼主这种行为我只想说三个字,干得漂亮
hewigovens
    31
hewigovens  
   2014-10-13 09:53:03 +08:00
刚试了下, 已经各种forbidden了
procen424
    32
procen424  
OP
   2014-10-13 09:54:11 +08:00
@vuser 在CAPTCHA图像上,极验未来的对策可能会有这些:1.取消fullbg;2.bg中加扰;3.动态bg,每张背景都不一样;4.多个slice阴影
解决方案:
A.寻找bg中灰度较大较一致、亮度较低的区域(已试验过此方法,与目前的朴素算法相比,误差为±3,但有个别图像不能正确识别)
B.基于轮廓的形状匹配算法
C.神经网络
长远来看,精心调教过的B方案,应该是极好的,能应付不是特别变态的变化。
C方案完全不懂,只是猜测。正好借这个机会学习一下。
procen424
    33
procen424  
OP
   2014-10-13 09:59:15 +08:00
@hewigovens 现在又加入referer的检测了
procen424
    34
procen424  
OP
   2014-10-13 10:00:03 +08:00
@bigtan 满满的360既视感哈哈哈哈
kisshere
    35
kisshere  
   2014-10-13 10:01:32 +08:00 via Android
@procen424 referer ip user-agent mac不是全都能伪造么
bigtan
    36
bigtan  
   2014-10-13 10:03:46 +08:00 via Android
更加严苛的算法验证带来的好处是更小可能性的二类错误,但是同时也会提高一类错误的可能性。
tonyup
    37
tonyup  
   2014-10-13 10:06:59 +08:00
本来拼图这活是需要人脑识别的,但把完整图片 fullbg 也传回客户端,这事再让机器干就容易多了。
procen424
    38
procen424  
OP
   2014-10-13 10:13:01 +08:00
@kisshere 伪造很容易。完全可以收集一些user-agent的模式,然后随机填版本号。至于referer,只有固定的那么几个。
procen424
    39
procen424  
OP
   2014-10-13 10:15:30 +08:00
@tonyup 完全不解他们这么做的用意
即便不传fullbg,如果每张bg的背景不发生变化,运气好只要两次就能拼出fullbg。
wangleineo
    40
wangleineo  
   2014-10-13 10:17:55 +08:00   3
赞楼主一个,这就是极客!

验证码校验是两个动作,识别+输入,现在的验证码之所以让人讨厌,主要的问题不是识别,而是输入太麻烦(现在有中英文数字混杂的校验码,还要切换输入法啊喂)。极验验证的确降低了输入的难度,但是同时也大大降低了机器识别的难度:图片什么的都是障眼法,其实原理上就是:在这条白线上有个黑点,请把鼠标拖动到黑点上,程序比比像素就能实现;关于行为的部分,我实在想不出除了鼠标移动速度不均匀之外,还能有什么特征,楼主的程序用随机数和正弦曲线就搞定了。

现在问题来了:怎样在降低输入难度的前提下,不降低识别难度?

我有个想法。图像识别在很大程度上还是机器很难解决的问题,可以用一个不规则形状的小图片覆盖在原图的随机位置上(在服务器端渲染),要求用户点击这个小图片中的物体。比如:“这个图片中有一只猫,请你点击这只猫“,对于用户来说,识别和输入都不难,但是对于机器来说,在图片中找到一只猫应该还是比较难的(虽然Google的技术已经能做到)。当然如果猫的小图片只有一个,很容易暴力破解(在所有标识猫的图片找相同的像素区域),但是这个猫的图片也可以有很多(各种颜色的猫,甚至机器猫),再加上随机的像素混淆,应该还是难于攻破的。
一开始想的是要求用户把一个滑块拖动到猫的位置,记录坐标轨迹。但想想所谓的”行为特征“如此容易随机生成,感觉没啥价值。还不如直接点击呢。

大家觉得怎么样?
7654
    41
7654  
   2014-10-13 10:41:37 +08:00
@wangleineo 遇到过这种验证码,图片上有几个文字,需要点亮正确的文字
其实google的那个被认为变态的验证码,不需要全部输入对,允许有错误的。它有两部分,其中一部分是实体影印出来的,用的人越多OCR识别也越高,对图书数字化有帮助
gkiwi
    42
gkiwi  
   2014-10-13 10:42:10 +08:00
@wangleineo 想法很好玩,可以是各种猫狗.

问题来了:
物品识别的算法目前已经有不少实现,一般只要人能看出的,机器都能识别出来轮廓,虽然他不晓得这个是什么,匹配下触发点击就好了,根本不需要像字母验证码那样子完全匹配.另外就是出现的东西一定要常见,而且图像中和他类似形状的很少,如果常见的话模式就容易匹配.

准确率说不好.

但这个依然是个好点子.
Showfom
    43
Showfom  
PRO
   2014-10-13 10:43:32 +08:00 via iPhone
最恶心的还是腾讯微博的拼图验证码
viaNull
    44
viaNull  
   2014-10-13 11:11:23 +08:00
留名学习
wangleineo
    45
wangleineo  
   2014-10-13 11:13:37 +08:00
@7654 是的,reCaptcha一个聪明的地方就是用人眼解决OCR做不到的识别。

@gkiwi 嗯,人类能做机器不能做的事情越来越少了。不过说到轮廓识别,背景图中一定也有些轮廓可以识别的,可以干扰机器的算法。
matrix67
    46
matrix67  
   2014-10-13 11:55:59 +08:00   1
@wangleineo reCaptcha更聪明的地方就是拿ocr失败的图来叫人识别,google的ocr已经失败了,所以你要破解reCaptcha相当于和google拼ocr

还有一点就是放两个,提个已经识别的,一个未知的,已知的通过大规模分布式人力验证
akfish
    47
akfish  
   2014-10-13 12:08:33 +08:00   6
几年前看到过一篇paper,用的是随机旋转的图片做验证码,用户需要把图片调整到正确的姿态。
因为目前没有通用的算法识别出任意图片的”上“方向是什么,对于人类则很简单。
akfish
    48
akfish  
   2014-10-13 12:12:36 +08:00
lshero
    49
lshero  
   2014-10-13 12:15:07 +08:00
http://www.cmpassport.com/
这种验证码有破解思路嘛
除了把题库全都下载下来
hustlzp
    50
hustlzp  
   2014-10-13 12:33:04 +08:00
LZ甚吊啊!
procen424
    51
procen424  
OP
   2014-10-13 12:34:16 +08:00
@wangleineo 遇见过这样的验证码,体验非常好。验证过程不仅涉及模式的识别,还有推导,这都是机器不擅长做的事,破解难度应该比较大。
matrix67
    52
matrix67  
   2014-10-13 12:34:29 +08:00
@lshero

http://imgcode.cmpassport.com:4100/getimage?clientid=9&rnd=0.908878123820685328

应该不是题库,随便改几个数字都有返回,
mornlight
    53
mornlight  
   2014-10-13 12:38:34 +08:00
@procen424 话说,你有研究过百度贴吧的那种汉字+拼音验证码么,感觉也很难识别的样子。
foxsaid
    54
foxsaid  
   2014-10-13 12:40:57 +08:00
@lshero
http://www.cmpassport.com/

如果是这样,暴力破解有难度吗?
假设我从A-Z,0-9无脑随机刷
tzrens
    55
tzrens  
   2014-10-13 12:41:04 +08:00
<script>alert('1')</script>
mornlight
    56
mornlight  
   2014-10-13 12:44:24 +08:00
@tzrens 少年,你不会想在V2搞XSS吧,这里不是一般的论坛
mornlight
    57
mornlight  
   2014-10-13 12:45:29 +08:00
@foxsaid 验证码哪来暴力破解,你提交一次验证码就换了啊。
procen424
    58
procen424  
OP
   2014-10-13 12:48:57 +08:00
@lshero 图案部分和其它内容没有重叠,很容易提取出来。既然是面向公众的验证码,要保证每个人都看得懂,图案肯定不会特别多。遍历所有图案,然后人工或者使用第三方资源标记。剩下的就是图形匹配和传统的文字验证码识别问题了,有很多成熟的方案。
下载题库貌似是避免不了。
因为网站没有失败惩罚机制,而且答案空间不大,随机猜测是个可行的办法。
kisshere
    59
kisshere  
   2014-10-13 12:50:15 +08:00 via Android
@tzrens 好高大上的一次xss攻击
9999999999999999
    60
9999999999999999  
   2014-10-13 12:51:13 +08:00
楼主敢不敢公布手机号?
binux
    61
binux  
   2014-10-13 12:56:36 +08:00
@mornlight A-Z,0-9,我随便用一个a,来个36次也有一次对啊。
procen424
    62
procen424  
OP
   2014-10-13 12:57:17 +08:00
@lshero 或者就一直提交一个固定的答案。比如A,因为每次的正确答案不过是大小写字母+数字中的一个,迟早有一次会碰到A。
这在注册垃圾账号时还能凑合用用,要是跑密码这种场景就太低效了。
当然,前提是验证流程不引入失败惩罚。
mornlight
    63
mornlight  
   2014-10-13 13:00:51 +08:00
@binux 噗,这种暴力啊,我刚才理解成对同一个验证码穷举了。这样的话只能怪网站没有失败惩罚机制吧,流程设计上就已经不完善了。
wangleineo
    64
wangleineo  
   2014-10-13 13:15:35 +08:00   1
@procen424 嗯,加上推导就更难了。”什么东西喵喵叫?请在图上点一点“ 哈哈
panlilu
    65
panlilu  
   2014-10-13 13:17:23 +08:00
看到楼主的append,感觉好逗啊哈哈哈哈,Good Job
sriuu
    66
sriuu  
   2014-10-13 13:18:32 +08:00
收藏留名,最喜欢看到这种东西了~ ~
procen424
    67
procen424  
OP
   2014-10-13 13:19:58 +08:00
@panlilu 刚才打开豆瓣那一刻,我也是忍俊不禁了。。。。。。
procen424
    68
procen424  
OP
   2014-10-13 13:25:03 +08:00
@panlilu 靠。。。现在首页登陆也要输文字验证码了。。。
lshero
    69
lshero  
   2014-10-13 13:31:17 +08:00
@foxsaid 错一次就换题了吧
wangleineo
    70
wangleineo  
   2014-10-13 13:44:39 +08:00
@akfish 三个作者都是Google的,Google果然在探索人和机器的边界哦
foxsaid
    71
foxsaid  
   2014-10-13 14:11:19 +08:00   1
@lshero 前面说过,它没有错误惩罚,我只需要输入A ,就有 1/36个机会正确。这个思路而已
airyland
    72
airyland  
   2014-10-13 14:14:53 +08:00
cool........
changsha
    73
changsha  
   2014-10-13 14:22:22 +08:00
hahahah
est
    74
est  
   2014-10-13 14:28:56 +08:00   1
@bigtan 是这个意思。所谓行为判断,就是有一点行为不符合预期,那就是异端。直接给咔嚓。比如命名请求一个html的时候,客户端是支持flash控件,紧跟着后一个,又不支持了,那么直接咔嚓。再比如用cavans探测字体是否安装。就算你用headless browser去完全模拟用户行为,也是能探测出蛛丝马迹的。
11138
    75
11138  
   2014-10-13 14:38:01 +08:00
我来总结一下吧:
传统方式的验证码比楼主提及的“基于行为的验证安全技术”的安全性提高144.78倍。

另外,昨天他们都用了什么方式来修复问题这也会让人怀疑他们的技术经验(不评论技术水平)不太足够。
qiushibaikeHR
    76
qiushibaikeHR  
   2014-10-13 15:02:33 +08:00
糗百需要这样的楼主来上班~
lshero
    77
lshero  
   2014-10-13 15:06:06 +08:00
@foxsaid 额,脑子抽了一下,没反应过来
ichou
    78
ichou  
   2014-10-13 15:12:49 +08:00
感觉好欢乐 极验的盆友这个月奖金估计没有了 哇咔咔~
matrix67
    79
matrix67  
   2014-10-13 16:37:04 +08:00
@lshero 我想出来这个验证码是怎么生成的,搞一个大的key-value对,对应文字-图片,每次生成后台随机取四个文字,与其中一个图片,五个元素组成一张验证码
gowithwind
    80
gowithwind  
   2014-10-13 16:41:09 +08:00
@matrix67 破解这个东西感觉还是容易,主要是建立足够大的特征库。
matrix67
    81
matrix67  
   2014-10-13 17:04:26 +08:00
@est 你太暴力了,有点白色恐怖时期党国的作风,还是关小黑屋吧
lshero
    82
lshero  
   2014-10-13 17:46:03 +08:00
@matrix67 关键是能画出这么多东西来我感觉还是蛮拼的
对了关于一直尝试输入A去破解的这种你说有没有可能某一个ip连续输入A的次数太多了
验证码以后选项就不会出现A了?
est
    83
est  
   2014-10-13 19:35:12 +08:00
@matrix67 哈哈。技术是中立的,看怎么用。比如可以用于付款的风控。
matrix67
    84
matrix67  
   2014-10-13 20:32:14 +08:00   1
@lshero 那就得写poc验证了,理论上他设计答案的时候应该36种均匀分布,如果有偏,必然能找到一种破解概率大于 1/36的答案。你的意思在于后台设计已经意识到连续暴力攻击,应该参考关小黑屋策略。

例如草榴社区就不是用验证码来阻挡的,5次错误后锁 ip 15分钟,对于穷举弱密码的攻击者来说,代价就挺大。

再例如,支付宝,5次之后锁密码3小时,但是为了防止有人恶意搞拒绝式服务攻击,他又有短信找回密码的策略,对正常人友好,让攻击者蛋疼。

所以,策略都是可以考虑叠加的,比如验证码加ip。

可以参考 范凯 有一篇反爬虫的博文,里面提到一种移动窗的思想。

没有银弹!!
messyidea
    85
messyidea  
   2014-12-01 23:44:25 +08:00
楼主简直不能再赞
akafeng
    86
akafeng  
   2014-12-23 21:51:37 +08:00
楼主这是极验的?
imwower
    87
imwower  
   2015-01-07 16:34:12 +08:00
@wangleineo 谷歌最新的noCaptcha就是看图识别猫咪或者其他东西;
基于语义的词语联想,可以作为验证码的一种模式。比如:
问题:橘子又叫什么?给出几个随机字符,随机排列(像《疯狂猜图》那样)然后让用户点击鼠标,选择正确的答案。(正确答案为:桔子)
其他类似的问题:米饭是由什么做成的?
题库可以由其他用户提供;也可以训练人工智能的问答助手等。
xierch
    88
xierch  
   2015-01-19 20:06:06 +08:00
赞。
刚又看到一家用极验验证的,怎么想都不靠谱。
想来 V2EX 会有讨论,果然不靠谱..

这种方式还是要积极 fallback 到传统验证码才妥当,就像现在 reCAPTCHA 的门牌号一样
nanhuo
    89
nanhuo  
   2015-06-12 10:09:39 +08:00
哈哈,赞一个,我们也用的极验验证。。
no2oo3
    90
no2oo3  
   2015-06-15 02:02:14 +08:00
@procen424 最近都在研究极验的验证,正好搜索到你的大作,无奈原文中的go代码https://github.com/procen424/scripts/blob/master/geetest-bypass.go无法下载了,能否传一个给我?感谢
alilialili
    91
alilialili  
   2016-05-31 09:32:25 +08:00
SingeeKing
    92
SingeeKing  
PRO
   2017-01-07 15:52:19 +08:00 via iPhone
我是回来观望的

ps.我怎么记得 append 最多只能有三条
QUIOA
    93
QUIOA  
   2020-01-20 22:04:25 +08:00 via Android
你的 github 没了
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3194 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 30ms UTC 11:19 PVG 19:19 LAX 03:19 JFK 06:19
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