From 4287ab31247314d79015509cc1d0b50cb85dce56 Mon Sep 17 00:00:00 2001 From: liulong Date: Wed, 25 Sep 2024 16:28:06 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E2=9A=A1=EF=B8=8F:zap::=20=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E5=A4=9A=E7=BA=BF=E7=A8=8B=E6=A8=A1=E5=BC=8F=E6=8F=90?= =?UTF-8?q?=E9=AB=98=E5=A4=9A=E4=B8=AA=E8=B4=A6=E5=8F=B7=E6=97=B6=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E6=89=A7=E8=A1=8C=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hykb.py | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/hykb.py b/hykb.py index 4eb4ed6..6c89dae 100644 --- a/hykb.py +++ b/hykb.py @@ -5,6 +5,7 @@ # @EditTime 2024/9/20 import os import re +import threading from datetime import datetime import requests @@ -22,16 +23,16 @@ class HaoYouKuaiBao(): """好游快爆签到 """ - def __init__(self, cookie, user_agent): + def __init__(self, cookie): self.cookie = cookie self.url = "https://huodong3.3839.com/n/hykb/{}/ajax{}.php" self.data = "ac={}&r=0.{}&scookie={}" self.headers = { "Origin": "https://huodong3.i3839.com", "Referer": "https://huodong3.3839.com/n/hykb/cornfarm/index.php?imm=0", - "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", - "User-Agent": user_agent + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" } + self.user_name = self.user_info()["user"] def user_info(self): """ @@ -50,7 +51,7 @@ class HaoYouKuaiBao(): if response['key'] == 'ok': return { "user": response["config"]["name"], - "uuid": response["config"]["uuid"] + "uuid": response["config"]["uid"] } except Exception as e: print("好游快爆-获取用户信息出现错误:{}".format(e)) @@ -63,20 +64,20 @@ class HaoYouKuaiBao(): try: response = requests.post(url, headers=self.headers, data=data).json() if response['key'] == 'ok': - print("好游快爆-播种成功") + print(f"好游快爆-用户【{self.user_name}】播种成功") send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), - "好游快爆-播种成功") + f"好游快爆-用户【{self.user_name}】播种成功") return 1 else: if response['seed'] == 0: - print("好游快爆-种子已用完") + print(f"好游快爆-用户【{self.user_name}】种子已用完") send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), - "好游快爆-种子已用完") + f"好游快爆-用户【{self.user_name}】种子已用完") return -1 else: - print("好游快爆-播种失败") + print(f"好游快爆-用户【{self.user_name}】播种失败") send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), - "好游快爆-播种失败") + f"好游快爆-用户【{self.user_name}】播种失败") return 0 except Exception as e: print(f"好游快爆-播种出现错误:{e}") @@ -90,14 +91,14 @@ class HaoYouKuaiBao(): try: response = requests.post(url, headers=self.headers, data=data).json() if response['key'] == 'ok': - print("好游快爆-收获成功") + print(f"好游快爆-用户【{self.user_name}】收获成功") send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), - "好游快爆-收获成功") + f"好游快爆-用户【{self.user_name}】收获成功") return True else: - print("好游快爆-收获失败") + print(f"好游快爆-用户【{self.user_name}】收获失败") send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), - "好游快爆-收获失败") + f"好游快爆-用户【{self.user_name}】收获失败") return False except Exception as e: print(f"好游快爆-收获出现错误:{e}") @@ -126,14 +127,14 @@ class HaoYouKuaiBao(): try: response = requests.post(url, headers=self.headers, data=data).json() if response['key'] == 'ok': - print("好游快爆-浇水成功") + print(f"好游快爆-用户【{self.user_name}】浇水成功") send_notification_message(title="好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), - content="好游快爆-浇水成功") + content=f"好游快爆-用户【{self.user_name}】浇水成功") return 1, response['add_baomihua'] elif response['key'] == '1001': - print("好游快爆-今日已浇水") + print(f"好游快爆-用户【{self.user_name}】今日已浇水") send_notification_message(title="好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), - content="好游快爆-今日已浇水") + content=f"好游快爆-用户【{self.user_name}】今日已浇水") return 0, 0 else: print("好游快爆-浇水出现错误:{}".format(response)) @@ -154,12 +155,11 @@ class HaoYouKuaiBao(): # print(response.json()) def sgin(self): - user_name = self.user_info()["user"] info = "" # 登录 data = self.login() if data['key'] == 'ok': - print(f"用户: {user_name} 登录成功!✅") + print(f"用户: 【{self.user_name}】登录成功!✅") if data['config']['csd_jdt'] == "100%": # 收获 if self.harvest(): @@ -217,11 +217,11 @@ class HaoYouKuaiBao(): if __name__ == '__main__': - user_agents = [ - "Mozilla/5.0 (Linux; Android 13; M2012K11AC Build/TKQ1.220829.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/115.0.5790.166 Mobile Safari/537.36Androidkb/1.5.7.005(android;M2012K11AC;13;1080x2320;WiFi);@4399_sykb_android_activity@", - "Mozilla/5.0 (Linux; Android 12; Redmi K30 Pro Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/96.0.4664.104 Mobile Safari/537.36Androidkb/1.5.7.507(android;Redmi K30 Pro;12;1080x2356;WiFi);@4399_sykb_android_activity@" - ] - for cookie_, user_agent in zip(Hykb_cookie, user_agents): - hykb = HaoYouKuaiBao(cookie_, user_agent) - hykb.sgin() - del hykb + threads = [] + for cookie_ in Hykb_cookie: + hykb = HaoYouKuaiBao(cookie_) + thread = threading.Thread(target=hykb.sgin) + threads.append(thread) + thread.start() + for thread in threads: + thread.join() From c0567007df77f982bb64055f12946d17cbbfa86e Mon Sep 17 00:00:00 2001 From: liulong Date: Sun, 29 Sep 2024 15:57:08 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=F0=9F=90=9B:bug:=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=94=B6=E8=8E=B7=E5=A4=B1=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hykb.py | 54 +++++++++++++++++++++++++++--------------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/hykb.py b/hykb.py index 6c89dae..2200019 100644 --- a/hykb.py +++ b/hykb.py @@ -4,12 +4,14 @@ # @author Echo # @EditTime 2024/9/20 import os +import random import re import threading +import urllib.parse from datetime import datetime -import requests -import random +import httpx + from sendNotify import send_notification_message if 'Hykb_cookie' in os.environ: @@ -24,14 +26,16 @@ class HaoYouKuaiBao(): """ def __init__(self, cookie): + self.client = httpx.Client( + verify=False, + headers={ + "Origin": "https://huodong3.i3839.com", + "Referer": "https://huodong3.3839.com/n/hykb/cornfarm/index.php?imm=0", + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" + } + ) self.cookie = cookie self.url = "https://huodong3.3839.com/n/hykb/{}/ajax{}.php" - self.data = "ac={}&r=0.{}&scookie={}" - self.headers = { - "Origin": "https://huodong3.i3839.com", - "Referer": "https://huodong3.3839.com/n/hykb/cornfarm/index.php?imm=0", - "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" - } self.user_name = self.user_info()["user"] def user_info(self): @@ -40,14 +44,9 @@ class HaoYouKuaiBao(): :return: """ url = self.url.format("qdjh", "") - data = { - "ac": "login", - "r": f"0.{random.randint(1000000000000000, 8999999999999999)}", - "scookie": self.cookie, - "device": "kbA25014349F11473F467DC6FF5C89E9D6" - } + payload = f"ac=login&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6" try: - response = requests.post(url, headers=self.headers, data=data).json() + response = self.client.post(url, content=payload).json() if response['key'] == 'ok': return { "user": response["config"]["name"], @@ -60,9 +59,9 @@ class HaoYouKuaiBao(): """播种 """ url = self.url.format("cornfarm", "_plant") - data = self.data.format("Plant", random.randint(1000000000000000, 8999999999999999), self.cookie) + payload = f"ac=Plant&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6" try: - response = requests.post(url, headers=self.headers, data=data).json() + response = self.client.post(url, content=payload).json() if response['key'] == 'ok': print(f"好游快爆-用户【{self.user_name}】播种成功") send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), @@ -87,14 +86,17 @@ class HaoYouKuaiBao(): """收获 """ url = self.url.format("cornfarm", "_plant") - data = self.data.format("Harvest", random.randint(1000000000000000, 8999999999999999), self.cookie) + payload = f"ac=Harvest&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6" try: - response = requests.post(url, headers=self.headers, data=data).json() + response = self.client.post(url, content=payload).json() if response['key'] == 'ok': print(f"好游快爆-用户【{self.user_name}】收获成功") send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), f"好游快爆-用户【{self.user_name}】收获成功") - return True + elif response['key'] == '503': + print(f"好游快爆-用户【{self.user_name}】{response['info']}") + send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), + f"好游快爆-用户【{self.user_name}】{response['info']}") else: print(f"好游快爆-用户【{self.user_name}】收获失败") send_notification_message("好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), @@ -108,24 +110,22 @@ class HaoYouKuaiBao(): """登录 """ url = self.url.format("cornfarm", "") - data = self.data.format("login", random.randint(100000000000000, 8999999999999999), self.cookie) - response = requests.post(url, headers=self.headers, data=data) + payload = f"ac=login&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6" + response = self.client.post(url, content=payload) try: response = response.json() return response except Exception as e: print("好游快爆-登录出现错误:{}".format(e)) - # response = response.text - # return response def watering(self): """浇水 """ url = self.url.format("cornfarm", "_sign") - data = self.data.format("Sign&verison=1.5.7.005&OpenAutoSign=", - random.randint(100000000000000, 8999999999999999), self.cookie) + payload = f"ac=Sign&verison=1.5.7.005&OpenAutoSign=&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6" + try: - response = requests.post(url, headers=self.headers, data=data).json() + response = self.client.post(url, content=payload).json() if response['key'] == 'ok': print(f"好游快爆-用户【{self.user_name}】浇水成功") send_notification_message(title="好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), From 5f27a6c10186bb90a564d3662fcf11de7a5ffb3c Mon Sep 17 00:00:00 2001 From: liulong Date: Sun, 29 Sep 2024 17:53:15 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E2=9C=A8:sparkles:=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=B4=AD=E4=B9=B0=E7=A7=8D=E5=AD=90=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hykb.py | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 86 insertions(+), 12 deletions(-) diff --git a/hykb.py b/hykb.py index 2200019..8712e89 100644 --- a/hykb.py +++ b/hykb.py @@ -11,13 +11,16 @@ import urllib.parse from datetime import datetime import httpx +import requests from sendNotify import send_notification_message if 'Hykb_cookie' in os.environ: Hykb_cookie = re.split("@", os.environ.get("Hykb_cookie")) else: - Hykb_cookie = [] + Hykb_cookie = [ + "1|0|128421985|5b+r54iG55So5oi3MTI4NDIxOTg1|kbA25014349F11473F467DC6FF5C89E9D6|plcAoJ6jITDlGvEnGl80IlfuoREWIlVjITZOpv6U7WI=%1|5312899df0a922f9707df9a5ad8dee37" + ] print("未查找到Hykb_cookie变量.") @@ -38,6 +41,18 @@ class HaoYouKuaiBao(): self.url = "https://huodong3.3839.com/n/hykb/{}/ajax{}.php" self.user_name = self.user_info()["user"] + def get_index_html(self): + """ + 获取首页 + :return: + """ + url = "https://huodong3.3839.com/n/hykb/cornfarm/index.php?imm=0" + try: + response = self.client.get(url) + return response.text + except Exception as e: + print("好游快爆-获取首页出现错误:{}".format(e)) + def user_info(self): """ 获取用户信息 @@ -143,16 +158,75 @@ class HaoYouKuaiBao(): print("好游快爆-浇水出现错误:{}".format(e)) return -1, 0 - # def buyseeds(self): - # """购买种子 - # """ - # url = self.url.format("bmhstore2/inc/virtual", "Virtual") - # print(url) - # ac = "exchange&t=" + datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + "&goodsid=14565" - # data = self.data.format(ac, random.randint(100000000000000, 8999999999999999), self.cookie) - # print(data) - # response = requests.post(url, headers=self.headers, data=data) - # print(response.json()) + def get_goods(self): + """ + 获取商品id + :return: + """ + response = self.client.post( + url="https://shop.3839.com/index.php?c=Index&a=initCard", + content=f"pid=1660&r=0.{random.randint(100000000000000000, 899999999999999999)}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6" + ) + try: + j_response = response.json() + if j_response['code'] == 200: + return j_response['data']['store_id'], j_response['data']['product_name'] + except Exception as e: + print("好游快爆-获取商品id出现错误:{}".format(e)) + + def buy_seeds(self): + """购买种子 + """ + # 获取种子商品id + goods_id, goods_name = self.get_goods() + print(goods_id, goods_name) + headers = { + # 'User-Agent': "Mozilla/5.0 (Linux; Android 12; Redmi K30 Pro Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/96.0.4664.104 Mobile Safari/537.36Androidkb/1.5.7.507(android;Redmi K30 Pro;12;1080x2356;WiFi);@4399_sykb_android_activity@", + # 'Accept': "application/json, text/javascript, */*; q=0.01", + # 'Accept-Encoding': "gzip, deflate", + # 'X-Requested-With': "XMLHttpRequest", + 'Content-Type': "application/x-www-form-urlencoded; charset=UTF-8", + 'Origin': "https://huodong3.3839.com", + # 'Sec-Fetch-Site': "same-origin", + # 'Sec-Fetch-Mode': "cors", + # 'Sec-Fetch-Dest': "empty", + # 'Referer': "https://huodong3.3839.com/n/hykb/bmhstore2/inc/virtual/index.php?gid=14403&jtype=1", + # 'Accept-Language': "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", + # 'Cookie': "cornfarm_iback_v5=ok; Hm_lvt_f1fb60d2559a83c8fa1ee6125a352bd7=1726835084; HMACCOUNT=A31622759CFC8814; friend_iback_v5=ok; cornfarm_shop_v1=ok; Birthday_btn_v1=ok; UM_distinctid=1921fb977e97c-0d88697ab29ace-6c074671-53c31-1921fb977ea7e; cornfarm_moren_btn_v1=ok; Hm_lpvt_f1fb60d2559a83c8fa1ee6125a352bd7=1727595549" + } + url = "https://huodong3.3839.com/n/hykb/bmhstore2/inc/virtual/ajaxVirtual.php" + # payload = f"ac=login&gid=14403&t=2024-09-29+15%3A39%3A33&r=0.4950858317265687&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6" + payload = "ac=login&gid=14403&t=2024-09-29+15%3A39%3A33&r=0.4950858317265687&scookie=1%7C0%7C128421985%7C5b%2Br54iG55So5oi3MTI4NDIxOTg1%7CkbA25014349F11473F467DC6FF5C89E9D6%7CplcAoJ6jITDlGvEnGl80IlfuoREWIlVjITZOpv6U7WI%3D%251%7C5312899df0a922f9707df9a5ad8dee37&device=kbA25014349F11473F467DC6FF5C89E9D6" + l_response = requests.post( + url=url, + headers=headers, + data=payload, + verify=False + # content=f"ac=login&t={datetime.now().strftime('%Y-%m-%d %H:%M:%S')}&r=0.{random.randint(100000000000000000, 899999999999999999)}&gid={goods_id}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6" + ).json() + if l_response['key'] != "ok": + print("好游快爆-购买种子出现错误:{}".format(l_response)) + return False + else: + # 购买种子 + response = self.client.post( + url="https://huodong3.3839.com/n/hykb/bmhstore2/inc/virtual/ajaxVirtual.php", + content=f"ac=exchange&t={datetime.now().strftime('%Y-%m-%d %H:%M:%S')}&r=0.{random.randint(100000000000000000, 899999999999999999)}&goodsid={goods_id}&scookie={urllib.parse.quote(self.cookie)}&device=kbA25014349F11473F467DC6FF5C89E9D6" + ) + try: + j_response = response.json() + print(j_response) + if j_response['key'] == 200: + print(f"好游快爆-用户【{self.user_name}】购买了【{goods_name}】") + send_notification_message(title="好游快爆签到通知 - " + datetime.now().strftime("%Y/%m/%d"), + content=f"好游快爆-用户【{self.user_name}】购买了【{goods_name}】") + return True + else: + print("好游快爆-购买种子失败:{}".format(j_response)) + return False + except Exception as e: + print("好游快爆-购买种子出现错误:{}".format(e)) + return False def sgin(self): info = "" @@ -220,7 +294,7 @@ if __name__ == '__main__': threads = [] for cookie_ in Hykb_cookie: hykb = HaoYouKuaiBao(cookie_) - thread = threading.Thread(target=hykb.sgin) + thread = threading.Thread(target=hykb.buy_seeds) threads.append(thread) thread.start() for thread in threads: