Greasy Fork is available in English.

硕鼠跳过前置广告

跳过「为了保护视频网站的合法权益,需要观看广告后才能下载。」提示。

Auteur
Jixun.Moe
Installations quotidiennes
0
Installations (total)
4 536
Notes
68 0 1
Version
0.3
Créé
16/07/2015
Mis à jour
02/01/2016
Compatibilité
Compatible avec Firefox Compatible avec Chrome
Licence
N/A
S'applique à

广告系统已经撤了


硕鼠即将上线解析前置广告系统

更新:
2015.11.29: 跟进新版广告代码,低调使用,且用且珍惜。 2016.01.02: 继续修正,应该能存活久一点。

原文:

粗略看了下代码,并不是很复杂。

页面有类似下面的脚本:

// 此处应有混淆过的代码
//   .....
var avdGgggg='0123456789abcdef0123456789abcdef';
var avdGggggtt=1443322110000;

这两个值就是用于取得序号的关键变量。

然后把加密后的脚本拆开:

var avdOk = false;
var config = null;
function avdPlay(a, b) {
    $("#adpopup").css({width: 960,height: 540});
    TSPopup.showDiv('adpopup');
    config = {ads: [{url: a,clickthrough: b}],playOverCallback: "avdCallback"};
    doPlay()
}
function doPlay() {
    if (!avdOk) {
        window.setTimeout(doPlay, 100);
        return
    }
    var a = thisMovie("avd");
    try {
        a.setup(config);
        a.doPlay()
    } catch (e) {
        gogogo();
        return
    }
}
function avdCallback() {
    TSPopup.closeDiv();
    $("#adpopup").css({display: "block",width: 0,height: 0});
    gogogo()
}
function thisMovie(a) {
    return swfobject.getObjectById(a)
}
var errorStart = 0;
function errorPlay() {
    $("#avd").remove();
    $("#adshow").css({display: "block"});
    $("#adpopup").css({width: 700,height: 540,overflowY: "auto"});
    TSPopup.showDiv('adpopup');
    errorStart = new Date().getTime() / 1000;
    window.setTimeout(doErrorPlay, 1000)
}
function doErrorPlay() {
    var e = new Date().getTime() / 1000;
    var t = Math.floor(e - errorStart);
    if (t > 20) {
        gogogo();
        return
    }
    $("#adtime").html((20 - t) + "秒后开始解析");
    window.setTimeout(doErrorPlay, 1000)
}
function gogogo() {
    var g = createSc(avdGgggg, avdGggggtt);
    var a = new Date();
    a.setTime(a.getTime() + 300 * 1000);
    document.cookie = "go=" + g + ";expires=" + a.toGMTString();
    window.location.reload()
}

avdPlay 这个是广告链接的入口,单击后触发。阅读这个函数后,猜测 avdCallback 为广告播放时或完毕后的回调。

然后顺藤摸瓜,发现实质上是调用 gogogo 函数加入「广告已浏览」的小饼干并刷新 (真是好懂 /w\)。

服务器无二次强制验证,点赞。

土豆视频貌似强制需要使用客户端进行解析 (分明和优酷一家了),无解。

且用且珍惜。