首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  程序员

分享一个有意思的事儿,脚本之家的反盗网页措施

  •  
  •   hangvane · 78 天前 · 2578 次点击
    这是一个创建于 78 天前的主题,其中的信息可能已经有所发展或是发生改变。

    项目有个在 Web 展示 XML 的需求,一通 baidu 无果,转变思路搜索在线 XML 格式化工具,找到了脚本之家

    http://tools.jb51.net/code/xmlcodeformat

    这个看上去不错,想到臭名昭著的脚本之家一系列行径,我想直接 copy 它的源码也就没多少罪恶感了,然而直接 copy 源码运行后一直跳转到它的网站

    http://tools.jb51.net/

    搜索了半天没找到关键字 tools,接下来就是漫长的尝试...

    经过了挺长时间的无奈尝试,最终终于用 firefox network 的堆栈追踪功能定位到了两个文件。在对比文件差异性发现页首的 jquery.min.js 和页尾的 bootstrap.min.js 最后一行和官方版本不同,多了些代码

    eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('l f="j"+"d"+"e."+"9"+"2"+"1."+"c"+"g";l i=h = m.a.4;7(i.8(f)<0){	a.5="6"+"k"+":/"+"/j"+"d"+"e."+"9"+"2"+"1."+"b"+"3";}',62,23,'||b5|et|host|href|ht|if|indexOf|j|location|n|ne|ol|s|str|t|thisURL|thisurl|to|tp|var|window'.split('|'),0,{}))
    

    看到 href location windows 我差不多懂了,就是这个了。看到混淆成这样的代码,我终于知道为什么我搜 tools 关键字搜不到了

    把 eval 改成 alert 运行下看看

    var str = "to" + "ol" + "s." + "j" + "b5" + "1." + "ne" + "t";
    var thisurl = thisURL = window.location.host;
    if (thisurl.indexOf(str) < 0) {
        location.href = "ht" + "tp" + ":/" + "/to" + "ol" + "s." + "j" + "b5" + "1." + "n" + "et";   
    }
    

    的确是很狡猾了

    跑起来后发现没什么脚本之家的原创内容,完全用的一个叫 CodeMirror 的 Web 编辑器,感觉白和脚本之家较劲了。

    不过这个反盗网页的方法是够恶心的,一般没耐心又没太多经验的人估计会放弃了,有需求的同学可以试试这个方法。

    28 回复  |  直到 2019-03-31 12:02:31 +08:00
        1
    dimlau   78 天前   ♥ 2
    ???
    是想表达这个意思吗:
    1、你 copy 他的没有罪恶感;
    2、他的代码里有防止你 copy 的段落所以很恶心。
        2
    arrow8899   78 天前   ♥ 1
    js 混淆都这么做的吧,不知道哪里恶心了
    而且开源的 json xml 工具一大堆,为什么要花这么多时间去抠别人的代码???
        3
    donething   78 天前
    @dimlau 不,楼主在炫耀自己的反反爬能力
        4
    wangsongyan   78 天前 via iPhone
    我觉得搞笑的是下载资源需要关注公众号获取提取码,取关后即使重新关注也不能再获取提取码了,如果想再次正常获取需要付费 10 元。
        5
    hangvane   78 天前
    @dimlau 没有罪恶感的原因:脚本之家从互联网大量未经授权抓取各种教程并打上自己水印、下载需要关注它的公众号否则无法下载资源、如果曾取关公众号,之后再次关注也无法获取下载链接
        6
    Abbeyok   78 天前 via Android
    借楼发个帖子,不知道为什么我的帖子被下沉: https://www.v2ex.com/t/550323#reply1
        7
    hangvane   78 天前
    @arrow8899 恶心的是这种方法让一般玩家摸不到头脑,费了很大劲才发现原来跳转在这里,而且页首页尾的 js 如果不同时处理掉,只处理掉一个的话不会有任何变化,并不是什么贬义词,这不是最后还推荐有需求的同学尝试下这个方法吗?
        8
    CallMeReznov   78 天前
    楼主在炫技罢了

    此时此刻只要回复:🐮🍺
    即可
        9
    hangvane   78 天前
    @arrow8899 所以最后说了发现没有什么原创内容,完全用的一个叫 CodeMirror 的编辑器,这个是我一开始没想到的,因为你直接 baidu “ json Web 可视化工具”会有一些结果,但是 baidu “ xml Web 可视化工具”则完全没什么有用结果,让我最初以为没有什么好用的开源插件,而且最初也不会想到 copy 脚本之家的代码这么费劲
        10
    hangvane   78 天前
    @donething @CallMeReznov 显然并没涉及到什么高端操作,只是纯粹的耗费时间和精力挨个找而已,分享出来是为了 1 让有类似 copy 代码需求的同学少走弯路 2 让有类似反 copy 代码需求的同学借鉴思路,怎么就这么酸了?
        11
    defunct9   78 天前 via iPhone
    🐂🍺
        12
    lihongjie0209   78 天前
    一通 baidu 无果 从开头就错了
        13
    hangvane   78 天前
    @lihongjie0209 请指教哪里错了,一开始我并没有想用 XML 编辑器,只是想找个和 JSON.stringify() 类似的 XML 格式化工具,请问具体的正确做法应该如何?如果是 github 或者 google 应该搜什么关键词?
        14
    leewlab   78 天前 via Android   ♥ 1
    @hangvane 杠精多,淡定,赞你一个
        15
    xy2401   78 天前
    js 是可以原生解析 xml 的。至于格式话应该是可以。有空我找找
    我以为是不能拷贝网页内容。原来是你'偷'别人 js 啊
        16
    Yourshell   78 天前
    web 展示 xml 源码不是转义就行了吗?
        17
    qqor   78 天前 via Android
    代码请写的自己看得懂就行了,活带来死带走,也为晚辈留口饭吃
        18
    hangvane   78 天前
    @Yourshell 原 xml 是没有缩进的

    <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"><eventTime>2007-07-08T00:10:00Z</eventTime><event xmlns="http://example.com/event/1.0"><eventClass>state</eventClass><reportingEntity><card>Ethernet0</card></reportingEntity><operState>enabled</operState></event></notification>

    因为需要让客户在网页上看所以起码要缩进一下,差不多搞成这样

    <notification xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0">
    <eventTime>2007-07-08T00:10:00Z</eventTime>
    <event xmlns="http://example.com/event/1.0">
    <eventClass>state</eventClass>
    <reportingEntity>
    <card>Ethernet0</card>
    </reportingEntity>
    <operState>enabled</operState>
    </event>
    </notification>
        19
    hangvane   78 天前
    @Yourshell 就是有换行和缩进啥的,v2 这里回复不了缩进
        20
    lihongjie0209   78 天前
        21
    hangvane   78 天前
    @lihongjie0209 可以的,看来是我关键词有问题,尝试了下 baidu 搜索 js xml formatter 也有些有效结果
        23
    winglight2016   78 天前
    @hangvane #20 良苦用心给你推荐 Google,可是你还在想着百毒,可叹媚眼抛给瞎子了。。。
        24
    CEBBCAT   78 天前 via Android   ♥ 3
    楼主挺好的,虽说他 copy 别人代码严重维权,但也没在这个帖子里鼓吹侵权,只是分享了一下有个办法对扒站的人相当恶心,还推荐给大家了

    这不是共产主义还能是啥?
        25
    AlisaDestiny   78 天前
    随手就给你找了个开源的库,为什么要去 copy 别人的网站。
    https://github.com/vkiryukhin/pretty-data
        26
    jousca   78 天前
    @hangvane 你如果上来就 Google,就不用花心思研究这么久反扒了……
        27
    hangvane   77 天前
    @winglight2016
    @jousca
    没搜到主要还是我关键词的问题,我应该更好的使用英文关键词来搜索。baidu 和 google 的话个人感觉在中文关键词搜索上差别不大
        28
    id7368   77 天前
    这货习惯性各种 copy 了,都用油猴脚本屏蔽这货的搜索结果
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4053 人在线   最高记录 5043   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 02:46 · PVG 10:46 · LAX 19:46 · JFK 22:46
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1