wangkun 2 年之前
父节点
当前提交
a4d6e286ec
共有 3 个文件被更改,包括 74 次插入43 次删除
  1. 0 0
      chlsfiles/charles202208041536.txt
  2. 54 34
      main/demo.py
  3. 20 9
      main/gzh_recommend.py

文件差异内容过多而无法显示
+ 0 - 0
chlsfiles/charles202208041536.txt


+ 54 - 34
main/demo.py

@@ -5,6 +5,7 @@ import json
 import os
 import time
 import urllib.parse
+from urllib import parse
 import requests
 import urllib3
 
@@ -70,9 +71,9 @@ class Demo:
     @classmethod
     def get_token(cls):
         # charles 抓包文件保存目录
-        charles_file_dir = "../../crawler-kanyikan-recommend/chlsfiles/"
+        charles_file_dir = "../chlsfiles/"
 
-        if int(len(os.listdir(charles_file_dir))) == 1:
+        if int(len(os.listdir(charles_file_dir))) == 0:
             print("未找到chlsfile文件,等待60s")
             time.sleep(60)
         else:
@@ -92,7 +93,7 @@ class Demo:
 
             with open(charles_file_dir + new_file[0] + ".txt", encoding='utf-8-sig', errors='ignore') as f:
                 contents = json.load(f, strict=False)
-            # print(f"\nnewfile:{new_file}")
+            print(f"\nnewfile:{new_file}\n")
             # 定义需要返回的列表
             request_info = []
             for content in contents:
@@ -103,26 +104,33 @@ class Demo:
                         vid = content["request"]["body"]["text"].split("vid=")[-1].split("&is_pay_subscribe")[0]
                         request_info.append(title)
                         request_info.append(vid)
+                        Feishu.update_values("recommend", "gzh", "VzrN7E", "B1:B1", [[title]])
+                        time.sleep(1)
+                        Feishu.update_values("recommend", "gzh", "VzrN7E", "B2:B2", [[vid]])
                         for h in headers:
                             if h["name"] == "cookie" and "pass_ticket" in h["value"]:
                                 pass_ticket = h["value"].split("pass_ticket=")[-1]
                                 # print(f"pass_ticket:{pass_ticket}")
                                 request_info.append(pass_ticket)
+                                Feishu.update_values("recommend",  "gzh", "VzrN7E", "B5:B5", [[pass_ticket]])
 
                             if h["name"] == "referer":
                                 __biz = h["value"].split("__biz=")[-1].split("&mid=")[0]
                                 # print(f"__biz:{__biz}")
                                 request_info.append(__biz)
+                                Feishu.update_values("recommend", "gzh", "VzrN7E", "B3:B3", [[__biz]])
 
                             if h["name"] == "cookie" and "appmsg_token" in h["value"]:
                                 appmsg_token = h["value"].split("appmsg_token=")[-1]
                                 # print(f"appmsg_token:{appmsg_token}")
                                 request_info.append(appmsg_token)
+                                Feishu.update_values("recommend", "gzh", "VzrN7E", "B4:B4", [[appmsg_token]])
 
                             if h["name"] == "cookie" and "wap_sid2" in h["value"]:
                                 wap_sid2 = h["value"].split("wap_sid2=")[-1]
                                 # print(f"wap_sid2:{wap_sid2}")
                                 request_info.append(wap_sid2)
+                                Feishu.update_values("recommend", "gzh", "VzrN7E", "B6:B6", [[wap_sid2]])
 
                         return request_info
 
@@ -149,28 +157,34 @@ class Demo:
 
     @classmethod
     def recommend(cls):
-        params = cls.get_token()
-        # title = params[0]
-        title = "%E4%B9%8C%E5%85%B0%E5%9B%BE%E9%9B%85%E4%BF%8F%E7%9A%AE%E6%BC%94%E5%94%B1%E3%80%8A%E5%A5%B3%E4%BA%BA%E6%98%AF%E8%80%81%E8%99%8E%E3%80%8B%E6%B2%A1%E6%83%B3%E5%88%B0%E6%AF%94%E6%9D%8E%E5%A8%9C%E5%94%B1%E7%9A%84%E8%BF%98%E5%A5%BD%E5%90%AC"
-        # vid = params[1]
-        vid = "wxv_2443797289841475585"
-        # __biz = params[2]
-        __biz = "Mzg5MDY2NzY5Nw=="
-        # appmsg_token = params[3]
-        appmsg_token = "1177_d7MQLULLBIPWabC%2BIEOKdjjLUPhDOdqP-dT8UNrQQkc_B__YSJpUSsvCCyD4FeNx9YA28iu1Vx9zn7-p"
-        # pass_ticket = params[4]
-        pass_ticket = "1VEraA4AwklrT95KI+7WK09zHoybkPgSDgYX/Fw3ArRKYh+QnkI1NXGFHvZ0naeD"
-        wap_sid2 = "CNSn5r4HEooBeV9ITjJHd2Y5WV94YUczTnBpaWt0SzZhV08wWWFaRTR4WmR3NnVmNkRJT0VGT2VTdVZiXzAyYnB2ci1SZUs1VFJZOVU2bVZhQmxlVUxqd21oY2JLM0Q2M2UzQmRqVExtZHlVdm03RWFQbkFUTFBiYm5yR25BSEhJUDFxZjQ1MnhkQ3duWVNBQUF+MPSxrZcGOA1AAQ=="
+        token_sheet = Feishu.get_values_batch("recommend", "gzh", "VzrN7E")
+        title = token_sheet[0][1]
+        # print(title)
+        # title = parse.urlencode(title)
+        vid = token_sheet[1][1]
+        __biz = token_sheet[2][1]
+        appmsg_token = token_sheet[3][1]
+        pass_ticket = token_sheet[4][1]
+        wap_sid2 = token_sheet[5][1]
+
+        # title = "%25E8%25BF%2599%25E4%25B8%25AA%25E5%25BC%259F%25E6%2591%258A%25E4%25B8%258A%25E8%25BF%2599%25E4%25B8%25AA%25E5%2593%25A5%25E4%25B8%258D%25E7%259F%25A5%25E9%2581%2593%25E6%2598%25AF%25E5%25B9%25B8%25E8%25BF%2590%25E8%25BF%2598%25E6%2598%25AF%25E5%2599%25A9%25E6%25A2%25A6%25E7%259A%2584%25E5%25BC%2580%25E5%25A7%258B"
+        # vid = "wxv_2512850656278560768"
+        # __biz = "MzkwMjM4OTYyMA%3D%3D"
+        # appmsg_token = "1177_uEP3JZFhlaEpfuX2xZkF7a5mr7y0GIw2Xtm6WmawNEjFdmTFLWIMx6XbC5z-mFgwQ6mWBq8Wh9EvcaVI"
+        # pass_ticket = "1VEraA4AwklrT95KI+7WK09zHoybkPgSDgYX/Fw3ArRKYh+QnkI1NXGFHvZ0naeD"
+        # wap_sid2 = "CNSn5r4HEooBeV9ISXFxZ1FWX1JPazhCVXlfWW5UU0dSbXpza0lHZnlKSDVUVF9aUndjeDhvbDctc0tfUGlWd09uOTVwcTVxWGVkenB5Nld2YkRKNFBKVk9jZVpJZTZGU2hXUkpnZlB5OTMwSEJXQVpTNS13NnJXY0hiTjJibkJ6U3Z3WllaRkNmcEwzWVNBQUF+MOzurZcGOA1AAQ=="
 
         print(f"title:{title}")
         print(f"vid:{vid}")
         print(f"__biz:{__biz}")
         print(f"appmsg_token:{appmsg_token}")
         print(f"pass_ticket:{pass_ticket}")
+        print(f"wap_sid2:{wap_sid2}\n")
 
         url = "https://mp.weixin.qq.com/mp/getappmsgext?"
         headers = {
-            "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
+            # "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
+            "content-type": 'text/plain',
             "accept": "*/*",
             "x-requested-with": "XMLHttpRequest",
             "accept-language": "zh-cn",
@@ -181,19 +195,19 @@ class Demo:
                           " NetType/WIFI Language/zh_CN",
             "referer": "https://mp.weixin.qq.com/s?"
                        "__biz=" + __biz +
-                       "&mid=2247484741"
+                       "&mid=2247483669"
                        "&idx=1"
-                       "&sn=4cf71b5dc14bd63def91243b3514d531"
-                       "&chksm=cfd8529bf8afdb8d6224cb4a7d170fe27e4144b9f62b09de6cfccdd87347e6dbaed733fa4aad"
-                       "&sessionid=1659590728"
+                       "&sn=b290af5fe2d28a02bf93721a10ce5106"
+                       "&chksm=c0a70b0ef7d0821846725445dfe838e64886f3a4ae12b8277be45f7977fcccc37591c63a526b"
+                       "&sessionid=1659598372"
                        "&channel_session_id="
                        "&scene=136"
-                       "&subscene="
+                       "&subscene=126"
                        "&exptype="
-                       "&reloadid=1659580260"
-                       "&reloadseq=2"
+                       "&reloadid=1659598294"
+                       "&reloadseq=4"
                        "&related_video_source=10"
-                       "&ascene=1"
+                       "&ascene=3"
                        "&devicetype=iOS14.7.1"
                        "&version=18001a29"
                        "&nettype=WIFI"
@@ -201,7 +215,7 @@ class Demo:
                        "&lang=zh_CN"
                        "&session_us=gh_7364edd0ca9f"
                        "&fontScale=100"
-                       "&exportkey=AdT9lhjADCG9r69d1meNZ5c%3D"
+                       "&exportkey=AQIwyyA%2BcjsvSOsvHeccwiE%3D"
                        "&pass_ticket=" + pass_ticket +
                        "&wx_header=3",
         }
