diff --git a/pt_site/UtilityTool.py b/pt_site/UtilityTool.py index 0926381..c9a8b29 100644 --- a/pt_site/UtilityTool.py +++ b/pt_site/UtilityTool.py @@ -1,5 +1,6 @@ import json import logging +import random import re import threading import time @@ -366,6 +367,58 @@ class PtSpider: msg=site.name + (' 信息导入成功!' if result[1] else ' 信息更新成功! ') + passkey_msg ) + def sign_in_u2(self, my_site: MySite): + site = my_site.site + try: + url = site.url + site.page_sign_in.lstrip('/') + result = self.send_request( + my_site=my_site, + url=url, + ) + req = self.parse(result, '//form//td/input[@name="req"]/@value') + hash_str = self.parse(result, '//form//td/input[@name="hash"]/@value') + form = self.parse(result, '//form//td/input[@name="form"]/@value') + submit_name = self.parse(result, '//form//td/input[@type="submit"]/@name') + submit_value = self.parse(result, '//form//td/input[@type="submit"]/@value') + message = site.sign_in_params if len(site.sign_in_params) >= 5 else '天空飘来五个字儿,幼儿园里没有事儿' + print(submit_name) + print(submit_value) + headers = { + "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" + } + params = [] + for name, value in zip(submit_name, submit_value): + params.append({ + name: value + }) + data = { + 'req': req[0], + 'hash': hash_str[0], + 'form': form[0], + 'message': message, + } + i = random.randint(0, 3) + param = '&message={}&req={}&hash={}&form={}&{}={}'.format( + message, req, hash_str, form, submit_name[i], submit_value[i]) + + data.update(params[random.randint(0, 3)]) + print(data) + response = self.send_request( + my_site, + url=site.url + '?action=show', + method=site.sign_in_method, + headers=headers, + data=data + ) + print(response.content.decode('utf8')) + return CommonResponse.success(data=response) + except Exception as e: + raise + return CommonResponse.success( + status=StatusCodeEnum.WEB_CONNECT_ERR, + msg=site.name + str(e) + ) + def sign_in_hdsky(self, my_site: MySite, captcha=False): """HDSKY签到""" site = my_site.site @@ -520,6 +573,16 @@ class PtSpider: signin_today.sign_in_info = result.msg signin_today.save() return result + if 'u2.dmhy.org' in site.url: + result = self.sign_in_u2(my_site) + if result.code == StatusCodeEnum.OK.code: + print(result.data) + return CommonResponse.success( + status=StatusCodeEnum.OK, + msg='签到成功!' + ) + else: + return result if 'hdsky.me' in site.url: result = self.sign_in_hdsky(my_site=my_site, captcha=site.sign_in_captcha) if result.code == StatusCodeEnum.OK.code: @@ -671,7 +734,7 @@ class PtSpider: else: return CommonResponse.error(msg='请确认签到是否成功??网页返回码:' + str(res.status_code)) except Exception as e: - # raise + raise self.send_text(site.name + '签到失败!原因:' + str(e)) return CommonResponse.error(msg='签到失败!' + str(e))