diff --git a/淘宝js逆向学习/1688/spider/c_page.py b/淘宝js逆向学习/1688/spider/c_page.py new file mode 100644 index 0000000..76e2168 --- /dev/null +++ b/淘宝js逆向学习/1688/spider/c_page.py @@ -0,0 +1,63 @@ +from DrissionPage import ChromiumPage, ChromiumOptions +import json +import time +import re +import random +import datetime + + +class Detail(object): + + def __init__(self): + co = ChromiumOptions() + co.auto_port() + self.page = ChromiumPage(co) + self.page.listen.start('https://detail.1688.com/offer/643272204627.html') + + def slide(self): + """ + 滑动代码 + :return: + """ + ele = self.page.wait.eles_loaded("x://span[contains(@id,'nc_1_n1z')]", timeout=20) + if ele: + ele = self.page.ele("#nc_1_n1t") + time.sleep(3) + ele.hover() + self.page.actions.hold('#nc_1_n1z') + self.page.actions.move(100, duration=random.random()) + self.page.actions.move(100, duration=random.random()) + self.page.actions.move(59, duration=3) + + def request_body(self): + url = 'https://detail.1688.com/offer/643272204627.html' + self.page.get(url) + res = self.page.listen.wait() + pattern = r'window\.__INIT_DATA\s*=\s*(\{.*?\})\s*' + match = re.search(pattern, res.response.body) + try: + json_data = match.group(1) + dict_data = json.loads(json_data) + temp_model = dict_data.get('globalData').get('tempModel') + print(datetime.datetime.now()) + print(temp_model) + except Exception as e: + print(e) + self.slide() + if self.page.wait.eles_loaded("#recyclerview"): + print('过滑动成功') + elif self.page.wait.eles_loaded("#nc_1_refresh1"): + print('滑动失败') + # 需要继续处理....... + elif self.page.wait.eles_loaded("#login-form"): + print('需要登陆/换IP') + # 需要继续处理....... + + def run(self): + for i in range(1, 100000): + self.request_body() + + +if __name__ == '__main__': + detail = Detail() + detail.run() diff --git a/淘宝js逆向学习/1688/spider/detail.py b/淘宝js逆向学习/1688/spider/detail.py new file mode 100644 index 0000000..42cc9e9 --- /dev/null +++ b/淘宝js逆向学习/1688/spider/detail.py @@ -0,0 +1,57 @@ +import re +import json +from spider.baes import Baes +import http.client +import time + + +class Detail(Baes): + def __init__(self): + self.url = "/offer/643272204627.html" + super().__init__() + + def request_body(self): + headers = { + 'Referer': 'https://mail.qq.com/', + 'cookie': 'x5sec=7b22733b32223a2235376666613964313830393261636362222c226c61707574613b32223a226331366632616261613731343933646339653661353332363564326564343639434b4b7933625147454a4b64385a37372f2f2f2f2f774577397179704b673d3d227d', + 'User-Agent': ( + 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' + 'AppleWebKit/537.36 (KHTML, like Gecko) ' + 'Chrome/126.0.0.0 Safari/537.36' + ), + } + + conn = http.client.HTTPSConnection("detail.1688.com") + + try: + conn.request("GET", self.url, headers=headers) + response = conn.getresponse() + # print(response.read().decode('latin-1')) + # exit() + + if response.status == 200: + data = response.read().decode("utf-8") + pattern = r'window\.__INIT_DATA\s*=\s*(\{.*?\})\s*' + match = re.search(pattern, data) + json_data = match.group(1) + dict_data = json.loads(json_data) + temp_model = dict_data.get('globalData').get('tempModel') + print(temp_model) + else: + print(f"Request failed with status {response.status}") + + except Exception as e: + print(f"An error occurred: {e}") + + finally: + conn.close() + + def run(self): + for i in range(1, 1000): + self.request_body() + # time.sleep(3) + + +if __name__ == '__main__': + detail = Detail() + detail.run()