@@ -231,15 +245,15 @@ class Demo:
             "wxuin": "2010747860"
         }
         form = {
-            "r": "0.9008751986963669",
+            "r": "0.7399955678811934",
             "__biz": __biz,
             "appmsg_type": "9",
-            "mid": "2247484741",
-            "sn": "4cf71b5dc14bd63def91243b3514d531",
-            "idx": "4",
+            "mid": "2247483669",
+            "sn": "b290af5fe2d28a02bf93721a10ce5106",
+            "idx": "1",
             "scene": "136",
             "title": title,
-            "ct": "1655254541",
+            "ct": "1659387788",
             "abtest_cookie": "AAACAA==",
             "devicetype": "iOS14.7.1",
             "version": "18001a29",
@@ -253,7 +267,7 @@ class Demo:
             "msg_daily_idx": "1",
             "is_original": "0",
             "is_only_read": "1",
-            "req_id": "0413oMbSqo2PEUKPnZTSqool",
+            "req_id": "0415gcfdToRrDu1wXSkK8VcK",
             "pass_ticket": pass_ticket,
             "is_temp_url": "0",
             "item_show_type": "5",
@@ -379,11 +393,17 @@ class Demo:
 
     @classmethod
     def get_sheet(cls):
-        sheet = Feishu.get_values_batch("recommend", "gzh", "zWKFGb")
+        sheet = Feishu.get_values_batch("recommend", "gzh", "VzrN7E")
         print(sheet)
+        print(sheet[0][1])
+        print(sheet[1][1])
+        print(sheet[2][1])
+        print(sheet[3][1])
+        print(sheet[4][1])
+        print(sheet[5][1])
 
 
 if __name__ == "__main__":
-    # Demo.recommend()
-    print(Demo.get_token()[-1])
+    Demo.get_token()
+    Demo.recommend()
     # Demo.get_sheet()

+ 20 - 9
main/gzh_recommend.py

@@ -53,26 +53,36 @@ class Recommend:
                             vid = content["request"]["body"]["text"].split("vid=")[-1].split("&is_pay_subscribe")[0]
                             request_info.append(title)
                             request_info.append(vid)
+                            Feishu.update_values("recommend", "gzh", "VzrN7E", "B1:B1", [[title]])
+                            time.sleep(1)
+                            Feishu.update_values("recommend", "gzh", "VzrN7E", "B2:B2", [[vid]])
                             for h in headers:
                                 if h["name"] == "cookie" and "pass_ticket" in h["value"]:
                                     pass_ticket = h["value"].split("pass_ticket=")[-1]
                                     # print(f"pass_ticket:{pass_ticket}")
                                     request_info.append(pass_ticket)
+                                    Feishu.update_values("recommend", "gzh", "VzrN7E", "B5:B5", [[pass_ticket]])
 
                                 if h["name"] == "referer":
                                     __biz = h["value"].split("__biz=")[-1].split("&mid=")[0]
                                     # print(f"__biz:{__biz}")
                                     request_info.append(__biz)
+                                    Feishu.update_values("recommend", "gzh", "VzrN7E", "B3:B3", [[__biz]])
 
                                 if h["name"] == "cookie" and "appmsg_token" in h["value"]:
                                     appmsg_token = h["value"].split("appmsg_token=")[-1]
                                     # print(f"appmsg_token:{appmsg_token}")
                                     request_info.append(appmsg_token)
+                                    Feishu.update_values("recommend", "gzh", "VzrN7E", "B4:B4", [[appmsg_token]])
+
                                 if h["name"] == "cookie" and "wap_sid2" in h["value"]:
                                     wap_sid2 = h["value"].split("wap_sid2=")[-1]
                                     # print(f"wap_sid2:{wap_sid2}")
                                     request_info.append(wap_sid2)
+                                    Feishu.update_values("recommend", "gzh", "VzrN7E", "B6:B6", [[wap_sid2]])
+
                             return request_info
+
             except Exception as e:
                 Common.logger(log_type).error("获取session异常,30s后重试:{}", e)
                 time.sleep(30)
@@ -82,22 +92,23 @@ class Recommend:
     @classmethod
     def get_recommend(cls, log_type):
         try:
-            params = cls.get_token(log_type)
-            if params is None:
+            token_sheet = Feishu.get_values_batch("recommend", "gzh", "VzrN7E")
+            if token_sheet is None:
                 Common.logger(log_type).info("未获取到token等信息,30s后重试")
                 time.sleep(30)
                 cls.get_recommend(log_type)
             else:
-                title = params[0]
-                vid = params[1]
-                __biz = params[2]
-                appmsg_token = params[3]
-                pass_ticket = params[4]
-                wap_sid2 = params[5]
+                title = token_sheet[0][1]
+                vid = token_sheet[1][1]
+                __biz = token_sheet[2][1]
+                appmsg_token = token_sheet[3][1]
+                pass_ticket = token_sheet[4][1]
+                wap_sid2 = token_sheet[5][1]
 
                 url = "https://mp.weixin.qq.com/mp/getappmsgext?"
                 headers = {
-                    "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
+                    # "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
+                    "content-type": 'text/plain',
                     "accept": "*/*",
                     "x-requested-with": "XMLHttpRequest",
                     "accept-language": "zh-cn",

部分文件因为文件数量过多而无法显示