articles icon indicating copy to clipboard operation
articles copied to clipboard

我如何用前端技术得到XXOO网站的VIP

Open Wscats opened this issue 9 years ago • 126 comments

网页如图,这里只是说明整个网站的一些技术点,所以不该看的地方我都打上马赛克了,让我们揭开这些网站的整个前端工作原理 image 首先刚进去的时候显示一堆乱七八糟的东西,点进去其中一个页面,下面各种虚假评论,然后每隔几秒钟弹出第几几几个会员充值成功,我们先把这个删掉 image 好了,我们继续研究这个网站内部结构了 正常情况每个页面的视频都是试看几十秒就会提醒你充值,当然这是这类网站的常规套路,我们在浏览器的Network观察加载的js,我们可以看到里面这段代码 image 这是一份叫做lsj.mp4.js的代码的其中一部分,我们可以看到里面有个关键的判断,具体就是判断你是否是会员,如果是那就根据类型是否是2返回play_url_arr_oumei数组和play_url_arr数组拼接一个url给你,如果你不是会员的话就进入试看的判断,很清晰的看到有一个url,那就是试看的短视频的路径

var isvip = getCookie('lsjyy');
if(isvip != undefined && isvip != ''  && isvip.match(rgExp)){}else{}

上面这两句还告诉我们第二个关键点就是我们可以根据isvip的cookie值来伪造身份,这个cookie就是保存到我们的本地浏览器上,所以如果我们能成功改写它的话我们就能变成会员绕过这个判断,这份代码已经封装好getCookie,所以我们可以在控制台直接调用来改写cookie值,但是问题来了,我们应该改成什么值才能绕过判断呢,我们继续看源代码搜索答案

function getMp4Url() {
        var play_name = getParam('play_name');
        var type = getParam('type');
        var rgExp =/^(v|V)[i|I|p|P|0-9]{2,3}$/g;
        var isvip = getCookie('lsjyy');
        var pic = $('.movie-pic img').attr('src');
        var html = '<img src="'+pic+'" style="height:auto; width:100%;display: none;">';
        html = '';
        var play_url = '';
        //vip会员
        if(isvip != undefined && isvip != ''  && isvip.match(rgExp))
        {
            var play_mp4 = getCookie('play_mp4');
            if(type == 2)
            {
                play_url = play_url_arr_oumei[play_rand2];

            }else{
                play_url = play_url_arr[play_rand];

            }
        }
        //试看
        else if(( play_name != '')&&(play_name != 'undefined'))
        {
            
            play_pic = 'http://oewx8de7n.qnssl.com/9e0120cv23/images/'+play_name+'.jpg';
            play_url = 'http://oewx8de7n.qnssl.com/9e0120cv23/images/mp4/'+play_name+'.mp4';
        }
        else
            play_url =  "http://su.cywl5.com/sy/h34.mp4";
        return play_url;
}

在lsj.pay.js?v=256这份代码的279行中我们又找到了一个线索,我们从代码看到,如果支付成功会在本地浏览器设置用户的cookie值,有两个关键的值出现了,分别是lsjlsjyy lsj

setCookie('lsj', pay_tee, 'd730');

lsjyy

setCookie('lsjyy', 'vip', 'd730');

其实我想了很久这个名字跟vip有什么关联,估计这个网站的作者想写的是老司机和老司机YY的意思吧,不过不管它是什么意思,现在只要我们尝试用它封装好的setCookie方法自己改写这两个cookie值,就能在本地顺利成为会员,绕过刚才的判断条件了 lsj.pay.js

function checkOrderStatus() {
    $.post("./pay/ok.php?action=check&uid="+getCookie('user'), function(data) {
        var pay_tee = Number(data);
        if (pay_tee >= 1) 
        {
            ispay = 1;
            ispay = true;
            var lsj = getCookie('lsj');
            if(lsj == null) lsj = 0; 
            if(pay_tee > lsj)
            {    
                setCookie('lsj', pay_tee, 'd730');
            }
        }   
        if ((pay_tee > 0)&&(pay_tee <= s_v1_money)) 
        {
            setCookie('lsjyy', 'vip', 'd730');
        }
        else if ((pay_tee > s_v1_money)&&(pay_tee <= s_v2_money)) 
        {
            setCookie('lsjyy', 'vip2', 'd730');         
        }
        if (pay_tee >= 1) 
        {
            var dt1 =Math.round(new Date().getTime()/1000);
            setCookie('lsjtime', dt1, 'd730');
            setCookie("isPayClick",0, 'd1');
            var isPayClick = getCookie("isPayClick");
            if (isPayClick == 0)
                window.location.reload(); 
        }
       // el_checkpay.hide();
    })
} 

其实往下也可以看到有一个clearVIP函数,更肯定了刚才我们的结论,VIP和非VIP其实就是这两个值在作怪,所以我们默认的值应该就是clearVIP函数设置的值

function clearVIP()
{
    setCookie("lsjyy",0, 's1');
    setCookie("lsj",0, 's1');
}

如下图,我们在浏览器执行这两个函数,执行成功后我们就能看到cookie被成功改写 image image 在这里我设置lsjyy为vip2,当然我在后面测试的时候发现这两个值貌似没什么区别 image

然后我们可以用lsj.pay.js第179行的showpay函数来检测是否已经是成功变成VIP

function showpay() {
    var rgExp =/^(v|V)[i|I|p|P|0-9]{2,3}$/g;
    var isvip = getCookie('lsjyy');
    if(isvip != undefined && isvip != ''  && isvip.match(rgExp))
    {
        alert('您已经是vip了哦.');
        return false;
    }
   //省略后面的代码
}

如果成功完成上面的步骤,我们在控制台输入showpay()就会看到下图这个弹窗,那证明我们已经成功升级为VIP... image 我们再次进入其中一个带有视频的网页看看变成VIP会会真的有VIP的"待遇",我们发现页面内容块变成了空白,控制台报了下面这个错,那是提示有一个值叫play_rand没有定义,其实来到这里我们已经发现我们已经绕过了刚才会员判断,进入我们是会员的判断分支,只是因为一个未定义的值停止了代码的运行 image image 由于这个值我们可以看到是一个数组的索引值,所以我们在控制台全局定义

var play_rand = 1

image 我们把id为play-html节点的元素样式设置diplay为显示,我们就可以看到正常的播放器出来了 image 分析源码得知,它大概的工作原理就是根据url的参数,比如play_nameplay_type,根据你是否VIP然后加载播放器播放拼接完的URL,play_name还含有undefined很不科学,说明有些视频根本只有图没有源 打开play.html查看里面的源代码,可以看到视频的链接源 play.html第21行

<script type="text/javascript">
    var cdn_url = 'http://oewx8de7n.qnssl.com/9e0120cv23';
</script>

往下面看我们可以看到刚才play_rand选取的对应的那个视频,事实上play_url_arr_oumeiplay_url_arr数组已经定义好了VIP可以观看的这十几个视频,所以不管怎么样付钱后都是看这十几个里面的其中一个,在这里其实已经可以自己拼接对应的链接进入相应的视频 play.html第324行

var play_url_arr_oumei=new Array();
    play_url_arr_oumei[1]=cdn_url+"/vip/2/om_1.mp4";
    play_url_arr_oumei[2]=cdn_url+"/vip/2/om_2.mp4";
    play_url_arr_oumei[3]=cdn_url+"/vip/2/om_3.mp4";
    play_url_arr_oumei[4]=cdn_url+"/vip/2/om_4.mp4";
    play_url_arr_oumei[5]=cdn_url+"/vip/2/om_5.mp4";
    play_url_arr_oumei[6]=cdn_url+"/vip/2/om_6.mp4";
    play_url_arr_oumei[7]=cdn_url+"/vip/try7.mp4";
    play_url_arr_oumei[8]=cdn_url+"/vip/try8.mp4";
    play_url_arr_oumei[9]=cdn_url+"/vip/try9.mp4";
    play_url_arr_oumei[10]=cdn_url+"/vip/try10.mp5";
    var play_url_arr=new Array();
    play_url_arr[1]=cdn_url+"/vip/try1.mp4";
    play_url_arr[2]=cdn_url+"/vip/try2.mp4";
    play_url_arr[3]=cdn_url+"/vip/try3.mp4";
    play_url_arr[4]=cdn_url+"/vip/try4.mp4";
    play_url_arr[5]=cdn_url+"/vip/try5.mp4";
    play_url_arr[6]=cdn_url+"/vip/try6.mp4";
    play_url_arr[7]=cdn_url+"/vip/try7.mp4";
    play_url_arr[8]=cdn_url+"/vip/try8.mp4";
    play_url_arr[9]=cdn_url+"/vip/try9.mp4";
    play_url_arr[10]=cdn_url+"/vip/try10.mp4";

