准备工作
还没有看过《一步一步教你刷【极客学院VIP会员】(一)之原理分析》的读者,请先移步到这里。
先注册好一个极客学院的账号,然后进入到http://e.jikexueyuan.com/invite/invite.html
小编使用的测试浏览器是Chrome 版本 46.0.2490.86 (64-bit)
开始着手
http://e.jikexueyuan.com/invite/invite.html 页面截图:
走一遍正常邀请小伙伴的流程
http://e.jikexueyuan.com/invite/index.html?ZnJvbV9jb2RlPVZTUlU1MCZ1bmFtZT1oZWxsc2FtJmNoYW5uZWw9aW52aXRlX3NoYXJlYnV0dG9uX2RpcmVjdDA0不管是通过第三方平台分享或者直接复制得到有用内容都是上面的一个链接。
打开上面的链接就进入到注册页面了,如图:
- 随便填一个手机号码,手机验证码也随便填,开好chrome的网络调试工具,点击注册,抓包得到的请求信息如下图:
我们可以看到请求的地址是:
http://passport.jikexueyuan.com/submit/reg_phone
参数有:
jsoncallback:jQuery21305480092712678015_1450081324705 //可无视,可以不传
is_ajax:1 //固定内容,写死就行
phone:13787876566 //注册的手机号码,飞码接口得到的手机号码
verify_code:123123 //短信验证码,飞码接口接收到的短信验证码
password: //密码,自己设定
verify:0631 //图形验证码,云速接口识别
event:friend_code //固定内容,写死就好
from_code:VSRU50 //这就是我们寻寻觅觅的邀请码,还不知道怎么得到
refrere:http://e.jikexueyuan.com/invite/index.html?ZnJvbV9jb2RlPVZTUlU1MCZ1bmFtZT1oZWxsc2FtJmNoYW5uZWw9aW52aXRlXzEwMHdfc2hhcmVidXR0b25fY29weTE=
//邀请的地址,就是我们之前打开进入注册页面的地址,还不知道怎么得到
client:www //无视,可以不传
_:1450081324713 //无视,可以不传
通过程序员的直觉分析,from_code
就是所谓的邀请码,是跟用户账号一一对应的。
那这个邀请码是从哪里来的呢???
于是乎,小编又去请求了一遍http://e.jikexueyuan.com/invite/index.html?ZnJvbV9jb2RlPVZTUlU1MCZ1bmFtZT1oZWxsc2FtJmNoYW5uZWw9aW52aXRlX3NoYXJlYnV0dG9uX2RpcmVjdDA0,通过抓包查看各种返回信息,又查看网页源代码,依然未能发现VSRU50
的踪迹。
正当迷惑不解的时候,喝了一瓶AD钙奶
,顿时思如泉涌_
想到在邀请页面不管是通过第三方分享还是直接复制得到最终有用信息都只是一个链接。因此通过程序员第六感判断,邀请码信息肯定藏在这个链接中。此时我注意到了链接后面的一长串内容
ZnJvbV9jb2RlPVZTUlU1MCZ1bmFtZT1oZWxsc2FtJmNoYW5uZWw9aW52aXRlX3NoYXJlYnV0dG9uX2RpcmVjdDA0
这一看就知道是Base64加密的,不要问我是怎么知道的_
赶紧找一个Base64在线解密网站http://www1.tc711.com/tool/BASE64.htm,(随便百度到的,这样的网站很多), 解码结果如下图:
from_code=VSRU50&uname=hellsam&channel=invite_sharebutton_direct04
终于见到熟悉的VSRU50
,此时就如梦中情人突然出现了在你的面前般的兴奋。
这几个参数也都比较好理解
from_code=VSRU50 //邀请码
uname=hellsam //邀请人的用户名
channel=invite_sharebutton_direct04 //固定内容
此时,隐隐的觉得好像哪里不太多,邀请码是通过解密链接中的加密内容得到的,链接中的加密内容又是邀请码和用户名等信息加密得到的,好像进入死循环了@_@
真是百思不得其姐~
再重新理一下思路,后台应该是新用户注册了,就会为该用户生成一个唯一的邀请码,此时就有两种猜想:
后台传到前端的就是链接后面的
ZnJvbV9jb2RlPVZTUlU1MCZ1bmFtZT1oZWxsc2FtJmNoYW5uZWw9aW52aXRlX3NoYXJlYnV0dG9uX2RpcmVjdDA0
这段内容。后台传到前端的是
from_code=VSRU50&uname=hellsam&channel=invite_sharebutton_direct04
这些内容,再加密成链接给用户看到的。
根据程序员的第六感判断,第二种应该更靠谱一些,所以优先尝试第二种。
下面抓下登录的包看看,返回的信息里面有没有我们要的信息。抓包截图如下(记得勾上Preserve log不然页面跳转了之前的记录就没有了):
请求地址:
POST
http://passport.jikexueyuan.com/submit/login?is_ajax=1&client=www
请求参数:
expire=7&referer=http%3A%2F%2Fwww.jikexueyuan.com%2F&uname=hellsam&password=xxxxxx&verify=1392
注意Response Headers里面的信息,里面uname
、code
都有,终于所有需要的信息都可以得到了✌️
经过实践,注册成功的Response Headers里面同样有这些信息,那么只要注册成功后把邀请码和用户名存起来,之后邀请链接后面的一串加密内容也可以通过邀请码和用户加密得到了。
总结一下
- 每个账号注册成功后,把获取到的用户名和邀请码保存起来
那么注册接口里面的参数就都能获取到了
jsoncallback:jQuery21305480092712678015_1450081324705 //可无视,不用传
is_ajax:1 //固定内容,保持一致就行
phone:13787876566 //注册的手机号码,飞码获取的手机号码
verify_code:123123 //短信验证码, 飞码获取的短信验证码
password: //密码,可以随机生成密码,也可固定一个
verify:0631 //图形验证码, 用云速识别
event:friend_code //固定内容, 保持一致就行
from_code:VSRU50 //这就是我们寻寻觅觅的邀请码,已经存下了
refrere:http://e.jikexueyuan.com/invite/index.html?ZnJvbV9jb2RlPVZTUlU1MCZ1bmFtZT1oZWxsc2FtJmNoYW5uZWw9aW52aXRlXzEwMHdfc2hhcmVidXR0b25fY29weTE=
//邀请的地址,就是我们之前打开进入注册页面的地址,后面这段`from_code=邀请码&uname=用户名&channel=invite_sharebutton_direct04`Base64加密这段信息就能得到了
client:www //无视
_:1450081324713 //无视
这时,我们可以判断,这个方案是可行的,接下来就差代码实现了_
本文只做纯粹的技术探讨。
敬请期待《一步一步教你刷【极客学院VIP会员】(三)之代码实现》
因本文内容具有一定时效性(当极客学院网站有改动后,本文方案可能就无效了),所以还请正在阅读本文的你如果发现本文方案已失效,在评论区提醒小编和其他读者,万分感谢!
欢迎留言交流,如有描述不当或错误的地方还请留言告知。
自建博客: http://hellsam.com/
CSDN博客: http://blog.csdn.net/qp23401
博客: http://www.jianshu.com/users/8af058e7d824/latest_articles