zoukankan      html  css  js  c++  java
  • pypy

    #coding:utf-8
    
    import requests,codecs
    import json
    import re
    import os, shutil
    import urllib.request, urllib.error
    from requests.cookies import RequestsCookieJar
    import time
    from PyPDF2 import PdfFileReader, PdfFileWriter, PdfFileMerger
    import urllib3
    import hashlib
    import random
    
    class calcSig(object):
        key1 = '57218436'
        key2 = '15387264'
        rstr = 'efc84c17'
    
        def shuffle(self, p1, p2):
            p = ''
            p += p1[int(p2[0], 10) - 1]
            p += p1[int(p2[1], 10) - 1]
            p += p1[int(p2[2], 10) - 1]
            p += p1[int(p2[3], 10) - 1]
            p += p1[int(p2[4], 10) - 1]
            p += p1[int(p2[5], 10) - 1]
            p += p1[int(p2[6], 10) - 1]
            p += p1[int(p2[7], 10) - 1]
            return p.lower()
    
        # 生成 as和cp字段
        def ppp(self, u_md5, u_key1, u_key2):
            ascp = [0] * 36
            ascp[0] = 'a'
            ascp[1] = '1'
            for i in range(0, 8):
                ascp[2 * (i + 1)] = u_md5[i]
                ascp[2 * i + 3] = u_key2[i]
                ascp[2 * i + 18] = u_key1[i]
                ascp[2 * i + 1 + 18] = u_md5[i + 24]
            ascp[-2] = 'e'
            ascp[-1] = '1'
    
            return ''.join(ascp)
    
        # 解析url参数
        def parseURL(self, url):
            param_index = url.find('?')
            param = url[param_index + 1:]
            param_list = param.split('&')
            param_list.append('rstr='+self.rstr)
            param_list = sorted(param_list)
            result = ''
            for a in param_list:
                tmp = a.split('=')
                tmp[1] = tmp[1].replace('+', 'a')
                tmp[1] = tmp[1].replace(' ', 'a')
                result += tmp[1]
            return result
    
        # 计算md5
        def calcMD5(self, str_encode):
            m = hashlib.md5()
            m.update(str_encode.encode('utf-8'))
            return m.hexdigest()
    
        def work(self, url, curtime):
            url_param = self.parseURL(url)
            p_md5 = self.calcMD5(url_param)
            if curtime & 1:
                p_md5 = self.calcMD5(p_md5)
            hexTime = hex(curtime)[2:]
            aa = self.shuffle(hexTime, self.key1)
            bb = self.shuffle(hexTime, self.key2)
            sig = self.ppp(p_md5, aa, bb)
            return ('%s&as=%s&cp=%s' % (url, sig[:18], sig[18:]))
            # return (sig[:18], sig[18:])
    
    
    def jsppost(url,data):
        print('>>> jsp开始 ! 
    ')
        try:
            #cookie_jar = RequestsCookieJar()
            #c = requests.cookies.RequestsCookieJar()
            #s = requests.Session()
            #c.set("JSESSIONID", "94E22BF178A02E950FABC28678D0AABA", domain="eresource.library.sh.cn",path="/")
            #c.set("JSESSIONID", "A4FD3CC5DD934282AA003EC932399FB7", domain="eresource.library.sh.cn",path='/objserver/')
            #s.cookies.update(c)
            response = requests.post(url=url,data=data, timeout=120,cookies=c,headers=headers,verify=False)
            
        except Exception as e:
            print(e)
    
    def jsp(url):
        print('>>> jsp开始 ! 
    ')
        try:
            #cookie_jar = RequestsCookieJar()
            c = requests.cookies.RequestsCookieJar()
            s = requests.Session()
            c.set("JSESSIONID", "94E22BF178A02E950FABC28678D0AABA", domain="eresource.library.sh.cn",path="/")
            c.set("JSESSIONID", "A4FD3CC5DD934282AA003EC932399FB7", domain="eresource.library.sh.cn",path='/objserver/')
            s.cookies.update(c)
            #response = requests.get(url=url, timeout=120,cookies=c,headers=headers,verify=False)
            r = requests.get(url=url, timeout=120,headers=headers,verify=False)
            tt=json.loads(r.text).get('min_time')
            arr=json.loads(r.text).get('followers')
            marr=[]
            ran=random.randint(5,10)
            global cc
            cc=cc+1;
            print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())+'    '+str(cc)+'   '+str(tt)+'    '+str(ran))
            for obj in arr:
                mdic={'nickname':'','sec_uid':'','uid':'','unique_id':'','short_id':'','share_qrcode_uri':'','avatar_300x300':''}
                #print(obj['uid'])
    
                mdic['nickname']=obj['nickname']
                mdic['sec_uid']=obj['sec_uid']
                mdic['uid']=obj['uid']
                mdic['short_id']=obj['short_id']
                mdic['share_qrcode_uri']=obj['share_qrcode_uri']
                mdic['avatar_300x300']=obj['avatar_300x300']['url_list'][0]
                marr.append(mdic)
            #print(json.loads(r.text).get('followers'))
            file = 'dyfs_'+user_id+'.txt'
            with open(file,'a+',encoding='utf-8') as f:
                f.write(str(marr)+',')
            time.sleep(ran)
            if tt==-1:
                with open(file,'a+',encoding='utf-8') as f:
                    f.write('
    '+url)
            else :
                getFollower(str(tt))
        except Exception as e:
            print(e)        
    
    def getFollower(max_time):
        t = time.time()-dift
        #user_id='101817795028'
        ts=int(t)                #秒级时间戳
        _rticket=str(int(round(t * 1000)))
        c = calcSig()
        url = "https://aweme.snssdk.com/aweme/v1/user/follower/list/?user_id="+user_id+"&max_time="+max_time+"&_rticket="+_rticket+"&ts="+str(ts)+"&count=20&retry_type=no_retry&iid=82879820134&device_id=69189073301&ac=wifi&channel=360_new&aid=1128&app_name=aweme&version_code=168&version_name=1.6.8&device_platform=android&ssmix=a&device_type=Redmi+4A&device_brand=Xiaomi&language=zh&os_api=23&os_version=6.0.1&openudid=29f385a1e0b60ece&manifest_version_code=210&resolution=720*1280&dpi=320&update_version_code=2102"
        murl=c.work(url,ts)
        print(c.work(url,ts))
        jsp(murl)
    
    if __name__ == "__main__":
        print("加载中....")
        DOWNLOAD_PATH = r'E:\python\pdf\'  #下载目录
        urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
        #mergefiles(DOWNLOAD_PATH,'out.pdf')
        """
        headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36","Referer": "http://wrd2016.library.sh.cn/channel/stjp/?tdsourcetag=s_pcqq_aiomsg"}
        
        requests.packages.urllib3.disable_warnings()
        jsp('http://eresource.library.sh.cn:8080/objserver/jsp/browserjp.jsp')
        time.sleep(0.1)
        
        headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36","Referer": "http://eresource.library.sh.cn:8080/objserver/jsp/browserjp.jsp"}
        jsp('http://eresource.library.sh.cn:8080/objserver/jsp/fcjp.jsp')
        time.sleep(0.1)
        
        headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36","Referer": "http://eresource.library.sh.cn:8080/objserver/jsp/browserjp.jsp"}
        jsp('http://eresource.library.sh.cn:8080/objserver/jsp/sy.jsp')
        time.sleep(0.1)
        
        headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36","Referer": "http://eresource.library.sh.cn:8080/objserver/jsp/browserjp.jsp"}
        jsp('http://eresource.library.sh.cn:8080/objserver/jsp/fy.jsp')
        time.sleep(0.1)
            
        fo = open('E:pythonpdfmerged_pdf_file.pdf', "wb")
        print("文件名为: ", fo.name)
        fo.close()
        """
        #"""
        users=[{user_id:'101817795028',dyid:'1173509665',nickname:'牛账网会计在线教育'},
        {user_id:'62353009337',dyid:'vx284347414',nickname:'会计教练老师实操,做账,报税,考证'},
        {user_id:'102664130688',dyid:'chujikuaiji',nickname:'初级会计'},
        {user_id:'101817795028',dyid:'1640676212',nickname:'初级会计职称'},
        {user_id:'101817795028',dyid:'kuaiji666',nickname:'初级会计考试'},
        {user_id:'101817795028',dyid:'chujikuaiji',nickname:''},
        {user_id:'101817795028',dyid:'chujikuaiji',nickname:''},
        {user_id:'101817795028',dyid:'chujikuaiji',nickname:''}]
        user_id='101817795028'#'62353009337'62353009337
        cc=0
        dift=0
        file = 'dyfs_'+user_id+'.txt'
        with open(file,'w') as f:
            f.write('')
        for i in range(1):
            #headers = {"Accept":"","Accept-Encoding":"gzip","User-Agent":"com.ss.android.ugc.aweme/750 (Linux; U; Android 6.0.1; zh_CN; Redmi 4A; Build/MMB29M; Cronet/58.0.2991.0)","Cookie": "install_id=82603796791; ttreq=1$1cd2da467f7f9f07d5de1aa593622dc8e06a7c93; odin_tt=cbe4c5411d373bcc1c3d572c33fbd7cd291508f9058b0c999dd5a432c031db5692d05ebc521e96dfce5ebb02201f1934a7bb907f7d37d6a30f308f580d97c3da; qh[360]=1","sdk-version":"1","X-Gorgon":"030428800001f0e89460d16043016864424adf199af7a8b2e148","X-Khronos":"1565712299","X-SS-REQ-TICKET":"1565712299115"}
            #headers = {"User-Agent":"com.ss.android.ugc.aweme/750 (Linux; U; Android 6.0.1; zh_CN; Redmi 4A; Build/MMB29M; Cronet/58.0.2991.0)","Cookie": "install_id=82603796791; ttreq=1$1cd2da467f7f9f07d5de1aa593622dc8e06a7c93; odin_tt=cbe4c5411d373bcc1c3d572c33fbd7cd291508f9058b0c999dd5a432c031db5692d05ebc521e96dfce5ebb02201f1934a7bb907f7d37d6a30f308f580d97c3da; qh[360]=1","sdk-version":"1","X-Gorgon":"03e0906d00016fa814d014d60446c7c71713b86fe930f83d8ff5","X-Khronos":"1565778310","X-SS-REQ-TICKET":"1565777837303"}
            headers = {"User-Agent":"com.ss.android.ugc.aweme/750 (Linux; U; Android 6.0.1; zh_CN; Redmi 4A; Build/MMB29M; Cronet/58.0.2991.0)","Cookie": "install_id=82879820134; ttreq=1$737084fed40b6240b948d2e5f0895b8df4af9e2f; odin_tt=8c2caed1fe142cfbbdf2a4b5e3fa397d62dbcd9137cc328c4631dfa0c18120d7cb5797df33708d164e7423e4913134028431d801ee758ebef1c15954d9ca470f; qh[360]=1"}
            #jsp("https://aweme.snssdk.com/aweme/v1/user/follower/list/?user_id=80954225804&max_time=1565784692&count=20&retry_type=no_retry&mcc_mnc=&iid=82715258125&device_id=69189073301&ac=wifi&channel=360_new&aid=1128&app_name=aweme&version_code=380&version_name=1.8.0&device_platform=android&ssmix=a&device_type=Redmi+4A&device_brand=Xiaomi&language=zh&os_api=23&os_version=6.0.1&openudid=29f385a1e0b60ece&manifest_version_code=380&resolution=720*1280&dpi=320&update_version_code=3802&_rticket=1565784692555&js_sdk_version=1.6.4&mas=0180c7997d71bdad7fd997615978f4f1c98c8c1c4ccc46868c26ec")
            #jsp("https://aweme.snssdk.com/aweme/v1/user/follower/list/?user_id=127178283690750&max_time=1565919239&count=20&retry_type=no_retry&iid=82803867752&device_id=38693548692&ac=wifi&channel=360_new&aid=1128&app_name=aweme&version_code=168&version_name=1.6.8&device_platform=android&ssmix=a&device_type=M5+Note&device_brand=Meizu&language=zh&os_api=24&os_version=7.0&uuid=865066037588709&openudid=797cadbbed256853&manifest_version_code=210&resolution=1080*1920&dpi=480&update_version_code=2102&_rticket=1565919256352&ts=1565919256&as=a1a5d0056821ed2806&cp=0818d75184625587e1")
            time.sleep(0.2)
            t = time.time()-dift
            ts=int(t)                #秒级时间戳101817795028&max_time=1565927966
            max_time=str(ts)
            _rticket=str(int(round(t * 1000)))
            c = calcSig()
            #https://aweme.snssdk.com/aweme/v1/user/follower/list/?user_id=103184660180&max_time=1565923611&count=20&retry_type=no_retry&iid=82879820134&device_id=69189073301&ac=wifi&channel=360_new&aid=1128&app_name=aweme&version_code=210&version_name=2.1.0&device_platform=android&ssmix=a&device_type=Redmi+4A&device_brand=Xiaomi&language=zh&os_api=23&os_version=6.0.1&openudid=29f385a1e0b60ece&manifest_version_code=210&resolution=720*1280&dpi=320&update_version_code=2102&_rticket=1565923611254&ts=1565923609&as=a12521d559b1ad39464355&cp=1a17dc5a9562589be1OaWe&mas=01773fb75f7a5086844863aaf3ed01dcd2acaccc2c6c2c9ccc2686
            url = "https://aweme.snssdk.com/aweme/v1/user/follower/list/?user_id="+user_id+"&max_time="+max_time+"&_rticket="+_rticket+"&ts="+str(ts)+"&count=20&retry_type=no_retry&iid=82879820134&device_id=69189073301&ac=wifi&channel=360_new&aid=1128&app_name=aweme&version_code=168&version_name=1.6.8&device_platform=android&ssmix=a&device_type=Redmi+4A&device_brand=Xiaomi&language=zh&os_api=23&os_version=6.0.1&openudid=29f385a1e0b60ece&manifest_version_code=210&resolution=720*1280&dpi=320&update_version_code=2102"
            murl=c.work(url,ts)
            jsp(murl)
    
        #"""
    

      

  • 相关阅读:
    bzoj 1715: [Usaco2006 Dec]Wormholes 虫洞【spfa判负环】
    bzoj 1627: [Usaco2007 Dec]穿越泥地【bfs】
    bzoj 1596: [Usaco2008 Jan]电话网络【贪心】
    bzoj 1624: [Usaco2008 Open] Clear And Present Danger 寻宝之路【Floyd】
    bzoj 1629: [Usaco2007 Demo]Cow Acrobats【贪心+排序】
    bzoj 1639: [Usaco2007 Mar]Monthly Expense 月度开支【二分】
    bzoj 1708: [Usaco2007 Oct]Money奶牛的硬币
    bzoj 1827: [Usaco2010 Mar]gather 奶牛大集会【树形dp】
    bzoj 1576: [Usaco2009 Jan]安全路经Travel【spfa+树链剖分+线段树】
    bzoj 1592: [Usaco2008 Feb]Making the Grade 路面修整【dp】
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/11362902.html
Copyright © 2011-2022 走看看