当然我们为了证明我们刚才上面的推测,我们可以在控制台把lsj.mp4.jsgetMp4Url函数执行一次

image

我们可以看到一个可用的链接就这样出现了 当然你可以再执行如下代码,让它在网页端执行,关键就是用playHtml3函数加载播放器,并打开拼接好的视频链接,有时候加载的是一张图片,更有时候加载的视频链接也根本无法播放,其实不管是否会员,最后也只是播放在页面最后定义好的那十几个视频,支付变成会员只是它们把数据入库,然后帮你设置个cookie的过程而已 当然这些网站的前端人员的代码和注释还是挺可笑的 image

image 至此,就可以看懂这种网站的工作原理了,所以遇到小心上当了

Last Update 2016.12.26

技术本身不可耻,可耻的是滥用技术的人! 后续更多内容可关注作者本人@Wscats或者Star本文

Wscats avatar Dec 24 '16 00:12 Wscats

哈哈哈,666~~~

chaoren1641 avatar Dec 24 '16 13:12 chaoren1641

谢谢博主拉住了我

weigram avatar Dec 24 '16 14:12 weigram

推上掘金了,目测要火,赶紧占座!

Nico-M avatar Dec 24 '16 15:12 Nico-M

火钳留名

Lnybb avatar Dec 24 '16 19:12 Lnybb

厉害了我的哥

L807217649 avatar Dec 25 '16 02:12 L807217649

厉害了word哥

ericjee avatar Dec 25 '16 04:12 ericjee

咸鱼666

webchenzj avatar Dec 25 '16 08:12 webchenzj

66666,现在就没有地方不能开车!老哥,稳

ontoone avatar Dec 25 '16 09:12 ontoone

这车开的稳!

dongcanliang avatar Dec 25 '16 11:12 dongcanliang

厉害

flippancy avatar Dec 25 '16 15:12 flippancy

666

gywgithub avatar Dec 26 '16 00:12 gywgithub

学习了,好人一生平安

xzjs avatar Dec 26 '16 01:12 xzjs

老哥稳,真心为技术

forzalianjunting avatar Dec 26 '16 01:12 forzalianjunting

污污污~~~开火车喽,哪个网站?

Jevirs avatar Dec 26 '16 01:12 Jevirs

厉害了,word哥!

xCss avatar Dec 26 '16 01:12 xCss

老哥稳,上车了

xbini avatar Dec 26 '16 01:12 xbini

老司机

nerona avatar Dec 26 '16 01:12 nerona

到最后博主也没一声叹息,果然是为了技术!

xsank avatar Dec 26 '16 01:12 xsank

老哥稳!

warpcgd avatar Dec 26 '16 02:12 warpcgd

我在想,博主的初忠是什么? 应该只是为了技术....唉

keyus avatar Dec 26 '16 02:12 keyus

@20141125 发车了

hezhongfeng avatar Dec 26 '16 02:12 hezhongfeng

厉害

zlab avatar Dec 26 '16 02:12 zlab

其实有那么几个瞬间 我也想这么搞来着 不过几分钟过后 就进入贤者时间

my19940202 avatar Dec 26 '16 03:12 my19940202

问个问题,为什么不直接用chrome插件editthiscookie直接修改cookie,这样不是来的更快?

