zoukankan      html  css  js  c++  java
  • Python 爬虫js加密破解(一) 爬取今日头条as cp 算法 解密

    关于今日头条的 as cp 算法,只是对时间进行了加密,他们的js代码是压缩处理的,正常格式化就可以了

    url = "http://www.toutiao.com/api/pc/feed/" data = { "category":"news_game", "utm_source":"toutiao", "widen":str(i), "max_behot_time":"0", "max_behot_time_tmp":"0", "tadrequire":"true", "as":"479BB4B7254C150", "cp":"7E0AC8874BB0985", } headers = { "Host":"www.toutiao.com", "Connection":"keep-alive", "Accept":"text/javascript, text/html, application/xml, text/xml, */*", "X-Requested-With":"XMLHttpRequest", "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36", "Content-Type":"application/x-www-form-urlencoded", "Referer":"http://www.toutiao.com/ch/news_hot/", "Accept-Encoding":"gzip, deflate", "Accept-Language":"zh-CN,zh;q=0.8", } result1 = session.get(url=url,params=data,headers=headers).text result2 =json.loads(result1)

    今日头条 as cp算法解析,我们在提交的时候"as":"479BB4B7254C150",   "cp":"7E0AC8874BB0985",就可以了,有兴趣的同学可以去看看他们的js代码,只是简单的对进行了加密

    var e = {};
        e.getHoney = function() {
            var t = Math.floor((new Date).getTime() / 1e3),
                e = t.toString(16).toUpperCase(),
                n = md5(t).toString().toUpperCase();
            if (8 != e.length) return {
                as: "479BB4B7254C150",
                cp: "7E0AC8874BB0985"
            };
            for (var o = n.slice(0, 5), i = n.slice(-5), a = "", r = 0; 5 > r; r++) a += o[r] + e[r];
            for (var l = "", s = 0; 5 > s; s++) l += e[s + 3] + i[s];
            return {
                as: "A1" + a + e.slice(-3),
                cp: e.slice(0, 3) + l + "E1"
            }
        }, t.ascp = e
    }(window, document), function() {
        var t = ascp.getHoney(),
            e = {
                path: "/",
                domain: "i.snssdk.com"
            };
        $.cookie("cp", t.cp, e), $.cookie("as", t.as, e), window._honey = t
    }(), Flow.prototype = {
        init: function() {
            var t = this;
            this.url && (t.showState(t.auto_load ? NETWORKTIPS.LOADING : NETWORKTIPS.HASMORE), this.container.on("scrollBottom", function() {
                t.auto_load && (t.lock || t.has_more && t.loadmore())
            }), this.list_bottom.on("click", "a", function() {
                return t.lock = !1, t.loadmore(), !1
            }))
        },
        loadmore: function(t) {
            this.getData(this.url, this.type, this.param, t)
        },

     as  cp 算法 Python 实现

    import time
    import hashlib 
    
    def get_as_cp():
        zz ={}
        now = round(time.time())
        print now  #获取计算机时间
        e = hex(int(now)).upper()[2:]  #hex()转换一个整数对象为十六进制的字符串表示
        print e 
        i = hashlib.md5(str(int(now))).hexdigest().upper() #hashlib.md5().hexdigest()创建hash对象并返回16进制结果
        if len(e)!=8:
            zz = {'as': "479BB4B7254C150",
                'cp': "7E0AC8874BB0985"}
            return zz
        n=i[:5]
        a=i[-5:]
        r = ""
        s = ""
        for i in range(5):
            s = s+n[i]+e[i]
        for j in range(5):
            r = r+e[j+3]+a[j]
        zz = {
                'as': "A1" + s + e[-3:],
                'cp': e[0:3] + r + "E1"
            } 
        print zz
    
    if __name__ == "__main__":
        get_as_cp()
  • 相关阅读:
    两数之和
    IntelliJ IDEA为类和方法自动添加注释
    IDEA main 函数的快捷键
    Mac终端开启代理
    Pycharm节能模式
    使用正则表达式替换构造字典
    使用代理爬取微信文章
    利用 Scrapy 爬取知乎用户信息
    Scrapy选择器的用法
    Scrapy命令行基本用法
  • 原文地址:https://www.cnblogs.com/xuchunlin/p/7097391.html
Copyright © 2011-2022 走看看