|
@@ -5,6 +5,7 @@ import json
|
|
import os
|
|
import os
|
|
import time
|
|
import time
|
|
import urllib.parse
|
|
import urllib.parse
|
|
|
|
+from urllib import parse
|
|
import requests
|
|
import requests
|
|
import urllib3
|
|
import urllib3
|
|
|
|
|
|
@@ -70,9 +71,9 @@ class Demo:
|
|
@classmethod
|
|
@classmethod
|
|
def get_token(cls):
|
|
def get_token(cls):
|
|
# charles 抓包文件保存目录
|
|
# 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")
|
|
print("未找到chlsfile文件,等待60s")
|
|
time.sleep(60)
|
|
time.sleep(60)
|
|
else:
|
|
else:
|
|
@@ -92,7 +93,7 @@ class Demo:
|
|
|
|
|
|
with open(charles_file_dir + new_file[0] + ".txt", encoding='utf-8-sig', errors='ignore') as f:
|
|
with open(charles_file_dir + new_file[0] + ".txt", encoding='utf-8-sig', errors='ignore') as f:
|
|
contents = json.load(f, strict=False)
|
|
contents = json.load(f, strict=False)
|
|
- # print(f"\nnewfile:{new_file}")
|
|
|
|
|
|
+ print(f"\nnewfile:{new_file}\n")
|
|
# 定义需要返回的列表
|
|
# 定义需要返回的列表
|
|
request_info = []
|
|
request_info = []
|
|
for content in contents:
|
|
for content in contents:
|
|
@@ -103,26 +104,33 @@ class Demo:
|
|
vid = content["request"]["body"]["text"].split("vid=")[-1].split("&is_pay_subscribe")[0]
|
|
vid = content["request"]["body"]["text"].split("vid=")[-1].split("&is_pay_subscribe")[0]
|
|
request_info.append(title)
|
|
request_info.append(title)
|
|
request_info.append(vid)
|
|
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:
|
|
for h in headers:
|
|
if h["name"] == "cookie" and "pass_ticket" in h["value"]:
|
|
if h["name"] == "cookie" and "pass_ticket" in h["value"]:
|
|
pass_ticket = h["value"].split("pass_ticket=")[-1]
|
|
pass_ticket = h["value"].split("pass_ticket=")[-1]
|
|
# print(f"pass_ticket:{pass_ticket}")
|
|
# print(f"pass_ticket:{pass_ticket}")
|
|
request_info.append(pass_ticket)
|
|
request_info.append(pass_ticket)
|
|
|
|
+ Feishu.update_values("recommend", "gzh", "VzrN7E", "B5:B5", [[pass_ticket]])
|
|
|
|
|
|
if h["name"] == "referer":
|
|
if h["name"] == "referer":
|
|
__biz = h["value"].split("__biz=")[-1].split("&mid=")[0]
|
|
__biz = h["value"].split("__biz=")[-1].split("&mid=")[0]
|
|
# print(f"__biz:{__biz}")
|
|
# print(f"__biz:{__biz}")
|
|
request_info.append(__biz)
|
|
request_info.append(__biz)
|
|
|
|
+ Feishu.update_values("recommend", "gzh", "VzrN7E", "B3:B3", [[__biz]])
|
|
|
|
|
|
if h["name"] == "cookie" and "appmsg_token" in h["value"]:
|
|
if h["name"] == "cookie" and "appmsg_token" in h["value"]:
|
|
appmsg_token = h["value"].split("appmsg_token=")[-1]
|
|
appmsg_token = h["value"].split("appmsg_token=")[-1]
|
|
# print(f"appmsg_token:{appmsg_token}")
|
|
# print(f"appmsg_token:{appmsg_token}")
|
|
request_info.append(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"]:
|
|
if h["name"] == "cookie" and "wap_sid2" in h["value"]:
|
|
wap_sid2 = h["value"].split("wap_sid2=")[-1]
|
|
wap_sid2 = h["value"].split("wap_sid2=")[-1]
|
|
# print(f"wap_sid2:{wap_sid2}")
|
|
# print(f"wap_sid2:{wap_sid2}")
|
|
request_info.append(wap_sid2)
|
|
request_info.append(wap_sid2)
|
|
|
|
+ Feishu.update_values("recommend", "gzh", "VzrN7E", "B6:B6", [[wap_sid2]])
|
|
|
|
|
|
return request_info
|
|
return request_info
|
|
|
|
|
|
@@ -149,28 +157,34 @@ class Demo:
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
def recommend(cls):
|
|
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"title:{title}")
|
|
print(f"vid:{vid}")
|
|
print(f"vid:{vid}")
|
|
print(f"__biz:{__biz}")
|
|
print(f"__biz:{__biz}")
|
|
print(f"appmsg_token:{appmsg_token}")
|
|
print(f"appmsg_token:{appmsg_token}")
|
|
print(f"pass_ticket:{pass_ticket}")
|
|
print(f"pass_ticket:{pass_ticket}")
|
|
|
|
+ print(f"wap_sid2:{wap_sid2}\n")
|
|
|
|
|
|
url = "https://mp.weixin.qq.com/mp/getappmsgext?"
|
|
url = "https://mp.weixin.qq.com/mp/getappmsgext?"
|
|
headers = {
|
|
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": "*/*",
|
|
"accept": "*/*",
|
|
"x-requested-with": "XMLHttpRequest",
|
|
"x-requested-with": "XMLHttpRequest",
|
|
"accept-language": "zh-cn",
|
|
"accept-language": "zh-cn",
|
|
@@ -181,19 +195,19 @@ class Demo:
|
|
" NetType/WIFI Language/zh_CN",
|
|
" NetType/WIFI Language/zh_CN",
|
|
"referer": "https://mp.weixin.qq.com/s?"
|
|
"referer": "https://mp.weixin.qq.com/s?"
|
|
"__biz=" + __biz +
|
|
"__biz=" + __biz +
|
|
- "&mid=2247484741"
|
|
|
|
|
|
+ "&mid=2247483669"
|
|
"&idx=1"
|
|
"&idx=1"
|
|
- "&sn=4cf71b5dc14bd63def91243b3514d531"
|
|
|
|
- "&chksm=cfd8529bf8afdb8d6224cb4a7d170fe27e4144b9f62b09de6cfccdd87347e6dbaed733fa4aad"
|
|
|
|
- "&sessionid=1659590728"
|
|
|
|
|
|
+ "&sn=b290af5fe2d28a02bf93721a10ce5106"
|
|
|
|
+ "&chksm=c0a70b0ef7d0821846725445dfe838e64886f3a4ae12b8277be45f7977fcccc37591c63a526b"
|
|
|
|
+ "&sessionid=1659598372"
|
|
"&channel_session_id="
|
|
"&channel_session_id="
|
|
"&scene=136"
|
|
"&scene=136"
|
|
- "&subscene="
|
|
|
|
|
|
+ "&subscene=126"
|
|
"&exptype="
|
|
"&exptype="
|
|
- "&reloadid=1659580260"
|
|
|
|
- "&reloadseq=2"
|
|
|
|
|
|
+ "&reloadid=1659598294"
|
|
|
|
+ "&reloadseq=4"
|
|
"&related_video_source=10"
|
|
"&related_video_source=10"
|
|
- "&ascene=1"
|
|
|
|
|
|
+ "&ascene=3"
|
|
"&devicetype=iOS14.7.1"
|
|
"&devicetype=iOS14.7.1"
|
|
"&version=18001a29"
|
|
"&version=18001a29"
|
|
"&nettype=WIFI"
|
|
"&nettype=WIFI"
|
|
@@ -201,7 +215,7 @@ class Demo:
|
|
"&lang=zh_CN"
|
|
"&lang=zh_CN"
|
|
"&session_us=gh_7364edd0ca9f"
|
|
"&session_us=gh_7364edd0ca9f"
|
|
"&fontScale=100"
|
|
"&fontScale=100"
|
|
- "&exportkey=AdT9lhjADCG9r69d1meNZ5c%3D"
|
|
|
|
|
|
+ "&exportkey=AQIwyyA%2BcjsvSOsvHeccwiE%3D"
|
|
"&pass_ticket=" + pass_ticket +
|
|
"&pass_ticket=" + pass_ticket +
|
|
"&wx_header=3",
|
|
"&wx_header=3",
|
|
}
|
|
}
|
|
@@ -231,15 +245,15 @@ class Demo:
|
|
"wxuin": "2010747860"
|
|
"wxuin": "2010747860"
|
|
}
|
|
}
|
|
form = {
|
|
form = {
|
|
- "r": "0.9008751986963669",
|
|
|
|
|
|
+ "r": "0.7399955678811934",
|
|
"__biz": __biz,
|
|
"__biz": __biz,
|
|
"appmsg_type": "9",
|
|
"appmsg_type": "9",
|
|
- "mid": "2247484741",
|
|
|
|
- "sn": "4cf71b5dc14bd63def91243b3514d531",
|
|
|
|
- "idx": "4",
|
|
|
|
|
|
+ "mid": "2247483669",
|
|
|
|
+ "sn": "b290af5fe2d28a02bf93721a10ce5106",
|
|
|
|
+ "idx": "1",
|
|
"scene": "136",
|
|
"scene": "136",
|
|
"title": title,
|
|
"title": title,
|
|
- "ct": "1655254541",
|
|
|
|
|
|
+ "ct": "1659387788",
|
|
"abtest_cookie": "AAACAA==",
|
|
"abtest_cookie": "AAACAA==",
|
|
"devicetype": "iOS14.7.1",
|
|
"devicetype": "iOS14.7.1",
|
|
"version": "18001a29",
|
|
"version": "18001a29",
|
|
@@ -253,7 +267,7 @@ class Demo:
|
|
"msg_daily_idx": "1",
|
|
"msg_daily_idx": "1",
|
|
"is_original": "0",
|
|
"is_original": "0",
|
|
"is_only_read": "1",
|
|
"is_only_read": "1",
|
|
- "req_id": "0413oMbSqo2PEUKPnZTSqool",
|
|
|
|
|
|
+ "req_id": "0415gcfdToRrDu1wXSkK8VcK",
|
|
"pass_ticket": pass_ticket,
|
|
"pass_ticket": pass_ticket,
|
|
"is_temp_url": "0",
|
|
"is_temp_url": "0",
|
|
"item_show_type": "5",
|
|
"item_show_type": "5",
|
|
@@ -379,11 +393,17 @@ class Demo:
|
|
|
|
|
|
@classmethod
|
|
@classmethod
|
|
def get_sheet(cls):
|
|
def get_sheet(cls):
|
|
- sheet = Feishu.get_values_batch("recommend", "gzh", "zWKFGb")
|
|
|
|
|
|
+ sheet = Feishu.get_values_batch("recommend", "gzh", "VzrN7E")
|
|
print(sheet)
|
|
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__":
|
|
if __name__ == "__main__":
|
|
- # Demo.recommend()
|
|
|
|
- print(Demo.get_token()[-1])
|
|
|
|
|
|
+ Demo.get_token()
|
|
|
|
+ Demo.recommend()
|
|
# Demo.get_sheet()
|
|
# Demo.get_sheet()
|