@HankBu 不用插件的原因是执行纯前端的JS方法在Console(即控制台)修改其实来得更快更直接,并且我也没装editthiscookie这个插件,安装这个插件还要_FQ_,所以就嫌这个麻烦了,宁愿敲多几行代码,不大习惯可视化了,不过还是谢谢您的建议~From @Wscats

HankBu avatar Dec 26 '16 03:12 HankBu

恕我直言 真的稳 可以百度wapyy 668 (╭ ̄3 ̄)╭♡

w5a2n02016 avatar Dec 26 '16 06:12 w5a2n02016

吓得我赶紧收藏了,毕竟这种好技术要多看,多学

crushjjl avatar Dec 26 '16 07:12 crushjjl

66666

ghost avatar Dec 26 '16 07:12 ghost

w(゚Д゚)w 。。。

不堪入目啊~~ (¯﹃¯)

hechunhi avatar Dec 26 '16 08:12 hechunhi

滴~学生卡👨‍🎓

jingxinxin avatar Dec 26 '16 11:12 jingxinxin

666

xjccc avatar Dec 27 '16 01:12 xjccc

6666666

Elliott-Hu avatar Dec 27 '16 01:12 Elliott-Hu

老哥稳如狗

BertieGo avatar Dec 27 '16 01:12 BertieGo

滴滴滴,老年卡

cleartime avatar Dec 27 '16 01:12 cleartime

吓得我赶紧把书签都删了。。

Coder-ZJQ avatar Dec 27 '16 01:12 Coder-ZJQ

666!果然欲望是人类进步的一大动力!

pmkx2 avatar Dec 27 '16 01:12 pmkx2

代码居然没压缩

420697228 avatar Dec 27 '16 01:12 420697228

竟然在前端修改cookie,而且竟然是用cookie来判断,呵呵呵

guandaxia avatar Dec 27 '16 02:12 guandaxia

稳的一B。

urtrcc avatar Dec 27 '16 03:12 urtrcc

火前留名

qbhy avatar Dec 27 '16 05:12 qbhy

地址没法访问啊

vincentdou avatar Dec 27 '16 08:12 vincentdou

噗哈哈哈哈哈哈哈哈哈阿哈哈

ziyingjie avatar Dec 27 '16 08:12 ziyingjie

6666

huangyihai avatar Dec 27 '16 08:12 huangyihai

暴露了地址

cuining avatar Dec 27 '16 10:12 cuining

1024

wudashan avatar Dec 27 '16 14:12 wudashan

地址挂了,百度的也没用。

sisx avatar Dec 27 '16 14:12 sisx

老哥稳

yohoj avatar Dec 27 '16 15:12 yohoj

嘀嘀嘀 请充值http://su.cywl5.com/sy/h34.mp4

AnXiaoWu avatar Dec 27 '16 16:12 AnXiaoWu

老司机啊

leowang1028 avatar Dec 28 '16 03:12 leowang1028

可啪!

jack4red avatar Dec 28 '16 05:12 jack4red

上班根本不打打开这上面的任何一个链接

Darkbish avatar Dec 28 '16 07:12 Darkbish

一看就是一个很挫的网站,代码不混淆不压缩,估计也没什么“好”视频资源

jimxiang avatar Dec 28 '16 08:12 jimxiang

厉害厉害

hellokaton avatar Dec 28 '16 08:12 hellokaton

这个网站都不压缩代码的吗

ganchengyuan1990 avatar Dec 28 '16 09:12 ganchengyuan1990

上车~

esc95 avatar Dec 28 '16 11:12 esc95

上来看看有没有超载

majianghai avatar Dec 28 '16 13:12 majianghai

把会员信息存在COOKIE里的网站。。。

artoriuspendragon avatar Dec 28 '16 16:12 artoriuspendragon

老哥稳啊

CarterZhou avatar Dec 28 '16 22:12 CarterZhou

我就想知道最后那个截图的视频,是哪部影片O(∩_∩)O

tongdengda avatar Dec 29 '16 00:12 tongdengda

暴露了地址

Heqingsong avatar Dec 29 '16 01:12 Heqingsong

火前留名

ghost avatar Dec 29 '16 01:12 ghost

