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)
    
        #"""
    

      

  • 相关阅读:
    Python对象
    python 迭代器和生成器
    python中logging日志模块详解
    学习中遇到的一些问题(杂谈)
    如何在github上搜索项目
    python闭包与装饰器
    python面试题
    selenium
    python导入自定义包
    About Me、
  • 原文地址:https://www.cnblogs.com/xuan52rock/p/11362902.html
Copyright © 2011-2022 走看看