牛人的厉害之处就在于去追寻好奇的根源

Mr-Lihuafei avatar Dec 29 '16 01:12 Mr-Lihuafei

不明真相的吃瓜

zuoliang0 avatar Dec 29 '16 01:12 zuoliang0

老司机开车了

zongzi531 avatar Dec 29 '16 01:12 zongzi531

厉害了 word哥

magicbai avatar Dec 29 '16 02:12 magicbai

滴 陕西人民卡

pgyf avatar Dec 29 '16 02:12 pgyf

污污污~

lexlin237 avatar Dec 29 '16 02:12 lexlin237

厉害了

maidi-yang avatar Dec 29 '16 03:12 maidi-yang

表示确实是这样的 以前被坑过 支付过50左右 发现还是那样的

justforgit avatar Dec 29 '16 03:12 justforgit

上车再说~

unclemeric avatar Dec 29 '16 03:12 unclemeric

iLayPark avatar Dec 29 '16 04:12 iLayPark

滴 老司机卡 !!!!!

这才是真正的老司机啊! 另外问下楼主用qiniu 是要缓存视频慢慢欣赏么‘? image

imxieke avatar Dec 29 '16 05:12 imxieke

厉害了,留名

Doracoin avatar Dec 29 '16 05:12 Doracoin

留名。。。。。。。。。。。

alphater avatar Dec 29 '16 09:12 alphater

留名,,,,,,,厉害了!

ducp123 avatar Dec 29 '16 09:12 ducp123

厉害了,Word老哥

liuchuangjun321 avatar Dec 29 '16 11:12 liuchuangjun321

厉害

zhangzs000 avatar Dec 29 '16 11:12 zhangzs000

厉害

UncleLLD avatar Dec 29 '16 11:12 UncleLLD

果然火了

laokey avatar Dec 29 '16 12:12 laokey

已上车

MrYulong avatar Dec 29 '16 12:12 MrYulong

6了

BakerYoung avatar Dec 29 '16 12:12 BakerYoung

厉害了我的哥

fansongyuan avatar Dec 30 '16 01:12 fansongyuan

搞it的就是省钱小能手啊

jepeng-miao avatar Dec 30 '16 01:12 jepeng-miao

看到最后才发现,原来是老司机。

also1024 avatar Dec 30 '16 02:12 also1024

老哥稳~

souce avatar Dec 30 '16 02:12 souce

我感觉我要踏入一个新的世界了

roronoachopper avatar Dec 30 '16 03:12 roronoachopper

好气人啊,明明充值了钱,可网站才只有10个视频资源。我要揭发这种黑心的网站。嘿嘿嘿

lazyphp avatar Dec 30 '16 03:12 lazyphp

神特么我一开始以为是一篇普通的技术分享,直到我看见了波多野结衣的名字

HujiLee avatar Dec 30 '16 04:12 HujiLee

学习了

liruihaod avatar Dec 30 '16 05:12 liruihaod

9monsters avatar Dec 30 '16 06:12 9monsters

厉害了, word哥

xn4545945 avatar Dec 30 '16 20:12 xn4545945

膜拜楼主0..0

21kShaohua avatar Dec 31 '16 02:12 21kShaohua

不愧老司机

lovecn avatar Jan 01 '17 12:01 lovecn

都可以通过吗?

JAKOBYU avatar Jan 01 '17 14:01 JAKOBYU

老哥真心稳!

Crazyleofeng avatar Jan 02 '17 06:01 Crazyleofeng

滴 学生卡 !!!!!

ovoide avatar Jan 03 '17 02:01 ovoide

已折服666666666666666666,稳稳的性福

chuquancai avatar Jan 03 '17 03:01 chuquancai

可以啊 我居然在sf上发现你这篇东西了, 真老司机啊...

RoygiShiki avatar Jan 03 '17 06:01 RoygiShiki

抱紧,滴,学生卡

q847143940 avatar Jan 03 '17 06:01 q847143940

滴滴滴,学生卡

marsprince avatar Jan 03 '17 10:01 marsprince

老哥稳

orsiro avatar Jan 05 '17 02:01 orsiro