├── .github ├── scripts │ └── convert_js_to_sgmodule.py └── workflows │ └── convert_js_to_sgmodule.yml ├── Assets ├── Logo.PNG └── readme.md ├── LICENSE ├── QuantumultX ├── Filter │ └── NeteaseGame.list └── Scripts │ ├── BilibiliProCrack.js │ ├── BilibiliProCrackTemp.js │ ├── BuyHack.js │ ├── Crack │ └── RevenueCat.js │ ├── LLSPCrack.js │ ├── Task │ ├── Oclean.js │ ├── Oclean_red_envelope_am.js │ ├── Oclean_red_envelope_pm.js │ ├── pikpak_invite.js │ └── weiboSTCookie.js │ ├── altstore.js │ └── pure.baidu.user.js ├── README.md ├── Scripts ├── CheckIn │ ├── 10000.py │ ├── ttl_phone.js │ └── ttldh.js └── Olcean.js └── Surge └── Sgmodule ├── LLSPCrack.sgmodule └── pure.baidu.user.sgmodule /.github/scripts/convert_js_to_sgmodule.py: -------------------------------------------------------------------------------- 1 | # author:Levi 2 | # 搭配convert js to sgmodule.yml使用。可将qx的js/conf/snippet文件转换为sgmodule文件。 3 | 4 | import os 5 | import re 6 | 7 | def insert_append(content): 8 | # Insert %APPEND% after the first '=' sign 9 | return re.sub(r'=', '= %APPEND%', content, count=1) 10 | 11 | def task_local_to_sgmodule(js_content): 12 | task_local_content = '' 13 | # Check if [task_local] section exists 14 | task_local_block_match = re.search(r'\[task_local\](.*?)\n\[', js_content, re.DOTALL | re.IGNORECASE) 15 | if task_local_block_match: 16 | task_local_block = task_local_block_match.group(1) 17 | # Match the first link in the [task_local] section and its preceding cron expression 18 | task_local_match = re.search(r'((?:0\s+\d{1,2},\d{1,2},\d{1,2}\s+.*?)+)\s+(https?://\S+)', task_local_block) 19 | if task_local_match: 20 | cronexp, script_url = task_local_match.groups() 21 | # Ensure script-path does not include anything after a comma in the URL 22 | script_url = script_url.split(',')[0] 23 | # Extract the file name from the link to use as the tag 24 | tag = os.path.splitext(os.path.basename(script_url))[0] 25 | # Construct the SGModule cron task section 26 | task_local_content = f"{tag} = type=cron, cronexp=\"{cronexp}\", script-path={script_url}\n" 27 | # Return the task_local section content, if any 28 | return task_local_content 29 | 30 | def js_to_sgmodule(js_content): 31 | # Check for the presence of the [rewrite_local] and [mitm]/[MITM] sections 32 | if not (re.search(r'\[rewrite_local\]', js_content, re.IGNORECASE) or 33 | re.search(r'\[mitm\]', js_content, re.IGNORECASE) or 34 | re.search(r'\[MITM\]', js_content, re.IGNORECASE)): 35 | return None 36 | 37 | # Extract information from the JS content 38 | name_match = re.search(r'项目名称:(.*?)\n', js_content) 39 | desc_match = re.search(r'使用说明:(.*?)\n', js_content) 40 | mitm_match = re.search(r'\[mitm\]\s*([^=\n]+=[^\n]+)\s*', js_content, re.DOTALL | re.IGNORECASE) 41 | hostname_match = re.search(r'hostname\s*=\s*([^=\n]+=[^\n]+)\s*', js_content, re.DOTALL | re.IGNORECASE) 42 | 43 | # If there is no project name and description, use the last part of the matched URL as the project name 44 | if not (name_match and desc_match): 45 | url_pattern = r'url\s+script-(?:response-body|request-body|echo-response|request-header|response-header|analyze-echo-response)\s+(\S+.*?)$' 46 | last_part_match = re.search(url_pattern, js_content, re.MULTILINE) 47 | if last_part_match: 48 | project_name = os.path.splitext(os.path.basename(last_part_match.group(1).strip()))[0] 49 | else: 50 | raise ValueError("文件内容匹配错误,请按照要求修改,详情请按照levifree.tech文章内容修改") 51 | 52 | project_desc = f"{project_name} is automatically converted by github@FlechazoPh SCRIPT; if not available plz use Script-Hub." 53 | 54 | else: 55 | project_name = name_match.group(1).strip() 56 | project_desc = desc_match.group(1).strip() 57 | 58 | mitm_content = mitm_match.group(1).strip() if mitm_match else '' 59 | hostname_content = hostname_match.group(1).strip() if hostname_match else '' 60 | 61 | # Insert %APPEND% into mitm and hostname content 62 | mitm_content_with_append = insert_append(mitm_content) 63 | 64 | # Generate sgmodule content 65 | sgmodule_content = f"""#!name={project_name} 66 | #!desc={project_desc} 67 | [MITM] 68 | {mitm_content_with_append} 69 | [Script] 70 | """ 71 | 72 | # convert and add [task_local] section 73 | task_local_sgmodule_content = task_local_to_sgmodule(js_content) 74 | sgmodule_content += task_local_sgmodule_content 75 | 76 | # Regex pattern to find rewrite_local 77 | rewrite_local_pattern = r'^(.*?)\s*url\s+script-(response-body|request-body|echo-response|request-header|response-header|analyze-echo-response)\s+(\S+)' 78 | rewrite_local_matches = re.finditer(rewrite_local_pattern, js_content, re.MULTILINE) 79 | 80 | for match in rewrite_local_matches: 81 | pattern = match.group(1).strip() 82 | script_type = match.group(2).replace('-body', '').replace('-header', '').strip() 83 | script_path = match.group(3).strip() 84 | 85 | # Append the rewrite rule to the SGModule content 86 | sgmodule_content += f"{project_name} = type=http-{script_type},pattern={pattern},script-path={script_path}\n" 87 | 88 | return sgmodule_content 89 | 90 | 91 | def main(): 92 | # Process files in the 'scripts' folder 93 | qx_folder_path = 'QuantumultX/Scripts' 94 | if not os.path.exists(qx_folder_path): 95 | print(f"Error: {qx_folder_path} does not exist.") 96 | return 97 | 98 | # Define the supported file extensions 99 | supported_extensions = ('.js', '.conf', '.snippet') 100 | 101 | for file_name in os.listdir(qx_folder_path): 102 | if file_name.endswith(supported_extensions): 103 | # File extension check for .js, .conf, or .snippet 104 | file_path = os.path.join(qx_folder_path, file_name) 105 | with open(file_path, 'r', encoding='utf-8') as file: 106 | content = file.read() 107 | sgmodule_content = js_to_sgmodule(content) 108 | 109 | if sgmodule_content is None: 110 | # Skip files without the required sections 111 | print(f"跳过 {file_name} 由于文件缺失匹配内容,请仔细检查.") 112 | continue 113 | 114 | # Write sgmodule content to 'Surge' folder 115 | surge_folder_path = 'Surge/Sgmodule' 116 | os.makedirs(surge_folder_path, exist_ok=True) 117 | sgmodule_file_path = os.path.join(surge_folder_path, f"{os.path.splitext(file_name)[0]}.sgmodule") 118 | with open(sgmodule_file_path, "w", encoding="utf-8") as sgmodule_file: 119 | sgmodule_file.write(sgmodule_content) 120 | 121 | print(f"Generated {sgmodule_file_path}") 122 | 123 | # Since we're simulating a git operation, we'll do this for all file types 124 | with open(file_path, 'a', encoding='utf-8') as file: 125 | file.write("\n// Adding a dummy change to trigger git commit\n") 126 | 127 | os.system(f'git add {file_path}') 128 | os.system('git commit -m "Trigger update"') 129 | 130 | if __name__ == "__main__": 131 | main() 132 | -------------------------------------------------------------------------------- /.github/workflows/convert_js_to_sgmodule.yml: -------------------------------------------------------------------------------- 1 | # author:Levi 2 | # 搭配convert js to sgmodule.py使用。可将qx的js/conf/snippet文件转换为sgmodule文件。使用方法见博客。 3 | 4 | name: convert js to sgmodule 5 | 6 | on: 7 | push: 8 | paths: 9 | - 'QuantumultX/Scripts/**' # Trigger on changes in scripts folder 10 | pull_request: 11 | paths: 12 | - 'Surge/Sgmodule/**' # Trigger on changes in surge folder 13 | workflow_dispatch: 14 | 15 | jobs: 16 | generate_sgmodule: 17 | runs-on: ubuntu-latest 18 | 19 | steps: 20 | - name: Checkout repository 21 | uses: actions/checkout@v2 22 | 23 | - name: Set up Python 24 | uses: actions/setup-python@v2 25 | with: 26 | python-version: 3.8 27 | 28 | - name: Install dependencies 29 | run: | 30 | python -m pip install --upgrade pip 31 | pip install PyGithub 32 | 33 | - name: Run script 34 | run: python .github/scripts/convert_js_to_sgmodule.py 35 | env: 36 | GITHUB_TOKEN: ${{ secrets.TOKEN }} 37 | 38 | - name: Archive artifacts 39 | uses: actions/upload-artifact@v2 40 | with: 41 | name: sgmodule-artifacts 42 | path: ${{ github.workspace }}/Surge/Sgmodule 43 | 44 | - name: Push to Quantumult-X Repository 45 | run: | 46 | set -x 47 | git config user.name "${{ github.actor }}" 48 | git config user.email "${{ github.actor }}@users.noreply.github.com" 49 | git add . 50 | git commit -m "已转换为sgmodule文件" 51 | git push origin HEAD:main --force 52 | env: 53 | GITHUB_TOKEN: ${{ secrets.TOKEN }} 54 | -------------------------------------------------------------------------------- /Assets/Logo.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/FlechazoPh/AwesomeScripts/b27a37b9d0722230397ca9ed0bb7f0f02eafc7f4/Assets/Logo.PNG -------------------------------------------------------------------------------- /Assets/readme.md: -------------------------------------------------------------------------------- 1 | read 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /QuantumultX/Filter/NeteaseGame.list: -------------------------------------------------------------------------------- 1 | # NAME: NetEaseGame-QuantumultX 2 | # AUTHOR: @FlechazoPh https://github.com/FlechazoPh 3 | # GITHUB: https://raw.githubusercontent.com/FlechazoPh/AwesomeScripts/main/QuantumultX/Filter/NeteaseGame.list 4 | # UPDATED: 2022-05-26 13:31:30 5 | # HOST-SUFFIX: 8 6 | # IP-CIDR: 0 7 | # HOST: 2 8 | # USER-AGENT: 0 9 | # TOTAL: 10 10 | 11 | HOST,appdump.nie.netease.com,DIRECT 12 | HOST,tdid.netease.com,DIRECT 13 | 14 | HOST-KEYWORD,game,DIRECT 15 | 16 | # USER-AGENT,NeteaseMusic*,DIRECT 17 | 18 | # DOMAIN,netease.ugcvideoss.ourdvs.com,DIRECT 19 | DOMAIN,mp.music.163.com,DIRECT 20 | 21 | DOMAIN-SUFFIX,nie.netease.com,DIRECT 22 | DOMAIN-SUFFIX,update.netease.com,DIRECT 23 | DOMAIN-SUFFIX,mpay.netease.com,DIRECT 24 | DOMAIN-SUFFIX,q.netease.com,DIRECT 25 | DOMAIN-SUFFIX,matrix.netease.com,DIRECT 26 | DOMAIN-SUFFIX,game.163.com,DIRECT 27 | DOMAIN-SUFFIX,gameyw.163.com,DIRECT 28 | DOMAIN-SUFFIX,netease.im,DIRECT 29 | 30 | -------------------------------------------------------------------------------- /QuantumultX/Scripts/BilibiliProCrack.js: -------------------------------------------------------------------------------- 1 | var modifiedHeaders = $request['headers']; 2 | //modifiedHeaders['Cookie'] = ''; 3 | modifiedHeaders['x-bili-device-bin'] = 'CAEQxP6wJBokWTM0MDZFM0YyRjQxQTkwRjQ4MDVBRjg3QjIwMzYyOUM1MzIwIgZpcGhvbmUqA2lvczIFcGhvbmU6BWFwcGxlQgVBcHBsZUoNaVBob25lIDEyIFByb1IGMTUuMS4xagY3LjYzLjByQEFFMkEwNDM4RTI0NTBDRTNDNTU1NjlEOTAzQUUxRjlBMjAyMjEwMDUwOTMyNDMzQTRCRTkxMkQ2Qzg3MzIxNzd49uf1w7Yx'; 4 | modifiedHeaders['authorization'] = 'identify_v1 05880383118cb5400ef7628457fed012CjDokRejvVrEIsy3_WDx3hmk186yfKvngGZ-WUriNtzZ5pCqw18V-qpxTc3Jd4_pAaASVmJ4TFZkNEdZQjF4UGhaLVlPZXRFaWtNSlM0WmR1X1J1YmdOSjBtanBPVFBIckxSU1JpZ1k5Q01XNGpIN0FMUmxJZXR4S1FZMmtlNHlUMGluZWZORnNBIIEC'; 5 | modifiedHeaders['user-agent'] = 'bili-universal/76300100 os/ios model/iPhone 12 Pro mobi_app/iphone osVer/15.1.1 network/2 grpc-objc-cronet/1.47.0 grpc-c/25.0.0 (ios; cronet_http)'; 6 | modifiedHeaders['buvid'] = 'Y3406E3F2F41A90F4805AF87B203629C5320'; 7 | modifiedHeaders['x-bili-metadata-bin'] = 'CtwBMDU4ODAzODMxMThjYjU0MDBlZjc2Mjg0NTdmZWQwMTJDakRva1JlanZWckVJc3kzX1dEeDNobWsxODZ5Zkt2bmdHWi1XVXJpTnR6WjVwQ3F3MThWLXFweFRjM0pkNF9wQWFBU1ZtSjRURlprTkVkWlFqRjRVR2hhTFZsUFpYUkZhV3ROU2xNMFdtUjFYMUoxWW1kT1NqQnRhbkJQVkZCSWNreFNVMUpwWjFrNVEwMVhOR3BJTjBGTVVteEpaWFI0UzFGWk1tdGxOSGxVTUdsdVpXWk9Sbk5CSUlFQxIGaXBob25lGgVwaG9uZSDE/rAkKgVhcHBsZTIkWTM0MDZFM0YyRjQxQTkwRjQ4MDVBRjg3QjIwMzYyOUM1MzIwOgNpb3M'; 8 | modifiedHeaders['x-bili-locale-bin'] = 'Eg4KAnpoEgRIYW5zGgJDTg'; 9 | modifiedHeaders['x-bili-network-bin'] = 'CAE'; 10 | modifiedHeaders['x-bili-fawkes-req-bin'] = 'CgZpcGhvbmUSBHByb2QaCDliMjNmMTZh'; 11 | modifiedHeaders['x-bili-trace-id'] = '565febec256ec558555254583865a3b5:555254583865a3b5:0:0'; 12 | modifiedHeaders['x-bili-exps-bin'] = ''; 13 | $done({'headers': modifiedHeaders}); -------------------------------------------------------------------------------- /QuantumultX/Scripts/BilibiliProCrackTemp.js: -------------------------------------------------------------------------------- 1 | var modifiedHeaders = $request['headers']; 2 | modifiedHeaders['Cookie'] = 'buvid4=BD3C4180-612E-CFFF-CB85-0EEC573CEA6108369-123010414-6du7fZxNh1anfz3KvJfbXQ%3D%3D; buvid_fp=6a09c71bdf2c74a6955ff2d0a995327a; buvid3=B0AD31DF-0AEF-4F44-80E6-D4A0A77689E4148812infoc; fingerprint=421b3f44f6abc3bdbd0a577d7d03c9e4; b_nut=100; Buvid=e90ced9b01c592365b151fd6f0fbf6fe; DedeUserID=7057062; DedeUserID__ckMd5=043762636cca5294; SESSDATA=fe98594a%2C1720984954%2Cc84af312CjBMjPW8hqWJR0S2uS3AVLzVxc8jcSJe-mdLGGK_4Vc02HF9UYvU0SNiyNq9vsCt5P0SVm1BTXdyUkdJM0xEYUwxUkRqS0I1VFM1LUUxWm5ielVCd2w1enVzMTNfRXZGODl6X3JseFpmbU1DSWVuS0t0alZDUUh4Q2ctQ3A4UEZxa2NSS0R4UU9RIIEC; bili_jct=58461e092c6cb95f1f096cc83e49a2de; sid=7z1ssg06'; 3 | modifiedHeaders['x-bili-device-bin'] = 'CAEQpNLhIxogZTkwY2VkOWIwMWM1OTIzNjViMTUxZmQ2ZjBmYmY2ZmUiBmlwaG9uZSoDaW9zMgVwaG9uZToFYXBwbGVCBUFwcGxlSg1pUGhvbmUgMTQgUHJvUgYxNy4xLjFqBjcuNTAuMHJANTYxRjJCQTIxQzUxQkQ0MUEwRjlFQjY0NzM4MzM1MEEyMDIxMTIxODE1MDEyOEIwOTQwODhEMUE0NzhEMTM0RHiC2euGlTA='; 4 | modifiedHeaders['Authorization'] = 'identify_v1 f648e22e755520abf9fd795c8068a612CjBMjPW8hqWJR0S2uS3AVLzVxc8jcSJe-mdLGGK_4Vc02HF9UYvU0SNiyNq9vsCt5P0SVm1BTXdyUkdJM0xEYUwxUkRqS0I1VFM1LUUxWm5ielVCd2w1enVzMTNfRXZGODl6X3JseFpmbU1DSWVuS0t0alZDUUh4Q2ctQ3A4UEZxa2NSS0R4UU9RIIEC'; 5 | modifiedHeaders['User-Agent'] = 'bili-universal/75000100 os/ios model/iPhone 14 Pro mobi_app/iphone osVer/17.1.1 network/2'; 6 | modifiedHeaders['buvid'] = 'e90ced9b01c592365b151fd6f0fbf6fe'; 7 | modifiedHeaders['x-bili-metadata-bin'] = 'CtwBZjY0OGUyMmU3NTU1MjBhYmY5ZmQ3OTVjODA2OGE2MTJDakJNalBXOGhxV0pSMFMydVMzQVZMelZ4YzhqY1NKZS1tZExHR0tfNFZjMDJIRjlVWXZVMFNOaXlOcTl2c0N0NVAwU1ZtMUJUWGR5VWtkSk0weEVZVXd4VWtScVMwSTFWRk0xTFVVeFdtNWllbFZDZDJ3MWVuVnpNVE5mUlhaR09EbDZYM0pzZUZwbWJVMURTV1Z1UzB0MGFsWkRVVWg0UTJjdFEzQTRVRVp4YTJOU1MwUjRVVTlSSUlFQxIGaXBob25lGgVwaG9uZSCk0uEjKgVhcHBsZTIgZTkwY2VkOWIwMWM1OTIzNjViMTUxZmQ2ZjBmYmY2ZmU6A2lvcw=='; 8 | modifiedHeaders['x-bili-locale-bin'] = 'Eg4KAnpoEgRIYW5zGgJDTg=='; 9 | modifiedHeaders['x-bili-network-bin'] = 'CAE='; 10 | modifiedHeaders['x-bili-fawkes-req-bin'] = 'CgZpcGhvbmUSBHByb2QaCGJmYTIzNzlh'; 11 | modifiedHeaders['x-bili-trace-id'] = '241fc4578f0547df60736d902b65a7ec:60736d902b65a7ec:0:0'; 12 | modifiedHeaders['x-bili-exps-bin'] = ''; 13 | $done({'headers': modifiedHeaders}); -------------------------------------------------------------------------------- /QuantumultX/Scripts/BuyHack.js: -------------------------------------------------------------------------------- 1 | #buyhack 2 | ^https:\/\/buy\.itunes\.apple\.com\/verifyReceipt$ url script-response-body https://raw.githubusercontent.com/langkhach270389/Quantumult-X-LK/master/Scripts/langkhach/verify_receipt.js 3 | -------------------------------------------------------------------------------- /QuantumultX/Scripts/Crack/RevenueCat.js: -------------------------------------------------------------------------------- 1 | /*********************************** 2 | 3 | > 应用名称:RevenueCat多合一脚本 4 | > 脚本作者:Cuttlefish 5 | > 微信账号:墨鱼手记 6 | > 更新时间:2022-10-12 7 | > 通知频道:https://t.me/ddgksf2021 8 | > 投稿助手:https://t.me/ddgksf2013_bot 9 | > 问题反馈:📮 ddgksf2013@163.com 📮 10 | > 特别说明:本脚本仅供学习交流使用,禁止转载售卖 11 | > 默默私语:Speed SSL Ping 12 | > 解锁应用:如下所示(共计27个)陆续更新... 13 | 14 | Pixelmator、Planny、Gear、图图记账、Aphrodite、Apollo、MoneyThings、目标地图、Audiomack 15 | 1Blocker、Scanner Pro、Darkroom、谜底时钟、Pillow、VSCO、Grow、WhiteCloud、Fin、奇妙组件 16 | Widgetsmith、vision、Percento、Airmail、Usage、Spark、Pdf Viewer、谜底黑胶 17 | 18 | [rewrite_local] 19 | 20 | # ~ RevenueCat(2022-10-12)@ddgksf2013 21 | ^https:\/\/api\.revenuecat\.com\/.+\/(receipts$|subscribers\/(\$RCAnonymousID%)?(\w)*$) url script-echo-response https://raw.githubusercontent.com/ddgksf2013/Cuttlefish/99a42ba5783cc50b1c79fd30fc46fb4a3f8bbad4/Crack/revenuecat.js 22 | 23 | [mitm] 24 | 25 | hostname=api.revenuecat.com 26 | 27 | ***********************************/ 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | gkbog = '__0xed2bb', __0xed2bb=['w77CtzA=','wq9kwo8eBcO+DcOIwrfDkg==','N3/DicKQwpnDqMKWw59fwphhwpY=','LHF9Xg==','w5/DgsOuw5dXCsKxKcKoX8KBdsOTwrokTXI=','w4jCkcOFW2Y=','wqtDEkfDow==','RsO9wq99wpA=','wqgEZUwh','EcK4woJLQg==','wrprwrt/bQ==','Y8ORwrFJwok=','w6svwprCssOT','CELDlFg=','w7DDmMOMwphI','FxI+','wp1gwqPCvcOwZE/Ct10=','w70twoTCtMOV','wo0OwqIZaA==','wrLDnsOrEw==','wqh8Ggdq','wrNENzNy','wq1ewqbCoMOF','wpNlBw1B','HHnDk8KVwqI=','w7FdY8O5Tw==','wrnDkMKyw78e','w7fDmsOBwpJZ','NcKKw6/DvhU0w6Q=','CsKBEkV7','w5zDncOzw7HCjxx2','wpR3wqc=','wozDkcK0w5gAGsOj','w7LCvTRkPV3DvmFF','WcKjKX8nSHk=','w4zCmMOEQA==','HcKcHVVxw7dp','wpprS8KQwr4=','M8Kswroxw4Fpw4E=','wofCtApg','wonDtcOJw49mASY=','wo/DqMOVw5N7','LsKdwqVQaQ==','VsKcBVkp','w7MPwrjCqsOG','KcOiYcKIwogadw==','CW5tX8KBAcKyCh/CtA==','w5nCpnEROsORKw==','wqs9VklLw73Cv8KgwpvCuQ==','wo0FP8KnLcOtw5FgJ03Cr8Oawr1lEnQJYnjCmA==','w7QPHDAGYmkJIzPCpsKwB8ORbjbCtMKMw5tj','JsKUWiLCh8ODw745RHZSaXHDlcKzw4hyFMKVAmQ/VMOMBsOSUDZiw4jDh1PDm8OmIB/CosOHD1jDhTApFw==','wo3CgsKvwrDDjUAqHcOhwp7CtcK1JMK1w4zCpsKNC0l3','wrPClxRAI0bDuXdGwrPCjMKUw6fCk0bDusOHZDQ1wokeNsO2w5c=','woUbwq1BVcKVwrXCt8KgwqrDmFBLb8K+EQ/DmnrDoA==','FmdSZcKowq5iwo4A','w5Faf8O4YcKx','X8OFZMOPwq0SGMO6ayrClMKCEWfDoGFpcXx4','c8K3MsOew4BYPTJlQMOYwq4recKdDD9RQsKV','w4LDpUo8wo8KRMKnwqDCsSRTw7kUw4NYw6fDtBbDkA==','w6XDmsOdwqReT2VnZw==','w60kR1Q+wpjDhB5iwqFdwqE2wqU6UnnCrEY4','wqFNQXV0Yyl7IjnDig==','YsOzw6ZxwoM0wpbDrMOIw7lhKSwMeiAGw40zIA==','McKVNkDDsQ==','cMOjWC3CjcOzwr7DpcKI','wo1RahgJw7/DuXPCnsOfw6YlRAc7w7TCjMOo','w5REw7JdHMOBw6vDscOjw7TCvlBLZsKgVUfCjyTDk8OwDMKgwp8KwrxqGRw=','w4zDh8O/w7HCgwJ6UsK0w5s=','w74mw5bDkTBvw5tvUsKYwoYlSw==','UFDDshZGw5/Cq0UtRcOLwrcAd1LCo8OaZ1zDkHYpwrjDjTLCl8K4EcKZ','asO5TiHCm8ObwrE=','woEyw7LDpMKV','cELCjsOvwrVkw6DCsRQu','wphNcRUIw7DDqEHCksOVw7c4','DsKBFkt3w65h','wpnCuxxrw5p1Gw==','Q8OCwoJmw4zDqi7ClRvDgMKkBA==','CcOuLhTCol1Dw4HDicKg','wptgXcKMwq3Clg0LwqbDtBjCvQ==','DcKGEQhuw6lj','alnCiMO5wq5Zw68=','OxLDtcKaEg==','ccO+wqlLwpI6wqfCvysQ','wo1Rag==','CELDllIPOFI=','EcKqwqYvw49sw4g=','MsOyYsKfwo4abX0wCg==','JMKaMFrDoDnCicOpa8KEa8O0','w7DCqmIYPsOKNMOjF2ozwqbCjMOIwpQ=','w5ZbacOweMKSwo4=','wrrDv8OVw59sAzfDvg==','JcKQw6PDvhkqw6gQwo3Csw==','Cw/DoMKUA8OFw67CvsKvw4RvOQ==','McKGIV7DvSDCgQ==','WlHDu11aw7TCqg==','w6fCqmMcMMON','QErDvUtBw4nCpUw7UQ==','wowFwrQFe2LDrmfCtMOGwqHCgQ==','LG9n','wq9xwqTCv8OlZHXCtVrDs2Y=','ScK5JX8rVnXDncKWaA==','wo/DtMOTw5V9ASbDvE7CpwJC','wo9mEAt6w53CkA==','wqDDkMK/w7wGEsOhMMOt','w6sqwpTCqMOEP8KWPhTChQ==','OMKZwqZQc1DDvMK3w7g=','NXNsSMOUD8Kz','K8KcOA==','AkPDnxkUHkY9GVthwqp3R8KCHgLCvgLDtMK2a2HDrVd/wpl+w43DkQ==','CAg7DsKuSsKZw7/DtEg=','wp/DjMK/w4YGA8Or','w6TCsDVyLlvDvmxOwq4=','cMOiSDfCgMOmwr7Ds8KFHcOmwqgy','wr0hXhUFw7XCqsKmwpnCqMK3YcOhwqDDlsKfwpVsCnzCjDLClcOUwoloNBJUbw==','woAFwqQJd0HDrQ==','FsKcLUfDsRbCgMOre8KO','L2hqXsOPMsK8DRTCsg==','wrsgR1ISw7DCvcKowpDCo8KwPA==','McKvwrgjw41mw4HCssKK','w5jCrXQQJ8OsPg==','wqjDjMK1w5w=','w70hw5vDhiZ+w4ZAT8KVwowlTFjCicOmKMOA','ZMOlRTPCvMO4wr7DpcKUAMOgwqsk','QcOiYA4sT2XDh8ORTg==','w5rDnMOpw6vClBx2XcK0w4fClcO3','GGrCgcO0Y185HA==','wrVKTHFIIDlGdnk=','PcKVTCHCl8KLwrhmUW9NdCw=','woRDwqR+WVZHw5DDscOHEsOpMg==','EhM9GMK1d8KW','VMOYwoh3','wq1MIE3DmUzCpybDuHg=','M8KLw7XDpA40w6Qfwo3Cr0XDog==','wpV9wq3CusOlYlXCsFrDtw==','esOowqAmwobClR4=','woIrw7/DusKRw4c=','BELDhl4DG1EzEFBmw7c=','Cw88EMKkTcKd','W8O5Zhg3cmo=','woDCs8KaClMHw5cBFEVlw50dw6xfw58/XMKJw7vCpsOawpPDk8OmcsOIwo/Dky7CuTzCqCPCtBQ=','wq07UUgFw67CscKnwpDCvw==','CMKbIsKVw7RPT8K6P3zCtMOB','w50xwoLCssOTIcKaMRTCmcK2wrXCscKSw7c=','w4zCmMOGSmoLwpQ=','w7vDk8Ovw6nCkh98XQ==','wrbDisO7DhnCkEtWa8Ot','VlHDq1FWw5fCqUM7TcKNw7Q=','w5LCrD4XOsORP8KmKTYSwqrCl8OWwosyw6rCqn5Gw5rDsTnDgTt6Ago3H8KIwoTDuyzCrMOSw7LDvWw1P18NKcOJCCjCr8Oj','a8Olwq9dwokHwqg=','wroIwqECYWvDuVrCo8OH','w6nDi0jCnkoEwplWTsKH','N1Alw6lkPsORFTXCq3TClQ==','D3TCm8Ow','wpRNYRkEw5PDqw==','w5gpwqwDbGXDrng=','wqxhFxVww5rClFE3w6s=','H8O1OA7CtUNPw47DicK8Z1I=','w5XChMOHQnsxwp8=','E8O1KALCuWBM','wr5hEQ98w4XCnFA5','HRTDtsKOFMObw6LCscKvw5g=','wrNDwq5kb09Dwoc=','AhE9w6fDkgjDpMKqQ8Oyw5DClVtNSRAOw4xpw6jDm1Bzw6rDuRjDv8OyEH8DMcO9w5zDj8Of','IWTDn8KKwo7DtsKaw5BfwoQ=','w5TCrWQcK8OPPcKuInYiwrg=','QsOlbQ==','w5bDnMO5w6fCmD91','FMKawqRUaWfDscKtw6XCn2k=','VCFowrHCiDjCqMKJY8Kl','JMOpdMKFwpkEYXIwFsO4w60=','Akw0w615J8OZ','Bw/DsMKYD8Omw60=','wqdPQW5HPQ==','PMKbwr5YZF/DvMKpw67Clm4u','GhE1','w55Fw7sWAMOqw6o=','wqJBwqN7aV5Hw4LDsQ==','DG3CjMOwLl0iEXFR','OXN8RMOYLMKwAhTCrsOhw7Q=','U8O7bg==','NcKbMFzDozTCgMOoa8Ke','w5bCg8OAXHE2wptbNBI=','K8KOWjvCgMKVwrR7QGhWaQ==','OMKZwqY=','wqzDkcO9GALCrUQ=','PcO+LRU=','woIuw7LDuMKQw4k=','PcKVTCHCl8KLwrh0QHQ=','X8KiM2U8SHnDksKWdGEh','FnbCisOmNWAt','wpXDl8O2CRU=','wpzDi8K4w5gMBMOvN8O8UQ==','TjpuwqfCkwXCpw==','w5zDl0bCiEsXwpxY','w5fCqnwQPcOMIMKcN2o5','wqdfHSNW','woPCoQpnw4xdFMOsw6k=','w5JZw6s=','O8KOSjfCksKQwr9zQQ==','FMKAGU9/w7ZlT8KpwqBeEhbCkg==','54mK5p6n5Yy877y0wps75L+U5a2H5p2R5b2b56mU77676Lyf6K6x5pW15o6A5ouX5Lqj55mW5bWk5L6K','fMOWUg==','wptgwoE=','5Yq66Zua54mi5p+B5Y+e7726wppH5Lyx5a2v5pyu5byo56ue','w4TCscOjRGc=','wpfCox1Pw6o=','M8KiAk1/','KcKXNEXDog==','wrzDmsOVBD0=','w4zDt8Obw7LCgQ==','wo1dNlzDuA==','wopawo3CjsOz','wqpgBnrDlQ==','w65Bw5IkIQ==','NlUbw4xW','wrMyw6PDusKH','HRXDpsKUGcOO','w5PDhGQ=','Hkdn','DsKwdXB9WC3Dg8OFZiYuwpI=','G3pf','KsOZJg==','PMKmwrolw5pt','w7zDosOW','csOuXg==','PsKSSz/CncKMwrw=','bnbCug==','FsKewow=','wpAzw54=','B1nDnFQDHlswVRROwqwxBMKwGQ==','XxzCsMK3w7Y8wqHDrEsDYDTDhgrCvWnCh8KqN8Oww60Ew7XDhS98wqPCjsK3U8OQwo3DuF9mw4nCqsKlwqbClmPDvAXCpwV8wrbCssKfwrLDlcOYL8KBw6gewr1FwrVVF8Kz','KMOpacKY','cMOuwqUqwpA=','w5jCrWAAKw==','w7jCkTl7Nw==','wr9rwqXCr8OW','Ay4qFcK3','woQcwoIIbQ==','wo4ZdGsp','F8KQwp8=','KsKAwqhCc0HDsMKmw67Cig==','w49HaMO4acKowoU=','NjkYLsKi','e8O/cxXCiw==','B3DCt8OSJQ==','aMOUZAgh','A8OXR8Kkwqc=','O8O/DRfClw==','C1fCg8OzPA==','wrljwrNKaw==','wq1JLlfDjg==','wp5Maw8Tw7DDqA==','JmPDnMKawog=','wooEwq4fYGLDrg==','J8KOSD0=','cMOpwqowwpHCth0=','JV8jw64=','DsKaOMKPw69PTw==','QixpwqfCmz7CqMKEaA==','w6E8w5M=','GcO0IhTCrkNP','wo7Dv8OFw4lu','YcOkwqVLwp4kwqs=','ZsOlWCvCkQ==','C8O0HT7Cig==','w5tZw64eFw==','LcKNewHCsw==','w5bDq8ORw4nCiw==','PsKgw5nDuT0=','GC/DvMK3OA==','TMOFwopswos=','IcK0QCjCjg==','wq1afsKmwq8=','FXpuXcOc','wpxqJ3TDkg==','CAzDk8KKIg==','Y8OFwpcCwpg=','wqpNOkbDtg==','H8KFO8Ktw4I=','wrdgDnXDkQ==','P8KUAcK6w5I=','UVbCu8OawoQ=','wqRZVAo/','cFvCtMOGwqQ=','SDB4wpjCkw==','wrFdMGTDgg==','wqEuw4vDjMKM','VMKvJWs8','wocIwqILew==','woVEPDZF','D05FV8OY','ccOnRxXCoQ==','KVHCrMOSHQ==','BcKwDsKIw4c=','wp9QSQU5','KHh7WQ==','wqsDw7rDjMKV','w4RDw6crOg==','wp3DjsK3w7ot','wodDE0jDuQ==','wr1Kwqg=','VjBkwobCqA==','P3I5w6hi','LMOLaMKEwp8=','wovDqsOXw5Bw','P8KAwqRSZFrDtsKqwqvDkkZ1U8KIw5sW','w5jCgcOxw5ANESIqOGk8M13CtQDDnhDCqy1ZwpnDpMODwqopeT7DhHbDpsKmw6lFT8OpLcKZS1dKEMOmaxcaZWRpA1bCsT4FRU5FEsKabk1Nw68=','wrZ6HBI=','wqbDl8O4FBQ=','L1xwU8KU','wr12wpA=','w4Rew70AG8OXw6XDuMO1w6A=','V8O5dhQ7UWnDiMORUl8/','SjFnwqDCjjjCssKDb8Kn','H8KxEcK7w6U=','wqzDncOTw4ZE','OR8OKcKv','wpZWFkTDmw==','SsO7XgjCoA==','d1LCn8Oo','V8O8WyLCgg==','HG/CisOAIA==','wpdUwrh9','w6vDmcOsw6TCgQ==','O3YBw5N7','EcKawp5LcQ==','w6kqw4fDmD4=','Bl7Dlm0R','PsKHwq5rdg==','Q8OIwqUgwr0=','w65jQsOidg==','w4h7SsO0eQ==','SCJ+wo7Cow==','Uk/Dr1Rb','wqsgV14Aw7XCtsKgwpE=','w5BXZ8OwY8Kp','C8KAOMKfw7RKRcK5','w7PClxs=','wrbDusOP','wpnDr8OFw49qHyrDs07Cuw==','Z8Olwr9RwoUkwqvCsCsMwrfDhA==','EV7DnQ==','wqpEaA==','w61tw5gRUsOwV8OWw6TDnMOgwoUt','w4LCtnJbL8ORNw==','wrVCAA==','P8KxLA==','GMK8CV9P','I8KEw7TDiTY=','w5pnw7ULGQ==','w58+w5vDhhw=','wrg7XVgSw7XCt8Krw5XDp8KYZ8Knw6PDpMKY','McOeCsOXwqAJAsOoYE3DsMOKCGLDqg4ybS0Sw7rCj8Onw4XCnn53TcOxwp/CsDQUwoBqwqIRDC5iOz/CvybDl8Khw7I9LMKQwozDqzrDoxkDYEnDoVPCpMKv','wpRNbAg=','NcKNw6DDpBQ=','NXN4WMOY','wrADYEgT','NMKgwpgnw6g=','wqVYRFdy','wp/DlsK8w44a','dsOuwrhM','w5DChMOHSGY=','EsKHw7vDuA4=','w6PCoCR1','w6LCtzJmOQ==','cBdQwoTChw==','IsOgasK5wrQ=','w6XDkMOYw6TCtw==','CmHDvMK3wq8=','woYdwqciTQ==','RnfDvV9p','wqnDlMOsw4lq','w73CsmIeDQ==','wr3Ckyx7w7c=','w6nCh8OQREA=','LS/Dn8KIFA==','w7TCqjlyIkXDsg==','DsKVw4DDgzg=','w5ViVMO2SA==','w57ClUcaKQ==','wrEtw73DpcKRw5zDvA==','Z8OiwrE='];(function(_0x40d7c5,_0x2dd544){var _0x1b8bf1=function(_0x5b3560){while(--_0x5b3560){_0x40d7c5['push'](_0x40d7c5['shift']());}};var _0xabd12e=function(){var _0x51aa45={'data':{'key':'cookie','value':'timeout'},'setCookie':function(_0xd41242,_0x3058d6,_0x5dceda,_0x12f653){_0x12f653=_0x12f653||{};var _0x5dbb28=_0x3058d6+'='+_0x5dceda;var _0x12de4a=0x0;for(var _0x12de4a=0x0,_0x5b2aea=_0xd41242['length'];_0x12de4a<_0x5b2aea;_0x12de4a++){var _0x53566f=_0xd41242[_0x12de4a];_0x5dbb28+=';\x20'+_0x53566f;var _0x21a76a=_0xd41242[_0x53566f];_0xd41242['push'](_0x21a76a);_0x5b2aea=_0xd41242['length'];if(_0x21a76a!==!![]){_0x5dbb28+='='+_0x21a76a;}}_0x12f653['cookie']=_0x5dbb28;},'removeCookie':function(){return'dev';},'getCookie':function(_0x5cbdaa,_0x49f180){_0x5cbdaa=_0x5cbdaa||function(_0x422b1a){return _0x422b1a;};var _0x56cf37=_0x5cbdaa(new RegExp('(?:^|;\x20)'+_0x49f180['replace'](/([.$?*|{}()[]\/+^])/g,'$1')+'=([^;]*)'));var _0xc5c60f=function(_0x14e355,_0x20d976){_0x14e355(++_0x20d976);};_0xc5c60f(_0x1b8bf1,_0x2dd544);return _0x56cf37?decodeURIComponent(_0x56cf37[0x1]):undefined;}};var _0xcc4af4=function(){var _0x4c9cd8=new RegExp('\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*[\x27|\x22].+[\x27|\x22];?\x20*}');return _0x4c9cd8['test'](_0x51aa45['removeCookie']['toString']());};_0x51aa45['updateCookie']=_0xcc4af4;var _0x22d73c='';var _0x433b1d=_0x51aa45['updateCookie']();if(!_0x433b1d){_0x51aa45['setCookie'](['*'],'counter',0x1);}else if(_0x433b1d){_0x22d73c=_0x51aa45['getCookie'](null,'counter');}else{_0x51aa45['removeCookie']();}};_0xabd12e();}(__0xed2bb,0x12d));var _0x577c=function(_0x35d26a,_0x1b416e){_0x35d26a=_0x35d26a-0x0;var _0x46b767=__0xed2bb[_0x35d26a];if(_0x577c['initialized']===undefined){(function(){var _0x3cdf5f=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x2fb96e='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x3cdf5f['atob']||(_0x3cdf5f['atob']=function(_0x2bf1e9){var _0x102ad8=String(_0x2bf1e9)['replace'](/=+$/,'');for(var _0x448d49=0x0,_0x3b2019,_0x53dfa4,_0x5f5ead=0x0,_0x5a7402='';_0x53dfa4=_0x102ad8['charAt'](_0x5f5ead++);~_0x53dfa4&&(_0x3b2019=_0x448d49%0x4?_0x3b2019*0x40+_0x53dfa4:_0x53dfa4,_0x448d49++%0x4)?_0x5a7402+=String['fromCharCode'](0xff&_0x3b2019>>(-0x2*_0x448d49&0x6)):0x0){_0x53dfa4=_0x2fb96e['indexOf'](_0x53dfa4);}return _0x5a7402;});}());var _0xaf0441=function(_0x5b506c,_0x33872c){var _0x1cb770=[],_0xc9502f=0x0,_0x1f8d9b,_0x517472='',_0x2233a0='';_0x5b506c=atob(_0x5b506c);for(var _0x510434=0x0,_0x33cba8=_0x5b506c['length'];_0x510434<_0x33cba8;_0x510434++){_0x2233a0+='%'+('00'+_0x5b506c['charCodeAt'](_0x510434)['toString'](0x10))['slice'](-0x2);}_0x5b506c=decodeURIComponent(_0x2233a0);for(var _0x5915eb=0x0;_0x5915eb<0x100;_0x5915eb++){_0x1cb770[_0x5915eb]=_0x5915eb;}for(_0x5915eb=0x0;_0x5915eb<0x100;_0x5915eb++){_0xc9502f=(_0xc9502f+_0x1cb770[_0x5915eb]+_0x33872c['charCodeAt'](_0x5915eb%_0x33872c['length']))%0x100;_0x1f8d9b=_0x1cb770[_0x5915eb];_0x1cb770[_0x5915eb]=_0x1cb770[_0xc9502f];_0x1cb770[_0xc9502f]=_0x1f8d9b;}_0x5915eb=0x0;_0xc9502f=0x0;for(var _0x24e362=0x0;_0x24e362<_0x5b506c['length'];_0x24e362++){_0x5915eb=(_0x5915eb+0x1)%0x100;_0xc9502f=(_0xc9502f+_0x1cb770[_0x5915eb])%0x100;_0x1f8d9b=_0x1cb770[_0x5915eb];_0x1cb770[_0x5915eb]=_0x1cb770[_0xc9502f];_0x1cb770[_0xc9502f]=_0x1f8d9b;_0x517472+=String['fromCharCode'](_0x5b506c['charCodeAt'](_0x24e362)^_0x1cb770[(_0x1cb770[_0x5915eb]+_0x1cb770[_0xc9502f])%0x100]);}return _0x517472;};_0x577c['rc4']=_0xaf0441;_0x577c['data']={};_0x577c['initialized']=!![];}var _0x17f794=_0x577c['data'][_0x35d26a];if(_0x17f794===undefined){if(_0x577c['once']===undefined){var _0x2ffcd6=function(_0x3a0b72){this['rc4Bytes']=_0x3a0b72;this['states']=[0x1,0x0,0x0];this['newState']=function(){return'newState';};this['firstState']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*';this['secondState']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x2ffcd6['prototype']['checkState']=function(){var _0x242086=new RegExp(this['firstState']+this['secondState']);return this['runState'](_0x242086['test'](this['newState']['toString']())?--this['states'][0x1]:--this['states'][0x0]);};_0x2ffcd6['prototype']['runState']=function(_0x63a4f){if(!Boolean(~_0x63a4f)){return _0x63a4f;}return this['getState'](this['rc4Bytes']);};_0x2ffcd6['prototype']['getState']=function(_0x3835bb){for(var _0xcba2a2=0x0,_0x282c56=this['states']['length'];_0xcba2a2<_0x282c56;_0xcba2a2++){this['states']['push'](Math['round'](Math['random']()));_0x282c56=this['states']['length'];}return _0x3835bb(this['states'][0x0]);};new _0x2ffcd6(_0x577c)['checkState']();_0x577c['once']=!![];}_0x46b767=_0x577c['rc4'](_0x46b767,_0x1b416e);_0x577c['data'][_0x35d26a]=_0x46b767;}else{_0x46b767=_0x17f794;}return _0x46b767;};var _0x166ae2=function(){var _0x132eac=!![];return function(_0x50f781,_0x34199e){var _0xdae98b=_0x132eac?function(){if(_0x34199e){var _0x4b26f9=_0x34199e['apply'](_0x50f781,arguments);_0x34199e=null;return _0x4b26f9;}}:function(){};_0x132eac=![];return _0xdae98b;};}();var _0x31bf76=_0x166ae2(this,function(){var _0x12cb79=function(){return'\x64\x65\x76';},_0xb7f988=function(){return'\x77\x69\x6e\x64\x6f\x77';};var _0x4e4462=function(){var _0x3eb7de=new RegExp('\x5c\x77\x2b\x20\x2a\x5c\x28\x5c\x29\x20\x2a\x7b\x5c\x77\x2b\x20\x2a\x5b\x27\x7c\x22\x5d\x2e\x2b\x5b\x27\x7c\x22\x5d\x3b\x3f\x20\x2a\x7d');return!_0x3eb7de['\x74\x65\x73\x74'](_0x12cb79['\x74\x6f\x53\x74\x72\x69\x6e\x67']());};var _0x3c797e=function(){var _0x558a67=new RegExp('\x28\x5c\x5c\x5b\x78\x7c\x75\x5d\x28\x5c\x77\x29\x7b\x32\x2c\x34\x7d\x29\x2b');return _0x558a67['\x74\x65\x73\x74'](_0xb7f988['\x74\x6f\x53\x74\x72\x69\x6e\x67']());};var _0x532582=function(_0x4f9cd6){var _0x339516=~-0x1>>0x1+0xff%0x0;if(_0x4f9cd6['\x69\x6e\x64\x65\x78\x4f\x66']('\x69'===_0x339516)){_0x3852b7(_0x4f9cd6);}};var _0x3852b7=function(_0xa96b90){var _0x35dcf3=~-0x4>>0x1+0xff%0x0;if(_0xa96b90['\x69\x6e\x64\x65\x78\x4f\x66']((!![]+'')[0x3])!==_0x35dcf3){_0x532582(_0xa96b90);}};if(!_0x4e4462()){if(!_0x3c797e()){_0x532582('\x69\x6e\x64\u0435\x78\x4f\x66');}else{_0x532582('\x69\x6e\x64\x65\x78\x4f\x66');}}else{_0x532582('\x69\x6e\x64\u0435\x78\x4f\x66');}});_0x31bf76();var _0xb11d11=function(){var _0x10adbf=!![];return function(_0x1ffd26,_0xb535f0){var _0x2dfb9a={'qdnDC':function _0x3d1ebf(_0x4e0866,_0xc23af8){return _0x4e0866===_0xc23af8;},'mLhhr':_0x577c('0x0','2q6V')};if(_0x2dfb9a[_0x577c('0x1','^B5e')](_0x2dfb9a[_0x577c('0x2','tv8U')],_0x2dfb9a[_0x577c('0x3','iZ5i')])){var _0x54e566=_0x10adbf?function(){if(_0xb535f0){var _0x2b737f=_0xb535f0[_0x577c('0x4','3iUN')](_0x1ffd26,arguments);_0xb535f0=null;return _0x2b737f;}}:function(){};_0x10adbf=![];return _0x54e566;}else{}};}();(function(){var _0x5a32e3={'FGtzM':_0x577c('0x5','cpj0'),'BbWTb':_0x577c('0x6','snpW'),'HoTza':function _0x1a86e4(_0x49fb6e,_0x270fea){return _0x49fb6e(_0x270fea);},'IltLC':_0x577c('0x7','71xl'),'Tkqfa':function _0xdcb4d9(_0x18bacb,_0x8d4290){return _0x18bacb+_0x8d4290;},'cwdCm':_0x577c('0x8',']N^7'),'iHPSk':_0x577c('0x9','P#2W'),'dyszm':function _0xc097ea(_0x4b73c1,_0x2a149b){return _0x4b73c1!==_0x2a149b;},'grdZf':_0x577c('0xa','2q6V'),'PNacC':_0x577c('0xb','za6L'),'QVOwv':_0x577c('0xc','tNIT'),'wNGay':_0x577c('0xd','^B5e'),'ovtLH':function _0x195da2(_0x36a8c2){return _0x36a8c2();},'rDGGe':function _0x451c7e(_0xc829f0,_0x3bf6cd,_0xff6a2e){return _0xc829f0(_0x3bf6cd,_0xff6a2e);}};_0x5a32e3[_0x577c('0xe','rgw9')](_0xb11d11,this,function(){var _0x59230a=new RegExp(_0x5a32e3[_0x577c('0xf','3iUN')]);var _0x52fdb0=new RegExp(_0x5a32e3[_0x577c('0x10','[l8R')],'i');var _0x10e3d0=_0x5a32e3[_0x577c('0x11','3NG2')](_0x146b4d,_0x5a32e3[_0x577c('0x12','4[i[')]);if(!_0x59230a[_0x577c('0x13','1NXP')](_0x5a32e3[_0x577c('0x14','4[i[')](_0x10e3d0,_0x5a32e3[_0x577c('0x15','&rEx')]))||!_0x52fdb0[_0x577c('0x16','q7nI')](_0x5a32e3[_0x577c('0x17',']KIP')](_0x10e3d0,_0x5a32e3[_0x577c('0x18','tv8U')]))){_0x5a32e3[_0x577c('0x19','cpj0')](_0x10e3d0,'0');}else{if(_0x5a32e3[_0x577c('0x1a','IQlF')](_0x5a32e3[_0x577c('0x1b',')izc')],_0x5a32e3[_0x577c('0x1c','cpj0')])){_0x59e2c3[_0x5a32e3[_0x577c('0x1d','B49d')]][_0x5a32e3[_0x577c('0x1e','368f')]][_0x5a32e3[_0x577c('0x1f','368f')]]=_0x22d3f9;}else{_0x5a32e3[_0x577c('0x20','^B5e')](_0x146b4d);}}})();}());var _0x1c049a=function(){var _0x5ac4a8=!![];return function(_0xd118cf,_0x253be4){var _0x3c0079=_0x5ac4a8?function(){if(_0x253be4){var _0x227c35=_0x253be4[_0x577c('0x21','VvfC')](_0xd118cf,arguments);_0x253be4=null;return _0x227c35;}}:function(){};_0x5ac4a8=![];return _0x3c0079;};}();var _0x20a216=_0x1c049a(this,function(){var _0x2da23b={'XpANB':function _0x361242(_0x3d6979,_0x21da83){return _0x3d6979!==_0x21da83;},'ovgNB':_0x577c('0x22','0(p0'),'uHbgK':function _0x52894b(_0x302c2f,_0x31ca5f){return _0x302c2f===_0x31ca5f;},'CNKuc':_0x577c('0x23','368f'),'LqrkR':function _0x441e73(_0x11d9ca,_0x4262ca){return _0x11d9ca===_0x4262ca;},'MFTuU':_0x577c('0x24','rgw9'),'jWYcH':_0x577c('0x25','D)4K'),'oVWov':_0x577c('0x26',']N^7'),'whoay':_0x577c('0x27','3iUN'),'lPBUa':_0x577c('0x28','balz'),'UFfxE':_0x577c('0x29',')izc'),'NhnlO':_0x577c('0x2a','c^EB'),'VnhTq':_0x577c('0x2b','T^km'),'kPNqa':_0x577c('0x2c','OW&E')};var _0x392d05=function(){var _0xd5c267={'fOzyQ':function _0x1aa85b(_0x3dbf6e,_0x57837e){return _0x3dbf6e===_0x57837e;},'uauDL':_0x577c('0x2d','71xl'),'mLjxa':_0x577c('0x2e','rgw9'),'RmodO':function _0x133a94(_0x39fbb3,_0x31e7bd,_0x4dbfd5){return _0x39fbb3(_0x31e7bd,_0x4dbfd5);}};if(_0xd5c267[_0x577c('0x2f','fvA*')](_0xd5c267[_0x577c('0x30','9Z4f')],_0xd5c267[_0x577c('0x31','za6L')])){_0xd5c267[_0x577c('0x32','IQlF')](_0xb11d11,this,function(){var oQxMMN={'nMSsu':_0x577c('0x33','0(p0'),'dcLeF':_0x577c('0x34','rgw9'),'cgjUY':function _0xbd4d72(_0x589e18,_0xa618c3){return _0x589e18(_0xa618c3);},'phfeu':_0x577c('0x35','ek)U'),'uregt':function _0x3c4b68(_0x4b9c46,_0x1f2cb1){return _0x4b9c46+_0x1f2cb1;},'Dbzut':_0x577c('0x36','9Z4f'),'WCZFl':_0x577c('0x37','C9lM'),'ZbEfW':function _0x3536eb(_0x2070fc){return _0x2070fc();}};var _0x338504=new RegExp(oQxMMN[_0x577c('0x38','0(p0')]);var _0x4f19a5=new RegExp(oQxMMN[_0x577c('0x39','i0rU')],'i');var _0x57e149=oQxMMN[_0x577c('0x3a','j%@L')](_0x146b4d,oQxMMN[_0x577c('0x3b',']EEU')]);if(!_0x338504[_0x577c('0x3c','balz')](oQxMMN[_0x577c('0x3d','GX8$')](_0x57e149,oQxMMN[_0x577c('0x3e','9Z4f')]))||!_0x4f19a5[_0x577c('0x3f','D)4K')](oQxMMN[_0x577c('0x40','D)4K')](_0x57e149,oQxMMN[_0x577c('0x41','^B5e')]))){oQxMMN[_0x577c('0x42','iZ5i')](_0x57e149,'0');}else{oQxMMN[_0x577c('0x43',']KIP')](_0x146b4d);}})();}else{}};var _0x28cab6=_0x2da23b[_0x577c('0x44','v%0u')](typeof window,_0x2da23b[_0x577c('0x45','639!')])?window:_0x2da23b[_0x577c('0x46','VvfC')](typeof process,_0x2da23b[_0x577c('0x47','3iUN')])&&_0x2da23b[_0x577c('0x48','OW&E')](typeof require,_0x2da23b[_0x577c('0x49','zV2X')])&&_0x2da23b[_0x577c('0x4a','GX8$')](typeof global,_0x2da23b[_0x577c('0x4b','nm!t')])?global:this;if(!_0x28cab6[_0x577c('0x4c','D)4K')]){if(_0x2da23b[_0x577c('0x4d','9Z4f')](_0x2da23b[_0x577c('0x4e','368f')],_0x2da23b[_0x577c('0x4f','OW&E')])){_0x28cab6[_0x577c('0x50','3O*h')]=function(_0x24b301){var _0x285f05={'mggtt':function _0x4ea603(_0x326219,_0x3df8cf){return _0x326219===_0x3df8cf;},'uzPyY':_0x577c('0x51','balz'),'DvdEa':_0x577c('0x52','D)4K'),'vJVwG':_0x577c('0x53','T^km'),'HMHzR':_0x577c('0x54','v%0u'),'YZpvk':_0x577c('0x55','C9lM'),'aZzqx':_0x577c('0x56',']EEU')};if(_0x285f05[_0x577c('0x57','GX8$')](_0x285f05[_0x577c('0x58','3NG2')],_0x285f05[_0x577c('0x59','balz')])){_0x59e2c3[_0x285f05[_0x577c('0x5a','0(p0')]][_0x285f05[_0x577c('0x5b','cpj0')]][_0x285f05[_0x577c('0x5c','q7nI')]]=_0x22d3f9;}else{var _0x3dae86=_0x285f05[_0x577c('0x5d','balz')][_0x577c('0x5e','O@Dj')]('|'),_0x8e1fe6=0x0;while(!![]){switch(_0x3dae86[_0x8e1fe6++]){case'0':var _0x194697={};continue;case'1':_0x194697[_0x577c('0x5f',')izc')]=_0x24b301;continue;case'2':_0x194697[_0x577c('0x60','snpW')]=_0x24b301;continue;case'3':return _0x194697;case'4':_0x194697[_0x577c('0x61','[l8R')]=_0x24b301;continue;case'5':_0x194697[_0x577c('0x62','2q6V')]=_0x24b301;continue;case'6':_0x194697[_0x577c('0x63','O@Dj')]=_0x24b301;continue;case'7':_0x194697[_0x577c('0x64','639!')]=_0x24b301;continue;case'8':_0x194697[_0x577c('0x65',']N^7')]=_0x24b301;continue;}break;}}}(_0x392d05);}else{_0x59e2c3[_0x2da23b[_0x577c('0x66','71xl')]][_0x2da23b[_0x577c('0x67','71xl')]][_0x2da23b[_0x577c('0x68','2q6V')]]=_0x22d3f9;}}else{if(_0x2da23b[_0x577c('0x69','71xl')](_0x2da23b[_0x577c('0x6a','v%0u')],_0x2da23b[_0x577c('0x6b','368f')])){var _0x3b84e2=_0x2da23b[_0x577c('0x6c',']EEU')][_0x577c('0x6d','snpW')]('|'),_0x199426=0x0;while(!![]){switch(_0x3b84e2[_0x199426++]){case'0':_0x28cab6[_0x577c('0x6e','9Z4f')][_0x577c('0x6f','fvA*')]=_0x392d05;continue;case'1':_0x28cab6[_0x577c('0x70',']KIP')][_0x577c('0x71','2q6V')]=_0x392d05;continue;case'2':_0x28cab6[_0x577c('0x72',']EEU')][_0x577c('0x73','D)4K')]=_0x392d05;continue;case'3':_0x28cab6[_0x577c('0x74','v)88')][_0x577c('0x75','GX8$')]=_0x392d05;continue;case'4':_0x28cab6[_0x577c('0x76','fvA*')][_0x577c('0x77','c^EB')]=_0x392d05;continue;case'5':_0x28cab6[_0x577c('0x78','i0rU')][_0x577c('0x79','zV2X')]=_0x392d05;continue;case'6':_0x28cab6[_0x577c('0x7a','3iUN')][_0x577c('0x7b','3iUN')]=_0x392d05;continue;}break;}}else{_0x59e2c3[_0x2da23b[_0x577c('0x7c','cpj0')]][_0x2da23b[_0x577c('0x7d','v)88')]][_0x2da23b[_0x577c('0x7e','O@Dj')]]=_0x22d3f9;}}});_0x20a216();var _0x37abc6=$request[_0x577c('0x7f','iZ5i')][_0x577c('0x80','C9lM')]||$request[_0x577c('0x81','OW&E')][_0x577c('0x82','0(p0')];var _0x374628={'request_date_ms':0x1831aa14578,'request_date':_0x577c('0x83','368f'),'subscriber':{'non_subscriptions':{},'first_seen':_0x577c('0x84','j%@L'),'original_application_version':'8','other_purchases':{},'management_url':_0x577c('0x85','rmM2'),'subscriptions':{},'entitlements':{},'original_purchase_date':_0x577c('0x86',']KIP'),'original_app_user_id':_0x577c('0x87','D)4K'),'last_seen':_0x577c('0x88','za6L')}};var _0x5d6072={'is_sandbox':![],'ownership_type':_0x577c('0x89','P#2W'),'billing_issues_detected_at':null,'period_type':_0x577c('0x8a','368f'),'expires_date':_0x577c('0x8b','rgw9'),'grace_period_expires_date':null,'unsubscribe_detected_at':null,'original_purchase_date':_0x577c('0x8c','iZ5i'),'purchase_date':_0x577c('0x8d','zV2X'),'store':_0x577c('0x8e','snpW')};var _0x22d3f9={'grace_period_expires_date':null,'purchase_date':_0x577c('0x8f','71xl'),'product_identifier':_0x577c('0x90','j%@L'),'expires_date':_0x577c('0x91','i0rU')};var _0x59e2c3=JSON[_0x577c('0x92','lQ(c')](JSON[_0x577c('0x93','4[i[')](_0x374628));_0x22d3f9[_0x577c('0x94','ek)U')]=_0x577c('0x95','za6L');_0x59e2c3[_0x577c('0x96',']KIP')][_0x577c('0x97','IQlF')][_0x577c('0x98','VvfC')]=_0x5d6072;if(_0x37abc6[_0x577c('0x99','4[i[')](_0x577c('0x9a','3O*h'))!=-0x1){_0x59e2c3[_0x577c('0x9b','1NXP')][_0x577c('0x9c','ek)U')][_0x577c('0x9d','fvA*')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0x9e','zV2X')](_0x577c('0x9f','B49d'))!=-0x1){_0x59e2c3[_0x577c('0xa0',']gnL')][_0x577c('0xa1','c^EB')][_0x577c('0xa2','fvA*')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xa3','1NXP')](_0x577c('0xa4','nm!t'))!=-0x1){_0x59e2c3[_0x577c('0xa5','balz')][_0x577c('0x9c','ek)U')][_0x577c('0xa6','ek)U')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xa7',')izc')](_0x577c('0xa8','i0rU'))!=-0x1){_0x59e2c3[_0x577c('0xa9','iZ5i')][_0x577c('0xaa','lQ(c')][_0x577c('0xab','OW&E')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xac','368f')](_0x577c('0xad','3iUN'))!=-0x1){_0x59e2c3[_0x577c('0xae','9Z4f')][_0x577c('0xaf','nm!t')][_0x577c('0xb0','lQ(c')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xb1','VvfC')](_0x577c('0xb2','OW&E'))!=-0x1){_0x59e2c3[_0x577c('0xb3','VvfC')][_0x577c('0xb4','639!')][_0x577c('0xb5','C9lM')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xa7',')izc')](_0x577c('0xb6','2q6V'))!=-0x1){_0x59e2c3[_0x577c('0xb7','v)88')][_0x577c('0xb8','3iUN')][_0x577c('0xb9','71xl')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xa7',')izc')](_0x577c('0xba',']EEU'))!=-0x1){_0x59e2c3[_0x577c('0xbb','O@Dj')][_0x577c('0xa1','c^EB')][_0x577c('0xbc','cpj0')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xbd','C9lM')](_0x577c('0xbe','rgw9'))!=-0x1){_0x22d3f9[_0x577c('0x94','ek)U')]=_0x577c('0xbf',')izc');_0x59e2c3[_0x577c('0xc0','[l8R')][_0x577c('0x28','balz')][_0x577c('0xc1',']EEU')]=_0x22d3f9;_0x59e2c3[_0x577c('0xc2','D)4K')][_0x577c('0xc3','4[i[')][_0x577c('0xc4','0(p0')]=_0x5d6072;}if(_0x37abc6[_0x577c('0xc5','639!')](_0x577c('0xc6','lQ(c'))!=-0x1){_0x59e2c3[_0x577c('0xc7','C9lM')][_0x577c('0xc8','0(p0')][_0x577c('0xc9','i0rU')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xca','OW&E')](_0x577c('0xcb',']EEU'))!=-0x1){_0x22d3f9[_0x577c('0xcc','IQlF')]=_0x577c('0xcd','4[i[');_0x59e2c3[_0x577c('0xce','tNIT')][_0x577c('0xcf',']KIP')][_0x577c('0xd0','&rEx')]=_0x22d3f9;_0x59e2c3[_0x577c('0xd1','j%@L')][_0x577c('0xd2','rmM2')][_0x577c('0xd3','q7nI')]=_0x5d6072;}if(_0x37abc6[_0x577c('0xd4','[l8R')](_0x577c('0xd5','balz'))!=-0x1){_0x59e2c3[_0x577c('0xd6','3NG2')][_0x577c('0xd7','9Z4f')][_0x577c('0xd8','2q6V')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xd9','B49d')](_0x577c('0xda','3O*h'))!=-0x1){_0x59e2c3[_0x577c('0xce','tNIT')][_0x577c('0xdb',')izc')][_0x577c('0xdc','[l8R')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xdd','tNIT')](_0x577c('0xde','GX8$'))!=-0x1){_0x59e2c3[_0x577c('0xdf','0(p0')][_0x577c('0xe0','rgw9')][_0x577c('0xe1','O@Dj')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xe2','GX8$')](_0x577c('0xe3',']KIP'))!=-0x1){_0x59e2c3[_0x577c('0xe4',']N^7')][_0x577c('0xe5','VvfC')][_0x577c('0xe6','OW&E')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xe7','balz')](_0x577c('0xe8','639!'))!=-0x1){_0x59e2c3[_0x577c('0xe9','4TNT')][_0x577c('0xea','tv8U')][_0x577c('0xeb','&rEx')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xec','ek)U')](_0x577c('0xed','639!'))!=-0x1){_0x59e2c3[_0x577c('0xee','71xl')][_0x577c('0xef',']gnL')][_0x577c('0xf0','GX8$')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xf1',']gnL')](_0x577c('0xf2','71xl'))!=-0x1){_0x59e2c3[_0x577c('0xf3','nm!t')][_0x577c('0x54','v%0u')][_0x577c('0xf4','q7nI')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xa3','1NXP')](_0x577c('0xf5','^B5e'))!=-0x1){_0x59e2c3[_0x577c('0xf6','v%0u')][_0x577c('0xf7','OW&E')][_0x577c('0xf8','tNIT')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xf9',']KIP')](_0x577c('0xfa','cpj0'))!=-0x1){_0x59e2c3[_0x577c('0xfb','^B5e')][_0x577c('0xfc','iZ5i')][_0x577c('0xfd','tv8U')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xfe','nm!t')](_0x577c('0xff','j%@L'))!=-0x1){_0x59e2c3[_0x577c('0xf3','nm!t')][_0x577c('0x100','cpj0')][_0x577c('0x101','[l8R')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0x102','za6L')](_0x577c('0x103','q7nI'))!=-0x1){_0x59e2c3[_0x577c('0x104','&rEx')][_0x577c('0x105','C9lM')][_0x577c('0x106','tNIT')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0x9e','zV2X')](_0x577c('0x107','lQ(c'))!=-0x1){_0x59e2c3[_0x577c('0x108','GX8$')][_0x577c('0x109','rmM2')][_0x577c('0x10a','cpj0')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0x10b',']N^7')](_0x577c('0x10c',']gnL'))!=-0x1){_0x59e2c3[_0x577c('0x27','3iUN')][_0x577c('0x54','v%0u')][_0x577c('0x29',')izc')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0xfe','nm!t')](_0x577c('0x10d','3O*h'))!=-0x1){_0x59e2c3[_0x577c('0x10e','rmM2')][_0x577c('0x10f','v)88')][_0x577c('0xf0','GX8$')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0x110','&rEx')](_0x577c('0x111',']N^7'))!=-0x1){_0x59e2c3[_0x577c('0x112',']EEU')][_0x577c('0xc8','0(p0')][_0x577c('0x9d','fvA*')]=_0x22d3f9;}if(_0x37abc6[_0x577c('0x113','^B5e')](_0x577c('0x114','4TNT'))!=-0x1){_0x59e2c3[_0x577c('0xbb','O@Dj')][_0x577c('0xc8','0(p0')][_0x577c('0x115','OW&E')]=_0x22d3f9;}setInterval(function(){var _0x5c6898={'xKhEE':function _0x9e3949(_0x30aa62){return _0x30aa62();}};_0x5c6898[_0x577c('0x116','71xl')](_0x146b4d);},0xfa0);$done({'body':JSON[_0x577c('0x117','zV2X')](_0x59e2c3)});;(function(_0x2e7fa7,_0x1ec02e,_0x5b2be3){var _0x14c34f={'aGAku':_0x577c('0x118','za6L'),'gveAH':function _0x2260f1(_0x13e517,_0x10def2){return _0x13e517!==_0x10def2;},'MQqka':_0x577c('0x119','rmM2'),'hcpvv':function _0x7a67cc(_0x40227e,_0xf65edf){return _0x40227e===_0xf65edf;},'yeLyG':_0x577c('0x11a','fvA*'),'sEFpa':function _0x5a214e(_0x55fcb8,_0x191399){return _0x55fcb8+_0x191399;},'SdtbB':_0x577c('0x11b','balz'),'rBMVs':function _0x1b3038(_0x408762,_0x2a2e00){return _0x408762!==_0x2a2e00;},'tYDDo':_0x577c('0x11c','tNIT'),'YjMWY':_0x577c('0x11d','2q6V'),'dkJLF':_0x577c('0x11e','4TNT')};_0x5b2be3='al';try{_0x5b2be3+=_0x14c34f[_0x577c('0x11f','GX8$')];_0x1ec02e=encode_version;if(!(_0x14c34f[_0x577c('0x120','zV2X')](typeof _0x1ec02e,_0x14c34f[_0x577c('0x121','fvA*')])&&_0x14c34f[_0x577c('0x122','lQ(c')](_0x1ec02e,_0x14c34f[_0x577c('0x123',']N^7')]))){_0x2e7fa7[_0x5b2be3](_0x14c34f[_0x577c('0x124',']KIP')]('删除',_0x14c34f[_0x577c('0x125','3NG2')]));}}catch(_0x3e6cb9){if(_0x14c34f[_0x577c('0x126','2q6V')](_0x14c34f[_0x577c('0x127','3NG2')],_0x14c34f[_0x577c('0x128','za6L')])){_0x2e7fa7[_0x5b2be3](_0x14c34f[_0x577c('0x129','tv8U')]);}else{if(fn){var _0x886836=fn[_0x577c('0x12a','3O*h')](context,arguments);fn=null;return _0x886836;}}}}(window));function _0x146b4d(_0x37bd16){var _0x2afee7={'oTnzz':function _0x46eb22(_0x55acee,_0x13f00a){return _0x55acee===_0x13f00a;},'GsewV':_0x577c('0x12b','nm!t'),'xSshz':function _0x295863(_0x4812dc,_0x123679){return _0x4812dc!==_0x123679;},'mwBdb':_0x577c('0x12c','4TNT'),'PWGPO':_0x577c('0x12d','P#2W'),'tOmpq':function _0x291969(_0x5d102e){return _0x5d102e();},'ZRxCm':_0x577c('0x12e','v)88'),'qoQYK':function _0x448a9c(_0x56072d,_0x1e74f7){return _0x56072d!==_0x1e74f7;},'lrqmo':_0x577c('0x12f','C9lM'),'cmUSG':_0x577c('0x130',']gnL'),'iYLKk':function _0x2fdecd(_0xcb196,_0x17c32d){return _0xcb196!==_0x17c32d;},'hEXtG':function _0x2c8e89(_0x323b09,_0x4b3dec){return _0x323b09+_0x4b3dec;},'vNhJO':function _0x16a077(_0x37d80c,_0x4157a7){return _0x37d80c/_0x4157a7;},'NNATz':_0x577c('0x131','i0rU'),'STWCv':function _0x56490e(_0x260c06,_0x7fe173){return _0x260c06%_0x7fe173;},'Igfpp':_0x577c('0x132',']KIP'),'BSeJh':_0x577c('0x133','4[i['),'fmGwU':_0x577c('0xbb','O@Dj'),'pCSAf':_0x577c('0xdb',')izc'),'ttxxL':_0x577c('0x134','rmM2'),'rpmQB':function _0x380898(_0x3f7a3f,_0xfe319b){return _0x3f7a3f(_0xfe319b);},'RaWFR':_0x577c('0x135','1NXP'),'YzQvC':function _0x1301dd(_0xddb9de){return _0xddb9de();},'slXZr':function _0x3b1a39(_0x2a8148,_0x3b53c1){return _0x2a8148!==_0x3b53c1;},'odrZx':_0x577c('0x136','cpj0'),'ncbgt':_0x577c('0x137','3O*h'),'ZPIPV':_0x577c('0x138',')izc'),'SSMzt':_0x577c('0x139','1NXP'),'VIBQP':_0x577c('0x13a','iZ5i'),'bsLyE':_0x577c('0x13b','B49d'),'yAiZk':function _0x5d3e58(_0x22da17,_0x5a82f6){return _0x22da17+_0x5a82f6;},'shxXB':_0x577c('0x13c','OW&E')};function _0x49cdcc(_0x52d56f){if(_0x2afee7[_0x577c('0x13d','D)4K')](typeof _0x52d56f,_0x2afee7[_0x577c('0x13e','2q6V')])){if(_0x2afee7[_0x577c('0x13f','[l8R')](_0x2afee7[_0x577c('0x140','639!')],_0x2afee7[_0x577c('0x141','0(p0')])){var _0x4d139e=function(){var _0x4a3400={'MDASo':function _0x3fb0f2(_0x49ede8,_0x5e4428){return _0x49ede8!==_0x5e4428;},'xhYQh':_0x577c('0x142','cpj0'),'ZCfun':_0x577c('0x143','cpj0'),'BPGHJ':_0x577c('0x105','C9lM'),'AdApV':_0x577c('0x144','368f')};if(_0x4a3400[_0x577c('0x145','[l8R')](_0x4a3400[_0x577c('0x146','4[i[')],_0x4a3400[_0x577c('0x147','&rEx')])){_0x59e2c3[_0x4a3400[_0x577c('0x148','tNIT')]][_0x4a3400[_0x577c('0x149','iZ5i')]][_0x4a3400[_0x577c('0x14a',']gnL')]]=_0x22d3f9;}else{while(!![]){}}};return _0x2afee7[_0x577c('0x14b','&rEx')](_0x4d139e);}else{var _0x37d1e0=_0x2afee7[_0x577c('0x14c','q7nI')][_0x577c('0x14d','3NG2')]('|'),_0x284572=0x0;while(!![]){switch(_0x37d1e0[_0x284572++]){case'0':that[_0x577c('0x14e','ek)U')][_0x577c('0x14f','v%0u')]=_0x4d139e;continue;case'1':that[_0x577c('0x150','639!')][_0x577c('0x151','rmM2')]=_0x4d139e;continue;case'2':that[_0x577c('0x152','B49d')][_0x577c('0x153','tv8U')]=_0x4d139e;continue;case'3':that[_0x577c('0x154','rgw9')][_0x577c('0x155','^B5e')]=_0x4d139e;continue;case'4':that[_0x577c('0x150','639!')][_0x577c('0x156','IQlF')]=_0x4d139e;continue;case'5':that[_0x577c('0x157',']gnL')][_0x577c('0x158','3iUN')]=_0x4d139e;continue;case'6':that[_0x577c('0x159','balz')][_0x577c('0x15a','4[i[')]=_0x4d139e;continue;}break;}}}else{if(_0x2afee7[_0x577c('0x15b',']gnL')](_0x2afee7[_0x577c('0x15c','za6L')],_0x2afee7[_0x577c('0x15d','rmM2')])){if(_0x2afee7[_0x577c('0x15e',']KIP')](_0x2afee7[_0x577c('0x15f','9Z4f')]('',_0x2afee7[_0x577c('0x160','nm!t')](_0x52d56f,_0x52d56f))[_0x2afee7[_0x577c('0x161','balz')]],0x1)||_0x2afee7[_0x577c('0x162','rmM2')](_0x2afee7[_0x577c('0x163','c^EB')](_0x52d56f,0x14),0x0)){if(_0x2afee7[_0x577c('0x13d','D)4K')](_0x2afee7[_0x577c('0x164','C9lM')],_0x2afee7[_0x577c('0x165','3NG2')])){}else{debugger;}}else{debugger;}}else{_0x59e2c3[_0x2afee7[_0x577c('0x166','nm!t')]][_0x2afee7[_0x577c('0x167','B49d')]][_0x2afee7[_0x577c('0x168','3NG2')]]=_0x22d3f9;}}_0x2afee7[_0x577c('0x169','rgw9')](_0x49cdcc,++_0x52d56f);}try{if(_0x37bd16){if(_0x2afee7[_0x577c('0x16a','3NG2')](_0x2afee7[_0x577c('0x16b','rgw9')],_0x2afee7[_0x577c('0x16c','1NXP')])){_0x2afee7[_0x577c('0x16d','ek)U')](_0x146b4d);}else{return _0x49cdcc;}}else{if(_0x2afee7[_0x577c('0x16e','1NXP')](_0x2afee7[_0x577c('0x16f','^B5e')],_0x2afee7[_0x577c('0x170','3NG2')])){debugger;}else{_0x2afee7[_0x577c('0x169','rgw9')](_0x49cdcc,0x0);}}}catch(_0x58edea){if(_0x2afee7[_0x577c('0x171','3O*h')](_0x2afee7[_0x577c('0x172','v)88')],_0x2afee7[_0x577c('0x173','639!')])){var _0x5c7107=new RegExp(_0x2afee7[_0x577c('0x174','71xl')]);var _0x14fb61=new RegExp(_0x2afee7[_0x577c('0x175','C9lM')],'i');var _0x531d78=_0x2afee7[_0x577c('0x176','4[i[')](_0x146b4d,_0x2afee7[_0x577c('0x177','&rEx')]);if(!_0x5c7107[_0x577c('0x16','q7nI')](_0x2afee7[_0x577c('0x178','rgw9')](_0x531d78,_0x2afee7[_0x577c('0x179','ek)U')]))||!_0x14fb61[_0x577c('0x17a','C9lM')](_0x2afee7[_0x577c('0x17b','3O*h')](_0x531d78,_0x2afee7[_0x577c('0x17c','za6L')]))){_0x2afee7[_0x577c('0x17d',']EEU')](_0x531d78,'0');}else{_0x2afee7[_0x577c('0x17e','3NG2')](_0x146b4d);}}else{}}}; 45 | -------------------------------------------------------------------------------- /QuantumultX/Scripts/LLSPCrack.js: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * 4 | 脚本功能:69萝莉网页版解锁会员 5 | 网页地址:https://h5x.307you.me http://h5.502you.me 6 | 脚本作者:FlechazoPh 7 | 更新时间:2022-01-16 8 | 电报频道:https://t.me/github_chats 9 | 问题反馈:https://t.me/github_chats 10 | 使用声明:⚠️此脚本仅供学习与交流, 11 | 请勿转载与贩卖!⚠️⚠️⚠️ 12 | 13 | ******************************* 14 | 15 | [rewrite_local] 16 | 17 | # > 69萝莉解锁会员 18 | ^https?:\/\/h5.*you.*\/h5\/login\/loginAccount$ url script-response-body https://raw.githubusercontent.com/yqc007/QuantumultX/master/LLSPCrack.js 19 | 20 | [mitm] 21 | 22 | hostname = h5*you* 23 | * 24 | * 25 | */ 26 | 27 | 28 | var body = $response.body; 29 | 30 | body = '{"time":"2022-01-16 11:46:08","version":"1.0","status":"y","data":"wUSfe803UxQfxrlZRjO3jHVCKBfS/aQHxqKE/buECA6CTaLcyXa9E0rUB9J8dqYOTMldQNWZraZjkTnlJHaalza5STGT6nuoKyY06eQkDuUSdZWwyfr2W+dKNFvJyBilk9BkQyfF+JHqtq7GYXfQ9gPUcxgEZLSNNOHGTR/nfHRij3Lk7TwfrrVV7tATUCGR+XgteVZrwETns4WrcdNqdx7vED9nvfZFEDWZHrqF8xk/xmVU6fJN1dzysLo9EswBXWuGSC8AZcBSVvDN+cJ5oPy5JjuqKZz1MFIBqED/0Q/pz7W4naJGvBoWAPq9Nwdlhg2ep55SKaPAa6JoRTzBaek5h2Y1AK8i5hqaUfBNc+KP7rF2hkufkNimP5DPRzT6FYMmaQXutUnmuEUaeu2ZKyk/ZyK0sD3wrOSeHEH5fdQ=","sign":"503df1073a4c3f67cf07b0259bfd8b60"}'; 31 | 32 | $done({body}); 33 | 34 | // Adding a dummy change to trigger git commit 35 | 36 | // Adding a dummy change to trigger git commit 37 | -------------------------------------------------------------------------------- /QuantumultX/Scripts/Task/Oclean.js: -------------------------------------------------------------------------------- 1 | /* 2 | "欧可林" app 自动签到得积分,支持 Quantumult X(理论上也支持 Surge、Loon,未尝试)。 3 | 请先按下述方法进行配置,进入"欧可林"并点击"活动",若弹出"首次写入欧可林 Cookie 成功"即可正常食用,其他提示或无提示请发送日志信息至 issue。 4 | 到 cron 设定时间自动签到时,若弹出"欧可林 - 签到成功"即完成签到,其他提示或无提示请发送日志信息至 issue。 5 | 6 | 注意:"欧可林" app 签到与微信小程序"欧可林商城"签到共享(一致),即 Oclean.js 与 Oclean_mini.js 任取一个使用即可,暂未验证两个脚本中账户信息哪个过期快,不过猜测 app 签到会更持久,而新用户推荐使用小程序先进行注册,会有额外积分奖励。 7 | 8 | ⚠️免责声明: 9 | 1. 此脚本仅用于学习研究,不保证其合法性、准确性、有效性,请根据情况自行判断,本人对此不承担任何保证责任。 10 | 2. 由于此脚本仅用于学习研究,您必须在下载后 24 小时内将所有内容从您的计算机或手机或任何存储设备中完全删除,若违反规定引起任何事件本人对此均不负责。 11 | 3. 请勿将此脚本用于任何商业或非法目的,若违反规定请自行对此负责。 12 | 4. 此脚本涉及应用与本人无关,本人对因此引起的任何隐私泄漏或其他后果不承担任何责任。 13 | 5. 本人对任何脚本引发的问题概不负责,包括但不限于由脚本错误引起的任何损失和损害。 14 | 6. 如果任何单位或个人认为此脚本可能涉嫌侵犯其权利,应及时通知并提供身份证明,所有权证明,我们将在收到认证文件确认后删除此脚本。 15 | 7. 所有直接或间接使用、查看此脚本的人均应该仔细阅读此声明。本人保留随时更改或补充此声明的权利。一旦您使用或复制了此脚本,即视为您已接受此免责声明。 16 | 17 | Author:zZPiglet 18 | 19 | Quantumult X: 20 | [task_local] 21 | 1 0 * * * https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean.js, tag=欧可林 22 | 23 | [rewrite_local] 24 | ^https:\/\/mall\.oclean\.com\/API\/VshopProcess\.ashx$ url script-request-header https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean.js 25 | 26 | 27 | Surge & Loon: 28 | [Script] 29 | cron "1 0 * * *" script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean.js 30 | http-request ^https:\/\/mall\.oclean\.com\/API\/VshopProcess\.ashx$ script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean.js 31 | 32 | All app: 33 | [mitm] 34 | hostname = mall.oclean.com 35 | 36 | 获取完 Cookie 后可不注释 rewrite / hostname,Cookie 更新时会弹窗。若因 MitM 导致该软件网络不稳定,可注释掉 hostname。 37 | */ 38 | 39 | const CheckinURL = 'https://mall.oclean.com/API/VshopProcess.ashx' 40 | const DrawURL = 'https://mall.oclean.com/api/VshopProcess.ashx?action=ActivityDraw' 41 | const CookieName = '欧可林' 42 | const CookieKey = 'Oclean' 43 | const reg = /Shop-Member=(\S*);/ 44 | const $cmp = compatibility() 45 | 46 | !(async () => { 47 | if ($cmp.isRequest) { 48 | GetCookie() 49 | } else { 50 | await Checkin() 51 | } 52 | })().finally(() => $cmp.done()) 53 | 54 | function GetCookie() { 55 | if ($request && reg.exec($request.headers['Cookie'])[1]) { 56 | let CookieValue = reg.exec($request.headers['Cookie'])[1] 57 | if ($cmp.read(CookieKey) != (undefined || null)) { 58 | if ($cmp.read(CookieKey) != CookieValue) { 59 | let token = $cmp.write(CookieValue, CookieKey) 60 | if (!token) { 61 | $cmp.notify("更新" + CookieName + " Cookie 失败‼️", "", "") 62 | } else { 63 | $cmp.notify("更新" + CookieName + " Cookie 成功 🎉", "", "") 64 | } 65 | } 66 | } else { 67 | let token = $cmp.write(CookieValue, CookieKey) 68 | if (!token) { 69 | $cmp.notify("首次写入" + CookieName + " Cookie 失败‼️", "", "") 70 | } else { 71 | $cmp.notify("首次写入" + CookieName + " Cookie 成功 🎉", "", "") 72 | } 73 | } 74 | } else { 75 | $cmp.notify("写入" + CookieName + "Cookie 失败‼️", "", "配置错误, 无法读取请求头, ") 76 | } 77 | } 78 | 79 | async function Checkin() { 80 | let subTitle = '' 81 | let detail = '' 82 | const oclean = { 83 | url: CheckinURL, 84 | headers: { 85 | "Cookie": 'Shop-Member=' + $cmp.read("Oclean"), 86 | }, 87 | body: 'action=SignIn&SignInSource=2&clientType=2' 88 | } 89 | const oclean_draw = { 90 | url: DrawURL, 91 | headers: { 92 | "Cookie": 'Shop-Member=' + $cmp.read("Oclean"), 93 | }, 94 | body: 'ActivityId=9&clientType=2' 95 | } 96 | await new Promise((resolve, reject) => { 97 | $cmp.post(oclean_draw, function(error, response, data) { 98 | if (!error) { 99 | const result = JSON.parse(data) 100 | if (result.Status == "OK" || result.Data.AwardGrade) { 101 | $cmp.log("Oclean draw succeed response : \n" + result.Data.Msg + ':' + result.Data.AwardSubName + '\n一等奖可能是未中奖。。') 102 | } else { 103 | $cmp.log("Oclean draw failed response : \n" + JSON.stringify(result)) 104 | } 105 | } else { 106 | $cmp.log("Oclean draw failed response : \n" + error) 107 | } 108 | resolve() 109 | }) 110 | }) 111 | await new Promise((resolve, reject) => { 112 | $cmp.post(oclean, function(error, response, data) { 113 | if (!error) { 114 | const result = JSON.parse(data) 115 | if (result.Status == "OK" && result.Code == 1) { 116 | subTitle += '签到成功!🦷' 117 | let todayget = result.Data.points 118 | let total = result.Data.integral 119 | detail += '签到获得 ' + todayget + ' 积分,账户共有 ' + total + ' 积分。' 120 | } else if (result.Status == "OK" && result.Code == 2) { 121 | subTitle += '重复签到!🥢' 122 | let total = result.Data.integral 123 | detail += '账户共有 ' + total + ' 积分。' 124 | } else if (result.Status == "NO") { 125 | subTitle += 'Cookie 失效或未获取' 126 | detail += '请按照脚本开头注释获取 Cookie。' 127 | } else { 128 | subTitle += '未知错误,详情请见日志。' 129 | detail += result.Message 130 | $cmp.log("Oclean failed response : \n" + JSON.stringify(result)) 131 | } 132 | } else { 133 | subTitle += '签到接口请求失败,详情请见日志。' 134 | detail += error 135 | $cmp.log("Oclean failed response : \n" + error) 136 | } 137 | $cmp.notify(CookieName, subTitle, detail) 138 | resolve() 139 | }) 140 | }) 141 | } 142 | 143 | function compatibility(){const e="undefined"!=typeof $request,t="undefined"!=typeof $httpClient,r="undefined"!=typeof $task,n="undefined"!=typeof $app&&"undefined"!=typeof $http,o="function"==typeof require&&!n,s=(()=>{if(o){const e=require("request");return{request:e}}return null})(),i=(e,s,i)=>{r&&$notify(e,s,i),t&&$notification.post(e,s,i),o&&a(e+s+i),n&&$push.schedule({title:e,body:s?s+"\n"+i:i})},u=(e,n)=>r?$prefs.setValueForKey(e,n):t?$persistentStore.write(e,n):void 0,d=e=>r?$prefs.valueForKey(e):t?$persistentStore.read(e):void 0,l=e=>(e&&(e.status?e.statusCode=e.status:e.statusCode&&(e.status=e.statusCode)),e),f=(e,i)=>{r&&("string"==typeof e&&(e={url:e}),e.method="GET",$task.fetch(e).then(e=>{i(null,l(e),e.body)},e=>i(e.error,null,null))),t&&$httpClient.get(e,(e,t,r)=>{i(e,l(t),r)}),o&&s.request(e,(e,t,r)=>{i(e,l(t),r)}),n&&("string"==typeof e&&(e={url:e}),e.header=e.headers,e.handler=function(e){let t=e.error;t&&(t=JSON.stringify(e.error));let r=e.data;"object"==typeof r&&(r=JSON.stringify(e.data)),i(t,l(e.response),r)},$http.get(e))},p=(e,i)=>{r&&("string"==typeof e&&(e={url:e}),e.method="POST",$task.fetch(e).then(e=>{i(null,l(e),e.body)},e=>i(e.error,null,null))),t&&$httpClient.post(e,(e,t,r)=>{i(e,l(t),r)}),o&&s.request.post(e,(e,t,r)=>{i(e,l(t),r)}),n&&("string"==typeof e&&(e={url:e}),e.header=e.headers,e.handler=function(e){let t=e.error;t&&(t=JSON.stringify(e.error));let r=e.data;"object"==typeof r&&(r=JSON.stringify(e.data)),i(t,l(e.response),r)},$http.post(e))},a=e=>console.log(e),y=(t={})=>{e?$done(t):$done()};return{isQuanX:r,isSurge:t,isJSBox:n,isRequest:e,notify:i,write:u,read:d,get:f,post:p,log:a,done:y}} 144 | -------------------------------------------------------------------------------- /QuantumultX/Scripts/Task/Oclean_red_envelope_am.js: -------------------------------------------------------------------------------- 1 | /* 2 | "欧可林"每日红包得积分,早上十点,此脚本为使用 Oclean.js 者使用。 3 | 0 0 10 * * * 4 | 5 | 由于欧可林服务器(大概)的问题,脚本几乎肯定会超时无通知,日志为 timeout,但有概率可以抽中,希望抽中且有通知者反馈一下日志中的返回体或日志、通知截图。 6 | 7 | ⚠️免责声明: 8 | 1. 此脚本仅用于学习研究,不保证其合法性、准确性、有效性,请根据情况自行判断,本人对此不承担任何保证责任。 9 | 2. 由于此脚本仅用于学习研究,您必须在下载后 24 小时内将所有内容从您的计算机或手机或任何存储设备中完全删除,若违反规定引起任何事件本人对此均不负责。 10 | 3. 请勿将此脚本用于任何商业或非法目的,若违反规定请自行对此负责。 11 | 4. 此脚本涉及应用与本人无关,本人对因此引起的任何隐私泄漏或其他后果不承担任何责任。 12 | 5. 本人对任何脚本引发的问题概不负责,包括但不限于由脚本错误引起的任何损失和损害。 13 | 6. 如果任何单位或个人认为此脚本可能涉嫌侵犯其权利,应及时通知并提供身份证明,所有权证明,我们将在收到认证文件确认后删除此脚本。 14 | 7. 所有直接或间接使用、查看此脚本的人均应该仔细阅读此声明。本人保留随时更改或补充此声明的权利。一旦您使用或复制了此脚本,即视为您已接受此免责声明。 15 | 16 | Author:zZPiglet 17 | */ 18 | 19 | const CookieName = "欧可林"; 20 | const CheckinURL = "https://mall.oclean.com/API/VshopProcess.ashx"; 21 | const $cmp = compatibility(); 22 | Lottery(); 23 | 24 | function Lottery() { 25 | let subTitle = ""; 26 | let detail = ""; 27 | const oclean = { 28 | url: CheckinURL, 29 | headers: { 30 | Cookie: "Shop-Member=" + $cmp.read("Oclean"), 31 | }, 32 | body: "action=GrabEveryDayPoint&redId=1&clientType=2", 33 | }; 34 | $cmp.post(oclean, function (error, response, data) { 35 | if (!error) { 36 | const result = JSON.parse(data); 37 | if (result.Status == "OK") { 38 | subTitle += "抽奖成功!🦷"; 39 | detail += "获得 " + result.Data.Point + " 积分。"; 40 | $cmp.log(data); 41 | } else if (result.Status == "NO") { 42 | subTitle += "抽奖失败"; 43 | detail += result.Message; 44 | $cmp.log(data); 45 | } else { 46 | subTitle += "未知错误,详情请见日志。"; 47 | detail += result.Message; 48 | $cmp.log("Oclean failed response : \n" + JSON.stringify(result)); 49 | } 50 | $cmp.notify(CookieName, subTitle, detail); 51 | } else { 52 | //subTitle += '签到接口请求失败,详情请见日志。' 53 | //detail += error 54 | $cmp.log("Oclean failed response : \n" + error); 55 | } 56 | //$cmp.notify(CookieName, subTitle, detail) 57 | $cmp.done(); 58 | }); 59 | } 60 | 61 | // prettier-ignore 62 | function compatibility(){const e="undefined"!=typeof $request,t="undefined"!=typeof $httpClient,r="undefined"!=typeof $task,n="undefined"!=typeof $app&&"undefined"!=typeof $http,o="function"==typeof require&&!n,s=(()=>{if(o){const e=require("request");return{request:e}}return null})(),i=(e,s,i)=>{r&&$notify(e,s,i),t&&$notification.post(e,s,i),o&&a(e+s+i),n&&$push.schedule({title:e,body:s?s+"\n"+i:i})},u=(e,n)=>r?$prefs.setValueForKey(e,n):t?$persistentStore.write(e,n):void 0,d=e=>r?$prefs.valueForKey(e):t?$persistentStore.read(e):void 0,l=e=>(e&&(e.status?e.statusCode=e.status:e.statusCode&&(e.status=e.statusCode)),e),f=(e,i)=>{r&&("string"==typeof e&&(e={url:e}),e.method="GET",$task.fetch(e).then(e=>{i(null,l(e),e.body)},e=>i(e.error,null,null))),t&&$httpClient.get(e,(e,t,r)=>{i(e,l(t),r)}),o&&s.request(e,(e,t,r)=>{i(e,l(t),r)}),n&&("string"==typeof e&&(e={url:e}),e.header=e.headers,e.handler=function(e){let t=e.error;t&&(t=JSON.stringify(e.error));let r=e.data;"object"==typeof r&&(r=JSON.stringify(e.data)),i(t,l(e.response),r)},$http.get(e))},p=(e,i)=>{r&&("string"==typeof e&&(e={url:e}),e.method="POST",$task.fetch(e).then(e=>{i(null,l(e),e.body)},e=>i(e.error,null,null))),t&&$httpClient.post(e,(e,t,r)=>{i(e,l(t),r)}),o&&s.request.post(e,(e,t,r)=>{i(e,l(t),r)}),n&&("string"==typeof e&&(e={url:e}),e.header=e.headers,e.handler=function(e){let t=e.error;t&&(t=JSON.stringify(e.error));let r=e.data;"object"==typeof r&&(r=JSON.stringify(e.data)),i(t,l(e.response),r)},$http.post(e))},a=e=>console.log(e),y=(t={})=>{e?$done(t):$done()};return{isQuanX:r,isSurge:t,isJSBox:n,isRequest:e,notify:i,write:u,read:d,get:f,post:p,log:a,done:y}} 63 | -------------------------------------------------------------------------------- /QuantumultX/Scripts/Task/Oclean_red_envelope_pm.js: -------------------------------------------------------------------------------- 1 | /* 2 | "欧可林"每日红包得积分,晚上九点,此脚本为使用 Oclean.js 者使用。 3 | 0 0 21 * * * 4 | 5 | 由于欧可林服务器(大概)的问题,脚本几乎肯定会超时无通知,日志为 timeout,但有概率可以抽中,希望抽中且有通知者反馈一下日志中的返回体或日志、通知截图。 6 | 7 | ⚠️免责声明: 8 | 1. 此脚本仅用于学习研究,不保证其合法性、准确性、有效性,请根据情况自行判断,本人对此不承担任何保证责任。 9 | 2. 由于此脚本仅用于学习研究,您必须在下载后 24 小时内将所有内容从您的计算机或手机或任何存储设备中完全删除,若违反规定引起任何事件本人对此均不负责。 10 | 3. 请勿将此脚本用于任何商业或非法目的,若违反规定请自行对此负责。 11 | 4. 此脚本涉及应用与本人无关,本人对因此引起的任何隐私泄漏或其他后果不承担任何责任。 12 | 5. 本人对任何脚本引发的问题概不负责,包括但不限于由脚本错误引起的任何损失和损害。 13 | 6. 如果任何单位或个人认为此脚本可能涉嫌侵犯其权利,应及时通知并提供身份证明,所有权证明,我们将在收到认证文件确认后删除此脚本。 14 | 7. 所有直接或间接使用、查看此脚本的人均应该仔细阅读此声明。本人保留随时更改或补充此声明的权利。一旦您使用或复制了此脚本,即视为您已接受此免责声明。 15 | 16 | Author:zZPiglet 17 | */ 18 | 19 | const CookieName = "欧可林"; 20 | const CheckinURL = "https://mall.oclean.com/API/VshopProcess.ashx"; 21 | const $cmp = compatibility(); 22 | Lottery(); 23 | 24 | function Lottery() { 25 | let subTitle = ""; 26 | let detail = ""; 27 | const oclean = { 28 | url: CheckinURL, 29 | headers: { 30 | Cookie: "Shop-Member=" + $cmp.read("Oclean"), 31 | }, 32 | body: "action=GrabEveryDayPoint&redId=2&clientType=2", 33 | }; 34 | $cmp.post(oclean, function (error, response, data) { 35 | if (!error) { 36 | const result = JSON.parse(data); 37 | if (result.Status == "OK") { 38 | subTitle += "抽奖成功!🦷"; 39 | detail += "获得 " + result.Data.Point + " 积分。"; 40 | $cmp.log(data); 41 | } else if (result.Status == "NO") { 42 | subTitle += "抽奖失败"; 43 | detail += result.Message; 44 | $cmp.log(data); 45 | } else { 46 | subTitle += "未知错误,详情请见日志。"; 47 | detail += result.Message; 48 | $cmp.log("Oclean failed response : \n" + JSON.stringify(result)); 49 | } 50 | $cmp.notify(CookieName, subTitle, detail); 51 | } else { 52 | //subTitle += '签到接口请求失败,详情请见日志。' 53 | //detail += error 54 | $cmp.log("Oclean failed response : \n" + error); 55 | } 56 | //$cmp.notify(CookieName, subTitle, detail) 57 | $cmp.done(); 58 | }); 59 | } 60 | 61 | // prettier-ignore 62 | function compatibility(){const e="undefined"!=typeof $request,t="undefined"!=typeof $httpClient,r="undefined"!=typeof $task,n="undefined"!=typeof $app&&"undefined"!=typeof $http,o="function"==typeof require&&!n,s=(()=>{if(o){const e=require("request");return{request:e}}return null})(),i=(e,s,i)=>{r&&$notify(e,s,i),t&&$notification.post(e,s,i),o&&a(e+s+i),n&&$push.schedule({title:e,body:s?s+"\n"+i:i})},u=(e,n)=>r?$prefs.setValueForKey(e,n):t?$persistentStore.write(e,n):void 0,d=e=>r?$prefs.valueForKey(e):t?$persistentStore.read(e):void 0,l=e=>(e&&(e.status?e.statusCode=e.status:e.statusCode&&(e.status=e.statusCode)),e),f=(e,i)=>{r&&("string"==typeof e&&(e={url:e}),e.method="GET",$task.fetch(e).then(e=>{i(null,l(e),e.body)},e=>i(e.error,null,null))),t&&$httpClient.get(e,(e,t,r)=>{i(e,l(t),r)}),o&&s.request(e,(e,t,r)=>{i(e,l(t),r)}),n&&("string"==typeof e&&(e={url:e}),e.header=e.headers,e.handler=function(e){let t=e.error;t&&(t=JSON.stringify(e.error));let r=e.data;"object"==typeof r&&(r=JSON.stringify(e.data)),i(t,l(e.response),r)},$http.get(e))},p=(e,i)=>{r&&("string"==typeof e&&(e={url:e}),e.method="POST",$task.fetch(e).then(e=>{i(null,l(e),e.body)},e=>i(e.error,null,null))),t&&$httpClient.post(e,(e,t,r)=>{i(e,l(t),r)}),o&&s.request.post(e,(e,t,r)=>{i(e,l(t),r)}),n&&("string"==typeof e&&(e={url:e}),e.header=e.headers,e.handler=function(e){let t=e.error;t&&(t=JSON.stringify(e.error));let r=e.data;"object"==typeof r&&(r=JSON.stringify(e.data)),i(t,l(e.response),r)},$http.post(e))},a=e=>console.log(e),y=(t={})=>{e?$done(t):$done()};return{isQuanX:r,isSurge:t,isJSBox:n,isRequest:e,notify:i,write:u,read:d,get:f,post:p,log:a,done:y}} 63 | -------------------------------------------------------------------------------- /QuantumultX/Scripts/Task/pikpak_invite.js: -------------------------------------------------------------------------------- 1 | /* 2 | 作者:小白脸 3 | 版本:1.01 4 | 更新:2023-05-30 09:33 5 | 备注:如需手动运行调试可在第 8 行按格式添加个人邀请码运行👇 6 | $argument = "47829232" 7 | */ 8 | 9 | const http=(t,e="post")=>new Promise((i,$)=>{$httpClient[e](t,(e,a,r)=>{if(a?.status===200)i(JSON.parse(r));else{let n=r.match(/[\u4e00-\u9fff]+/g)?.join(" ");$(`err: ${e||n}`)}})});class Pikpak{constructor(t){this.captcha_token=t[2],this.timestamp=t[3],this.captcha_sign=t[4],this.body={client_id:t[0],device_id:t[1]},this.headers={referer:"https://mypikpak.com/","x-client-id":t[0],"x-device-id":t[1]},this.email=""}async getEmailCode(){if("undefined"===typeof "47829232")throw"请填入验证码,也不要手动运行";if(isNaN(47829232))throw"邀请码必须为数字";await this.newMail();let t=await this.getCaptchaToken("POST:/v1/auth/verification",this.captcha_token),e=await this.sendVerificationRequest(t),i=await this.getVerificationCode(),$=await this.getVerificationToken(e,i);await this.gregister($,i,t);let a=await this.getCaptchaToken("POST:/v1/auth/signin",t),r=await this.signin(a),n=await this.getCaptchaToken("POST:/vip/v1/activity/invite",a);await this.invite(n,r)}async newMail(){let t=await http({url:"https://api.internal.temp-mail.io/api/v3/email/new",body:'{"min_name_length":10,"max_name_length":10}'});this.email=t.email}async getCaptchaToken(t,e){let i=t.includes("vip")?{meta:{captcha_sign:this.captcha_sign,timestamp:`${this.timestamp}`,user_id:"ZBsCRuG84Dlo9UuV",client_version:"1.0.0",package_name:"mypikpak.com"}}:{meta:{email:this.email}},$={url:"https://user.mypikpak.com/v1/shield/captcha/init",headers:this.headers,body:JSON.stringify({...this.body,captcha_token:e,...i,action:t})},{captcha_token:a}=await http($);return a}async sendVerificationRequest(t){let e={url:"https://user.mypikpak.com/v1/auth/verification",headers:{...this.headers,"x-captcha-token":t},body:JSON.stringify({client_id:this.body.client_id,email:this.email,usage:"REGISTER",selected_channel:"VERIFICATION_EMAIL",target:"ANY"})},{verification_id:i}=await http(e);return i}async getVerificationCode(){for(;;){await new Promise(t=>setTimeout(t,500));let t=(await http(`https://api.internal.temp-mail.io/api/v3/email/${this.email}/messages`,"get"))?.[0]?.body_text;if(t){let e=t.match(/(\d{6})/)[0];return e}}}async getVerificationToken(t,e){let i={url:"https://user.mypikpak.com/v1/auth/verification/verify",headers:this.headers,body:JSON.stringify({verification_id:t,verification_code:e,client_id:this.body.client_id})},{verification_token:$}=await http(i);return $}async gregister(t,e,i){let $={url:"https://user.mypikpak.com/v1/auth/signup",headers:this.headers,body:JSON.stringify({email:this.email,password:"Aa147258",client_id:this.body.client_id,verification_token:t,verification_code:e})};return await http($)}async signin(t){let e={url:"https://user.mypikpak.com/v1/auth/signin",headers:{...this.headers,"x-captcha-token":t},body:JSON.stringify({username:this.email,password:"Aa147258",client_id:"YcrttD06T9PIkqAY",client_secret:"A3zfcmfNEeyTH0pX2k4GNg"})},{access_token:i}=await http(e);return`Bearer ${i}`}async invite(t,e){const i={url:"https://api-drive.mypikpak.com/vip/v1/activity/invite",headers:{...this.headers,"x-captcha-token":t,authorization:e},body:"{}"},{free_days:$}=await http(i);if(!$)throw"账号已被使用过,请重新运行";i.url="https://api-drive.mypikpak.com/vip/v1/order/activation-code",i.body=`{"activation_code":47829232,"page":"invite"}`;let{add_days:a,data:{expire:r}}=await http(i);if(!a)throw"无奖励,可能已被风控可以准备换号了";$notification.post(`白嫖成功 🎉🎉🎉`,`刷新时间 ${r}`,`第一次刷奖励5天,后续都是2天`)}}const pikpak_id=Data();function Data(){let t=Date.now(),e={clientId:"YUMx5nI8ZU8Ap8pm",clientVersion:"1.0.0",packageName:"mypikpak.com",timestamp:`${t}`,algorithms:[{alg:"md5",salt:"mg3UtlOJ5/6WjxHsGXtAthe"},{alg:"md5",salt:"kRG2RIlL/eScz3oDbzeF1"},{alg:"md5",salt:"uOIOBDcR5QALlRUUK4JVoreEI0i3RG8ZiUf2hMOH"},{alg:"md5",salt:"wa+0OkzHAzpyZ0S/JAnHmF2BlMR9Y"},{alg:"md5",salt:"ZWV2OkSLoNkmbr58v0f6U3udtqUNP7XON"},{alg:"md5",salt:"Jg4cDxtvbmlakZIOpQN0oY1P0eYkA4xquMY9/xqwZE5sjrcHwufR"},{alg:"md5",salt:"XHfs"},{alg:"md5",salt:"S4/mRgYpWyNGEUxVsYBw8n//zlywe5Ga1R8ffWJSOPZnMqWb4w"},]},i="xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx".replace(/[xy]/g,function(t){var e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)}),$=function(t){"use strict";var e=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function i(t,e){var i=t[0],$=t[1],a=t[2],r=t[3];$=(($+=((a=((a+=((r=((r+=((i=((i+=($&a|~$&r)+e[0]-680876936|0)<<7|i>>>25)+$|0)&$|~i&a)+e[1]-389564586|0)<<12|r>>>20)+i|0)&i|~r&$)+e[2]+606105819|0)<<17|a>>>15)+r|0)&r|~a&i)+e[3]-1044525330|0)<<22|$>>>10)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($&a|~$&r)+e[4]-176418897|0)<<7|i>>>25)+$|0)&$|~i&a)+e[5]+1200080426|0)<<12|r>>>20)+i|0)&i|~r&$)+e[6]-1473231341|0)<<17|a>>>15)+r|0)&r|~a&i)+e[7]-45705983|0)<<22|$>>>10)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($&a|~$&r)+e[8]+1770035416|0)<<7|i>>>25)+$|0)&$|~i&a)+e[9]-1958414417|0)<<12|r>>>20)+i|0)&i|~r&$)+e[10]-42063|0)<<17|a>>>15)+r|0)&r|~a&i)+e[11]-1990404162|0)<<22|$>>>10)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($&a|~$&r)+e[12]+1804603682|0)<<7|i>>>25)+$|0)&$|~i&a)+e[13]-40341101|0)<<12|r>>>20)+i|0)&i|~r&$)+e[14]-1502002290|0)<<17|a>>>15)+r|0)&r|~a&i)+e[15]+1236535329|0)<<22|$>>>10)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($&r|a&~r)+e[1]-165796510|0)<<5|i>>>27)+$|0)&a|$&~a)+e[6]-1069501632|0)<<9|r>>>23)+i|0)&$|i&~$)+e[11]+643717713|0)<<14|a>>>18)+r|0)&i|r&~i)+e[0]-373897302|0)<<20|$>>>12)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($&r|a&~r)+e[5]-701558691|0)<<5|i>>>27)+$|0)&a|$&~a)+e[10]+38016083|0)<<9|r>>>23)+i|0)&$|i&~$)+e[15]-660478335|0)<<14|a>>>18)+r|0)&i|r&~i)+e[4]-405537848|0)<<20|$>>>12)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($&r|a&~r)+e[9]+568446438|0)<<5|i>>>27)+$|0)&a|$&~a)+e[14]-1019803690|0)<<9|r>>>23)+i|0)&$|i&~$)+e[3]-187363961|0)<<14|a>>>18)+r|0)&i|r&~i)+e[8]+1163531501|0)<<20|$>>>12)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($&r|a&~r)+e[13]-1444681467|0)<<5|i>>>27)+$|0)&a|$&~a)+e[2]-51403784|0)<<9|r>>>23)+i|0)&$|i&~$)+e[7]+1735328473|0)<<14|a>>>18)+r|0)&i|r&~i)+e[12]-1926607734|0)<<20|$>>>12)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($^a^r)+e[5]-378558|0)<<4|i>>>28)+$|0)^$^a)+e[8]-2022574463|0)<<11|r>>>21)+i|0)^i^$)+e[11]+1839030562|0)<<16|a>>>16)+r|0)^r^i)+e[14]-35309556|0)<<23|$>>>9)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($^a^r)+e[1]-1530992060|0)<<4|i>>>28)+$|0)^$^a)+e[4]+1272893353|0)<<11|r>>>21)+i|0)^i^$)+e[7]-155497632|0)<<16|a>>>16)+r|0)^r^i)+e[10]-1094730640|0)<<23|$>>>9)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($^a^r)+e[13]+681279174|0)<<4|i>>>28)+$|0)^$^a)+e[0]-358537222|0)<<11|r>>>21)+i|0)^i^$)+e[3]-722521979|0)<<16|a>>>16)+r|0)^r^i)+e[6]+76029189|0)<<23|$>>>9)+a|0,$=(($+=((a=((a+=((r=((r+=((i=((i+=($^a^r)+e[9]-640364487|0)<<4|i>>>28)+$|0)^$^a)+e[12]-421815835|0)<<11|r>>>21)+i|0)^i^$)+e[15]+530742520|0)<<16|a>>>16)+r|0)^r^i)+e[2]-995338651|0)<<23|$>>>9)+a|0,$=(($+=((r=((r+=($^((i=((i+=(a^($|~r))+e[0]-198630844|0)<<6|i>>>26)+$|0)|~a))+e[7]+1126891415|0)<<10|r>>>22)+i|0)^((a=((a+=(i^(r|~$))+e[14]-1416354905|0)<<15|a>>>17)+r|0)|~i))+e[5]-57434055|0)<<21|$>>>11)+a|0,$=(($+=((r=((r+=($^((i=((i+=(a^($|~r))+e[12]+1700485571|0)<<6|i>>>26)+$|0)|~a))+e[3]-1894986606|0)<<10|r>>>22)+i|0)^((a=((a+=(i^(r|~$))+e[10]-1051523|0)<<15|a>>>17)+r|0)|~i))+e[1]-2054922799|0)<<21|$>>>11)+a|0,$=(($+=((r=((r+=($^((i=((i+=(a^($|~r))+e[8]+1873313359|0)<<6|i>>>26)+$|0)|~a))+e[15]-30611744|0)<<10|r>>>22)+i|0)^((a=((a+=(i^(r|~$))+e[6]-1560198380|0)<<15|a>>>17)+r|0)|~i))+e[13]+1309151649|0)<<21|$>>>11)+a|0,$=(($+=((r=((r+=($^((i=((i+=(a^($|~r))+e[4]-145523070|0)<<6|i>>>26)+$|0)|~a))+e[11]-1120210379|0)<<10|r>>>22)+i|0)^((a=((a+=(i^(r|~$))+e[2]+718787259|0)<<15|a>>>17)+r|0)|~i))+e[9]-343485551|0)<<21|$>>>11)+a|0,t[0]=i+t[0]|0,t[1]=$+t[1]|0,t[2]=a+t[2]|0,t[3]=r+t[3]|0}function $(t){var e,i=[];for(e=0;e<64;e+=4)i[e>>2]=t.charCodeAt(e)+(t.charCodeAt(e+1)<<8)+(t.charCodeAt(e+2)<<16)+(t.charCodeAt(e+3)<<24);return i}function a(t){var e,i=[];for(e=0;e<64;e+=4)i[e>>2]=t[e]+(t[e+1]<<8)+(t[e+2]<<16)+(t[e+3]<<24);return i}function r(t){var e,a,r,n,_,s,h=t.length,o=[1732584193,-271733879,-1732584194,271733878];for(e=64;e<=h;e+=64)i(o,$(t.substring(e-64,e)));for(a=(t=t.substring(e-64)).length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],e=0;e>2]|=t.charCodeAt(e)<<(e%4<<3);if(r[e>>2]|=128<<(e%4<<3),e>55)for(i(o,r),e=0;e<16;e+=1)r[e]=0;return _=parseInt((n=(n=8*h).toString(16).match(/(.*?)(.{0,8})$/))[2],16),s=parseInt(n[1],16)||0,r[14]=_,r[15]=s,i(o,r),o}function n(t){var i,$="";for(i=0;i<4;i+=1)$+=e[t>>8*i+4&15]+e[t>>8*i&15];return $}function _(t){var e;for(e=0;eh?new ArrayBuffer(0):($=h-s,a=new ArrayBuffer($),r=new Uint8Array(a),n=new Uint8Array(this,s,$),r.set(n),a)}}(),o.prototype.append=function(t){return this.appendBinary(s(t)),this},o.prototype.appendBinary=function(t){this._buff+=t,this._length+=t.length;var e,a=this._buff.length;for(e=64;e<=a;e+=64)i(this._hash,$(this._buff.substring(e-64,e)));return this._buff=this._buff.substring(e-64),this},o.prototype.end=function(t){var e,i,$=this._buff,a=$.length,r=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];for(e=0;e>2]|=$.charCodeAt(e)<<(e%4<<3);return this._finish(r,a),i=_(this._hash),t&&(i=h(i)),this.reset(),i},o.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},o.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},o.prototype.setState=function(t){return this._buff=t.buff,this._length=t.length,this._hash=t.hash,this},o.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},o.prototype._finish=function(t,e){var $,a,r,n=e;if(t[n>>2]|=128<<(n%4<<3),n>55)for(i(this._hash,t),n=0;n<16;n+=1)t[n]=0;a=parseInt(($=($=8*this._length).toString(16).match(/(.*?)(.{0,8})$/))[2],16),r=parseInt($[1],16)||0,t[14]=a,t[15]=r,i(this._hash,t)},o.hash=function(t,e){return o.hashBinary(s(t),e)},o.hashBinary=function(t,e){var i=_(r(t));return e?h(i):i},o.ArrayBuffer=function(){this.reset()},o.ArrayBuffer.prototype.append=function(t){var e,$,r,n,_,s=($=this._buff.buffer,r=t,n=!0,(_=new Uint8Array($.byteLength+r.byteLength)).set(new Uint8Array($)),_.set(new Uint8Array(r),$.byteLength),n?_:_.buffer),h=s.length;for(this._length+=t.byteLength,e=64;e<=h;e+=64)i(this._hash,a(s.subarray(e-64,e)));return this._buff=new Uint8Array(e-64>2]|=$[e]<<(e%4<<3);return this._finish(r,a),i=_(this._hash),t&&(i=h(i)),this.reset(),i},o.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},o.ArrayBuffer.prototype.getState=function(){var t,e=o.prototype.getState.call(this);return e.buff=(t=e.buff,String.fromCharCode.apply(null,new Uint8Array(t))),e},o.ArrayBuffer.prototype.setState=function(t){return t.buff=function(t,e){var i,$=t.length,a=new ArrayBuffer($),r=new Uint8Array(a);for(i=0;i<$;i+=1)r[i]=t.charCodeAt(i);return e?r:a}(t.buff,!0),o.prototype.setState.call(this,t)},o.ArrayBuffer.prototype.destroy=o.prototype.destroy,o.ArrayBuffer.prototype._finish=o.prototype._finish,o.ArrayBuffer.hash=function(t,e){var $=_(function(t){var e,$,r,n,_,s,h=t.length,o=[1732584193,-271733879,-1732584194,271733878];for(e=64;e<=h;e+=64)i(o,a(t.subarray(e-64,e)));for($=(t=e-64>2]|=t[e]<<(e%4<<3);if(r[e>>2]|=128<<(e%4<<3),e>55)for(i(o,r),e=0;e<16;e+=1)r[e]=0;return _=parseInt((n=(n=8*h).toString(16).match(/(.*?)(.{0,8})$/))[2],16),s=parseInt(n[1],16)||0,r[14]=_,r[15]=s,i(o,r),o}(new Uint8Array(t)));return e?h($):$},o}(),a=((t,e)=>{try{let{salt:i}=t.reduce((t,e)=>({salt:$.hash(t.salt+e.salt)}),{salt:e});return`1.${i}`}catch(a){return console.error("[calculateCaptchaSign:]",a),a}})(e.algorithms,""+e.clientId+e.clientVersion+e.packageName+i+e.timestamp);return["YUMx5nI8ZU8Ap8pm",i,"ck0.IV9lup1uPyJTnnasuUnDV-1KpUpXN2vzYVodgXMkZ4lVw-SJWVLE1slzppHJR_-hlN85lZvBFfUlIpqeWi2L_SJ07pzSyiNN_4xFjAEJCpab8QudjJCdWLiKxK44gVpz83qd5dHcHOYIyi_3PWuO9MfJORr0tRpawk2NfMiDOgfyAaciHYCHglYI24_mOymW6dGPwfkdkKmdV7CWqFXkA8U5uoyG1v6uN3cpHzHaSKI",t,a]}new Pikpak(pikpak_id).getEmailCode().catch(t=>{$notification.post("","",t),console.log(t)}).finally(()=>$done()); 10 | -------------------------------------------------------------------------------- /QuantumultX/Scripts/Task/weiboSTCookie.js: -------------------------------------------------------------------------------- 1 | /* 2 | 微博超话签到-lowking-v1.3(原作者NavePnow,因为通知太多进行修改,同时重构了代码) 3 | 4 | ⚠️使用方法:按下面的配置完之后打开超话页面,点击签到按钮获取cookie 5 | 6 | ⚠️注:获取完cookie记得把脚本禁用 7 | 如果关注的数量很多脚本会超时,注意超时配置 8 | 9 | ************************ 10 | Surge 4.2.0+ 脚本配置: 11 | ************************ 12 | 13 | [Script] 14 | # > 微博超话签到 15 | 微博超话获取cookie = type=http-request,pattern=https:\/\/weibo\.com\/p\/aj\/general\/button\?ajwvr=6&api=http:\/\/i\.huati\.weibo\.com\/aj\/super\/checkin,script-path=https://raw.githubusercontent.com/lowking/Scripts/master/weibo/weiboSTCookie.js 16 | 微博超话签到 = type=cron,cronexp="0 0 0,1 * * ?",wake-system=1,script-path=weiboST.js 17 | 18 | [Header Rewrite] 19 | #超话页面强制用pc模式打开 20 | ^https?://weibo\.com/p/[0-9] header-replace User-Agent "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15" 21 | 22 | [mitm] 23 | hostname = weibo.com 24 | 25 | ************************ 26 | QuantumultX 本地脚本配置: 27 | ************************ 28 | 29 | [rewrite_local] 30 | #微博超话签到 31 | https:\/\/weibo\.com\/p\/aj\/general\/button\?ajwvr=6&api=http:\/\/i\.huati\.weibo\.com\/aj\/super\/checkin url script-request-header https://raw.githubusercontent.com/lowking/Scripts/master/weibo/weiboSTCookie.js 32 | 0 0 0,1 * * ? weiboST.js 33 | #超话页面强制用pc模式打开 34 | ^https?://weibo\.com/p/[0-9] url request-header (\r\n)User-Agent:.+(\r\n) request-header $1User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15 35 | 36 | [mitm] 37 | hostname= weibo.com 38 | */ 39 | const signHeaderKey = 'lkWeiboSTSignHeaderKey' 40 | const lk = new ToolKit(`微博超话签到cookie`, `WeiboSTSign`, `weiboSTCookie.js`) 41 | const isEnableLog = !lk.getVal('lkIsEnableLogWeiboSTCookie') ? true : JSON.parse(lk.getVal('lkIsEnableLogWeiboSTCookie')) 42 | const isEnableGetCookie = !lk.getVal('lkIsEnableGetCookieWeiboST') ? true : JSON.parse(lk.getVal('lkIsEnableGetCookieWeiboST')) 43 | const myFollowUrl = `https://weibo.com/p/1005051760825157/myfollow?relate=interested&pids=plc_main&ajaxpagelet=1&ajaxpagelet_v6=1&__ref=%2F1760825157%2Ffollow%3Frightmod%3D1%26wvr%3D6&_t=FM_159231991868741erested__97_page` 44 | const userFollowSTKey = `lkUserFollowSTKey` 45 | var superTalkList = [] 46 | var cookie 47 | 48 | async function getInfo() { 49 | if ($request.headers['Cookie']) { 50 | var url = $request.url; 51 | cookie = $request.headers['Cookie']; 52 | var super_cookie = lk.setVal(signHeaderKey, cookie); 53 | if (!super_cookie) { 54 | lk.execFail() 55 | lk.appendNotifyInfo(`写入微博超话Cookie失败❌请重试`) 56 | } else { 57 | lk.appendNotifyInfo(`写入微博超话Cookie成功🎉您可以手动禁用此脚本`) 58 | } 59 | //拿到cookie之后获取关注到超话列表 60 | await getFollowList(1) 61 | //持久化 62 | lk.setVal(userFollowSTKey, JSON.stringify(superTalkList)) 63 | lk.log(`获取关注超话${superTalkList.length}个`) 64 | } else { 65 | lk.execFail() 66 | lk.appendNotifyInfo(`写入微博超话Cookie失败❌请退出账号, 重复步骤`) 67 | } 68 | lk.msg(``) 69 | lk.done() 70 | } 71 | 72 | if (isEnableGetCookie) { 73 | getInfo() 74 | } else { 75 | lk.done() 76 | } 77 | 78 | function getFollowList(page) { 79 | return new Promise((resolve, reject) => { 80 | let option = { 81 | url: myFollowUrl + (page > 1 ? `&Pl_Official_RelationInterested__97_page=${page}` : ``), 82 | headers: { 83 | cookie: cookie, 84 | "User-Agent": lk.userAgent 85 | } 86 | } 87 | lk.log(`当前获取第【${page}】页`) 88 | lk.get(option, async (error, statusCode, body) => { 89 | try { 90 | // lk.log(body) 91 | let count = 0 92 | body.split(``)[0]//.split(`"\n})`)[0] 95 | listStr = JSON.parse(listStr) 96 | listStr.html.split(`
`)[1].split(``)[0] 100 | if (screenName.indexOf(`= 30) { 114 | await getFollowList(++page) 115 | } else { 116 | if (superTalkList.length <= 0) { 117 | lk.execFail() 118 | lk.appendNotifyInfo(`获取关注超话列表失败❌请等待脚本更新`) 119 | } else { 120 | lk.appendNotifyInfo(`获取关注超话列表成功🎉请禁用获取cookie脚本`) 121 | } 122 | } 123 | resolve() 124 | } catch (e) { 125 | lk.execFail() 126 | lk.logErr(e) 127 | lk.appendNotifyInfo(`获取关注超话列表失败❌请重试,或者把日志完整文件发给作者`) 128 | } 129 | }) 130 | }) 131 | } 132 | 133 | //ToolKit-start 134 | function ToolKit(t,s,i){return new class{constructor(t,s,i){this.tgEscapeCharMapping={"&":"&","#":"#"};this.userAgent=`Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.2 Safari/605.1.15`;this.prefix=`lk`;this.name=t;this.id=s;this.data=null;this.dataFile=this.getRealPath(`${this.prefix}${this.id}.dat`);this.boxJsJsonFile=this.getRealPath(`${this.prefix}${this.id}.boxjs.json`);this.options=i;this.isExecComm=false;this.isEnableLog=this.getVal(`${this.prefix}IsEnableLog${this.id}`);this.isEnableLog=this.isEmpty(this.isEnableLog)?true:JSON.parse(this.isEnableLog);this.isNotifyOnlyFail=this.getVal(`${this.prefix}NotifyOnlyFail${this.id}`);this.isNotifyOnlyFail=this.isEmpty(this.isNotifyOnlyFail)?false:JSON.parse(this.isNotifyOnlyFail);this.isEnableTgNotify=this.getVal(`${this.prefix}IsEnableTgNotify${this.id}`);this.isEnableTgNotify=this.isEmpty(this.isEnableTgNotify)?false:JSON.parse(this.isEnableTgNotify);this.tgNotifyUrl=this.getVal(`${this.prefix}TgNotifyUrl${this.id}`);this.isEnableTgNotify=this.isEnableTgNotify?!this.isEmpty(this.tgNotifyUrl):this.isEnableTgNotify;this.costTotalStringKey=`${this.prefix}CostTotalString${this.id}`;this.costTotalString=this.getVal(this.costTotalStringKey);this.costTotalString=this.isEmpty(this.costTotalString)?`0,0`:this.costTotalString.replace('"',"");this.costTotalMs=this.costTotalString.split(",")[0];this.execCount=this.costTotalString.split(",")[1];this.costTotalMs=this.isEmpty(this.costTotalMs)?0:parseInt(this.costTotalMs);this.execCount=this.isEmpty(this.execCount)?0:parseInt(this.execCount);this.logSeparator="\n██";this.startTime=(new Date).getTime();this.node=(()=>{if(this.isNode()){const t=require("request");return{request:t}}else{return null}})();this.execStatus=true;this.notifyInfo=[];this.log(`${this.name}, 开始执行!`);this.execComm()}getRealPath(t){if(this.isNode()){let s=process.argv.slice(1,2)[0].split("/");s[s.length-1]=t;return s.join("/")}return t}async execComm(){if(this.isNode()){this.comm=process.argv.slice(1);let t=false;if(this.comm[1]=="p"){this.isExecComm=true;this.log(`开始执行指令【${this.comm[1]}】=> 发送到手机测试脚本!`);if(this.isEmpty(this.options)||this.isEmpty(this.options.httpApi)){this.log(`未设置options,使用默认值`);if(this.isEmpty(this.options)){this.options={}}this.options.httpApi=`ffff@10.0.0.9:6166`}else{if(!/.*?@.*?:[0-9]+/.test(this.options.httpApi)){t=true;this.log(`❌httpApi格式错误!格式:ffff@3.3.3.18:6166`);this.done()}}if(!t){this.callApi(this.comm[2])}}}}callApi(t){let s=this.comm[0];this.log(`获取【${s}】内容传给手机`);let i="";this.fs=this.fs?this.fs:require("fs");this.path=this.path?this.path:require("path");const e=this.path.resolve(s);const o=this.path.resolve(process.cwd(),s);const h=this.fs.existsSync(e);const r=!h&&this.fs.existsSync(o);if(h||r){const t=h?e:o;try{i=this.fs.readFileSync(t)}catch(t){i=""}}else{i=""}let n={url:`http://${this.options.httpApi.split("@")[1]}/v1/scripting/evaluate`,headers:{"X-Key":`${this.options.httpApi.split("@")[0]}`},body:{script_text:`${i}`,mock_type:"cron",timeout:!this.isEmpty(t)&&t>5?t:5},json:true};this.post(n,(t,i,e)=>{this.log(`已将脚本【${s}】发给手机!`);this.done()})}getCallerFileNameAndLine(){let t;try{throw Error("")}catch(s){t=s}const s=t.stack;const i=s.split("\n");let e=1;if(e!==0){const t=i[e];this.path=this.path?this.path:require("path");return`[${t.substring(t.lastIndexOf(this.path.sep)+1,t.lastIndexOf(":"))}]`}else{return"[-]"}}getFunName(t){var s=t.toString();s=s.substr("function ".length);s=s.substr(0,s.indexOf("("));return s}boxJsJsonBuilder(t,s){if(this.isNode()){if(!this.isJsonObject(t)||!this.isJsonObject(s)){this.log("构建BoxJsJson传入参数格式错误,请传入json对象");return}this.log("using node");let i=["settings","keys"];const e="https://raw.githubusercontent.com/Orz-3";let o={};let h="#lk{script_url}";if(s&&s.hasOwnProperty("script_url")){h=this.isEmpty(s["script_url"])?"#lk{script_url}":s["script_url"]}o.id=`${this.prefix}${this.id}`;o.name=this.name;o.desc_html=`⚠️使用说明
详情【点我查看】`;o.icons=[`${e}/mini/master/Alpha/${this.id.toLocaleLowerCase()}.png`,`${e}/mini/master/Color/${this.id.toLocaleLowerCase()}.png`];o.keys=[];o.settings=[{id:`${this.prefix}IsEnableLog${this.id}`,name:"开启/关闭日志",val:true,type:"boolean",desc:"默认开启"},{id:`${this.prefix}NotifyOnlyFail${this.id}`,name:"只当执行失败才通知",val:false,type:"boolean",desc:"默认关闭"},{id:`${this.prefix}IsEnableTgNotify${this.id}`,name:"开启/关闭Telegram通知",val:false,type:"boolean",desc:"默认关闭"},{id:`${this.prefix}TgNotifyUrl${this.id}`,name:"Telegram通知地址",val:"",type:"text",desc:"Tg的通知地址,如:https://api.telegram.org/bot-token/sendMessage?chat_id=-100140&parse_mode=Markdown&text="}];o.author="#lk{author}";o.repo="#lk{repo}";o.script=`${h}?raw=true`;if(!this.isEmpty(t)){for(let s in i){let e=i[s];if(!this.isEmpty(t[e])){if(e==="settings"){for(let s=0;s0){let t=a.apps;let i=t.indexOf(t.filter(t=>{return t.id==o.id})[0]);if(i>=0){a.apps[i]=o}else{a.apps.push(o)}let e=JSON.stringify(a,null,2);if(!this.isEmpty(s)){for(const t in s){let i="";if(s.hasOwnProperty(t)){i=s[t]}else if(t==="author"){i="@lowking"}else if(t==="repo"){i="https://github.com/lowking/Scripts"}e=e.replace(`#lk{${t}}`,i)}}const h=/(?:#lk\{)(.+?)(?=\})/;let r=h.exec(e);if(r!==null){this.log(`生成BoxJs还有未配置的参数,请参考https://github.com/lowking/Scripts/blob/master/util/example/ToolKitDemo.js#L17-L18传入参数:\n`)}let l=new Set;while((r=h.exec(e))!==null){l.add(r[1]);e=e.replace(`#lk{${r[1]}}`,``)}l.forEach(t=>{console.log(`${t} `)});this.fs.writeFileSync(n,e)}}}}isJsonObject(t){return typeof t=="object"&&Object.prototype.toString.call(t).toLowerCase()=="[object object]"&&!t.length}appendNotifyInfo(t,s){if(s==1){this.notifyInfo=t}else{this.notifyInfo.push(t)}}prependNotifyInfo(t){this.notifyInfo.splice(0,0,t)}execFail(){this.execStatus=false}isRequest(){return typeof $request!="undefined"}isSurge(){return typeof $httpClient!="undefined"}isQuanX(){return typeof $task!="undefined"}isLoon(){return typeof $loon!="undefined"}isJSBox(){return typeof $app!="undefined"&&typeof $http!="undefined"}isStash(){return"undefined"!==typeof $environment&&$environment["stash-version"]}isNode(){return typeof require=="function"&&!this.isJSBox()}sleep(t){return new Promise(s=>setTimeout(s,t))}log(t){if(this.isEnableLog)console.log(`${this.logSeparator}${t}`)}logErr(t){this.execStatus=true;if(this.isEnableLog){console.log(`${this.logSeparator}${this.name}执行异常:`);console.log(t);console.log(`\n${t.message}`)}}msg(t,s,i,e){if(!this.isRequest()&&this.isNotifyOnlyFail&&this.execStatus){}else{if(this.isEmpty(s)){if(Array.isArray(this.notifyInfo)){s=this.notifyInfo.join("\n")}else{s=this.notifyInfo}}if(!this.isEmpty(s)){if(this.isEnableTgNotify){this.log(`${this.name}Tg通知开始`);for(let t in this.tgEscapeCharMapping){if(!this.tgEscapeCharMapping.hasOwnProperty(t)){continue}s=s.replace(t,this.tgEscapeCharMapping[t])}this.get({url:encodeURI(`${this.tgNotifyUrl}📌${this.name}\n${s}`)},(t,s,i)=>{this.log(`Tg通知完毕`)})}else{let o={};const h=!this.isEmpty(i);const r=!this.isEmpty(e);if(this.isQuanX()){if(h)o["open-url"]=i;if(r)o["media-url"]=e;$notify(this.name,t,s,o)}if(this.isSurge()){if(h)o["url"]=i;$notification.post(this.name,t,s,o)}if(this.isNode())this.log("⭐️"+this.name+t+s);if(this.isJSBox())$push.schedule({title:this.name,body:t?t+"\n"+s:s})}}}}getVal(t){if(this.isSurge()||this.isLoon()){return $persistentStore.read(t)}else if(this.isQuanX()){return $prefs.valueForKey(t)}else if(this.isNode()){this.data=this.loadData();return this.data[t]}else{return this.data&&this.data[t]||null}}setVal(t,s){if(this.isSurge()||this.isLoon()){return $persistentStore.write(s,t)}else if(this.isQuanX()){return $prefs.setValueForKey(s,t)}else if(this.isNode()){this.data=this.loadData();this.data[t]=s;this.writeData();return true}else{return this.data&&this.data[t]||null}}loadData(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs");this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile);const s=this.path.resolve(process.cwd(),this.dataFile);const i=this.fs.existsSync(t);const e=!i&&this.fs.existsSync(s);if(i||e){const e=i?t:s;try{return JSON.parse(this.fs.readFileSync(e))}catch(t){return{}}}else return{}}else return{}}writeData(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs");this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile);const s=this.path.resolve(process.cwd(),this.dataFile);const i=this.fs.existsSync(t);const e=!i&&this.fs.existsSync(s);const o=JSON.stringify(this.data);if(i){this.fs.writeFileSync(t,o)}else if(e){this.fs.writeFileSync(s,o)}else{this.fs.writeFileSync(t,o)}}}adapterStatus(t){if(t){if(t.status){t["statusCode"]=t.status}else if(t.statusCode){t["status"]=t.statusCode}}return t}get(t,s=(()=>{})){if(this.isQuanX()){if(typeof t=="string")t={url:t};t["method"]="GET";$task.fetch(t).then(t=>{s(null,this.adapterStatus(t),t.body)},t=>s(t.error,null,null))}if(this.isSurge())$httpClient.get(t,(t,i,e)=>{s(t,this.adapterStatus(i),e)});if(this.isNode()){this.node.request(t,(t,i,e)=>{s(t,this.adapterStatus(i),e)})}if(this.isJSBox()){if(typeof t=="string")t={url:t};t["header"]=t["headers"];t["handler"]=function(t){let i=t.error;if(i)i=JSON.stringify(t.error);let e=t.data;if(typeof e=="object")e=JSON.stringify(t.data);s(i,this.adapterStatus(t.response),e)};$http.get(t)}}post(t,s=(()=>{})){if(this.isQuanX()){if(typeof t=="string")t={url:t};t["method"]="POST";$task.fetch(t).then(t=>{s(null,this.adapterStatus(t),t.body)},t=>s(t.error,null,null))}if(this.isSurge()){$httpClient.post(t,(t,i,e)=>{s(t,this.adapterStatus(i),e)})}if(this.isNode()){this.node.request.post(t,(t,i,e)=>{s(t,this.adapterStatus(i),e)})}if(this.isJSBox()){if(typeof t=="string")t={url:t};t["header"]=t["headers"];t["handler"]=function(t){let i=t.error;if(i)i=JSON.stringify(t.error);let e=t.data;if(typeof e=="object")e=JSON.stringify(t.data);s(i,this.adapterStatus(t.response),e)};$http.post(t)}}costTime(){let t=`${this.name}执行完毕!`;if(this.isNode()&&this.isExecComm){t=`指令【${this.comm[1]}】执行完毕!`}const s=(new Date).getTime();const i=s-this.startTime;const e=i/1e3;this.execCount++;this.costTotalMs+=i;this.log(`${t}耗时【${e}】秒\n总共执行【${this.execCount}】次,平均耗时【${(this.costTotalMs/this.execCount/1e3).toFixed(4)}】秒`);this.setVal(this.costTotalStringKey,JSON.stringify(`${this.costTotalMs},${this.execCount}`))}done(t={}){this.costTime();if(this.isSurge()||this.isQuanX()||this.isLoon()){$done(t)}}getRequestUrl(){return $request.url}getResponseBody(){return $response.body}isGetCookie(t){return!!($request.method!="OPTIONS"&&this.getRequestUrl().match(t))}isEmpty(t){return typeof t=="undefined"||t==null||t==""||t=="null"||t=="undefined"||t.length===0}randomString(t){t=t||32;var s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";var i=s.length;var e="";for(let o=0;o|<\/body>/.test(body)) { 77 | body = body.replace('', ` 78 | 79 | `) 1090 | 1091 | console.log('添加 tamperJS:pure.baidu.user.js') 1092 | } 1093 | 1094 | $done({ body }) 1095 | 1096 | // Adding a dummy change to trigger git commit 1097 | 1098 | // Adding a dummy change to trigger git commit 1099 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AwesomeScripts 2 | ![Logo](https://cdn.jsdelivr.net/gh/FlechazoPh/AwesomeScripts/Assets/Logo.PNG) 3 | 4 | ## 简介 5 | 6 | AwesomeScripts 是自用 [Quantumult X](https://github.com/crossutility/Quantumult-X/) 脚本。在这里你可以订阅、下载并更新它们。 7 | 8 | 【Telegram 群组】:airplane: https://t.me/github_chats
9 | 10 | ## 使用说明 11 | 12 | ### 百度pure: 13 | 说明:搜索/文库/知道/网盘/百科/经验/翻译/百家号 页面精简,防跳转百度APP 14 | 脚本链接: 15 | ```bash 16 | https://raw.githubusercontent.com/FlechazoPh/AwesomeScripts/main/QuantumultX/Scripts/pure.baidu.user.js 17 | ``` 18 | > [userstyle 电脑版插件](https://userstyles.org/styles/173673/pure) 19 | 20 | ### 欧可林 Oclean app 自动签到得积分,积分兑换牙刷刷头 21 | 说明:"欧可林" app 自动签到得积分,支持 Quantumult X(理论上也支持 Surge、Loon,未尝试)。 22 | 脚本地址: 23 | ```bash 24 | https://github.com/FlechazoPh/AwesomeScripts/tree/main/QuantumultX/Scripts/Task 25 | ``` 26 | 27 | 28 | ### 网易游戏直连分流 29 | 说明:网易游戏直连分流 30 | 规则地址: 31 | ``` 32 | https://raw.githubusercontent.com/FlechazoPh/AwesomeScripts/main/QuantumultX/Filter/NeteaseGame.list 33 | ``` 34 | 35 | 36 | ## 补充说明 37 | 1. 转载请注明出处,谢谢!
38 | 2. 需要新增规则/脚本/配置,请提 Issues 或 Telegram 中发送使用说明名称并附上相关资源链接;
39 | 3. 推荐使用 [神机规则](https://github.com/DivineEngine/Profiles/tree/master/Quantumult) 与 AwesomeScripts 搭配以强化 Quantumult X 使用体验;
40 | 4. 推荐使用前仔细阅读 [Quantumult X 不完全教程](https://www.notion.so/Quantumult-X-1d32ddc6e61c4892ad2ec5ea47f00917) 41 | 42 | ## 免责声明 43 | 1. AwesomeScripts 项目内所涉及脚本、LOGO 仅为资源共享、学习参考之目的,不保证其合法性、正当性、准确性;切勿使用 AwesomeScripts 项目做任何商业用途或牟利;
44 | 2. 遵循避风港原则,若有图片和内容侵权,请在 Issues 告知,核实后删除,其版权均归原作者及其网站所有;
45 | 3. 本人不对任何内容承担任何责任,包括但不限于任何内容错误导致的任何损失、损害;
46 | 4. 其它人通过任何方式登陆本网站或直接、间接使用 AwesomeScripts 项目相关资源,均应仔细阅读本声明,一旦使用、转载 AwesomeScripts 项目任何相关教程或资源,即被视为您已接受此免责声明。
47 | 5. 本项目内所有资源文件,禁止任何公众号、自媒体进行任何形式的转载、发布。 48 | 6. 本项目涉及的数据由使用的个人或组织自行填写,本项目不对数据内容负责,包括但不限于数据的真实性、准确性、合法性。使用本项目所造成的一切后果,与本项目的所有贡献者无关,由使用的个人或组织完全承担。 49 | 7. 本项目中涉及的第三方硬件、软件等,与本项目没有任何直接或间接的关系。本项目仅对部署和使用过程进行客观描述,不代表支持使用任何第三方硬件、软件。使用任何第三方硬件、软件,所造成的一切后果由使用的个人或组织承担,与本项目无关。 50 | 8. 本项目中所有内容只供学习和研究使用,不得将本项目中任何内容用于违反国家/地区/组织等的法律法规或相关规定的其他用途。 51 | 9. 所有基于本项目源代码,进行的任何修改,为其他个人或组织的自发行为,与本项目没有任何直接或间接的关系,所造成的一切后果亦与本项目无关。 52 | 10. 所有直接或间接使用本项目的个人和组织,应24小时内完成学习和研究,并及时删除本项目中的所有内容。如对本项目的功能有需求,应自行开发相关功能。 53 | 11. 本项目保留随时对免责声明进行补充或更改的权利,直接或间接使用本项目内容的个人或组织,视为接受本项目的特别声明。 54 | 55 | ## 更新日志 56 |
57 | 所有日志
58 | v1.0
59 | 2022-01-07
60 | * 更新脚本
61 | 1. 更新 pure 百度 62 | 2. 更新 README 文档 63 |
64 | 65 | 2022-01-07 66 | 更新 pure 百度 67 | 68 |
69 | 70 | ## 效果图预览 71 | 72 | ## 特别感谢 : 73 | * [@yqc007](https://github.com/yqc007/QuantumultX) 74 | * [@Orz-3](https://github.com/Orz-3/QuantumultX) 75 | * [@0x7E](https://github.com/0x7E/rules-conf) 76 | 77 | 78 | ## 鸣谢 79 | 80 | 感谢 [JetBrains](https://www.jetbrains.com/?from=AwesomeScripts) 提供的 free JetBrains Open Source license 81 | 82 | [![JetBrains-logo](https://i.loli.net/2020/10/03/E4h5FZmSfnGIgap.png)](https://www.jetbrains.com/?from=AwesomeScripts) 83 | 84 | 85 | 86 | ![FlechazoPh's github stats](https://github-readme-stats.vercel.app/api?username=FlechazoPh&show_icons=true&theme=vue-dark) 87 | 88 | 89 | ## ★ Star 趋势 / Stargazers Over Time 90 | 91 | [![Stargazers over time](https://starchart.cc/FlechazoPh/AwesomeScripts.svg)](https://starchart.cc/FlechazoPh/AwesomeScripts) 92 | -------------------------------------------------------------------------------- /Scripts/CheckIn/10000.py: -------------------------------------------------------------------------------- 1 | 2 | # -*- coding: utf-8 -*- 3 | """ 4 | 5 | const $ = new Env("电信签到任务"); 6 | 7 | 电信签到任务 8 | 9 | 10 | 11 | cron: 12 | 13 | 46 9 * * * 10000.py 14 | 15 | """ 16 | 17 | import base64 18 | import requests,json 19 | import time 20 | from Crypto.Cipher import AES 21 | from binascii import b2a_hex, a2b_hex 22 | from Crypto.Util.Padding import pad 23 | from notify_mtr import send 24 | 25 | # pip install pycryptodome 26 | # 默认喂食 27 | config_list = [ 28 | {"mobile": os.environ["TELECOM_MOBILE"], "food": True} 29 | ] 30 | 31 | msg = [] 32 | 33 | 34 | 35 | def encrypt(text): 36 | key = '34d7cb0bcdf07523'.encode('utf-8') 37 | 38 | cipher = AES.new(key, AES.MODE_ECB) 39 | pad_pkcs7 = pad(text.encode('utf-8'), AES.block_size, style='pkcs7') # 选择pkcs7补全 40 | cipher_text = cipher.encrypt(pad_pkcs7) 41 | 42 | return b2a_hex(cipher_text) 43 | 44 | def telecom_task(config): 45 | mobile = config['mobile'] 46 | msg.append(mobile + " 开始执行任务...") 47 | h5_headers = get_h5_headers(mobile) 48 | # 签到 49 | t = time.time() 50 | time1 = int(round(t * 1000)) 51 | body_json = { 52 | "phone": f"{mobile}", 53 | "date": time1, 54 | "signSource": "smlprgrm" 55 | } 56 | body_str = json.dumps(body_json) 57 | s = str(encrypt(body_str),'utf-8') 58 | sign_body = { 59 | "encode": s 60 | } 61 | 62 | sign_ret = requests.post(url="https://wapside.189.cn:9001/jt-sign/api/home/sign", json=sign_body, 63 | headers=h5_headers).json() 64 | if sign_ret['data']['code'] == 1: 65 | msg.append("签到成功, 本次签到获得 " + str(sign_ret['data']['coin']) + " 豆") 66 | else: 67 | msg.append(sign_ret['data']['msg']) 68 | 69 | msg.append("----------------------------------------------") 70 | 71 | def get_h5_headers(mobile): 72 | base64_mobile = str(base64.b64encode(mobile[5:11].encode('utf-8')), 'utf-8').strip(r'=+') + "!#!" + str( 73 | base64.b64encode(mobile[0:5].encode('utf-8')), 'utf-8').strip(r'=+') 74 | return {"User-Agent": "CtClient;9.2.0;Android;10;MI 9;" + base64_mobile} 75 | 76 | 77 | 78 | def format_msg(): 79 | str = '' 80 | for item in msg: 81 | str += item + "\r\n" 82 | return str 83 | 84 | def main_handler(event, context): 85 | for config in config_list: 86 | telecom_task(config) 87 | content = format_msg() 88 | 89 | send("电信签到任务", content) 90 | # 通知 91 | #telegram_bot('电信签到任务', content) 92 | return content 93 | 94 | main_handler(1, 1) 95 | -------------------------------------------------------------------------------- /Scripts/CheckIn/ttldh.js: -------------------------------------------------------------------------------- 1 | /* 2 | 太太乐兑换 3 | */ 4 | 5 | 6 | const $ = new Env('太太乐兑换'); 7 | let message; 8 | const notify = $.isNode() ? require('./sendNotify') : ''; 9 | // 633=10元手机话费(仅电信用户) 631=30元手机话费(仅移动用户) 62=5元手机话费(仅联通用户) 61=2元手机话费(仅联通用户) 10 | let giftAmount, giftNames, giftPrice, date; 11 | let ttlhd = $.isNode() ? (process.env.ttlhd ? process.env.ttlhd : "") : ($.getdata('ttlhd') ? $.getdata('ttlhd') : ""); 12 | const ttldh = $.isNode() ? (process.env.ttldh ? process.env.ttldh : "") : ($.getdata('ttldh') ? $.getdata('ttldh') : ""); 13 | 14 | Date.prototype.Format = function (fmt) { //author: meizz 15 | var o = { 16 | "M+": this.getMonth() + 1, //月份 17 | "d+": this.getDate(), //日 18 | "h+": this.getHours(), //小时 19 | "m+": this.getMinutes(), //分 20 | "s+": this.getSeconds(), //秒 21 | "S": this.getMilliseconds() //毫秒 22 | }; 23 | if (/(y+)/.test(fmt)) 24 | fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); 25 | for (var k in o) 26 | if (new RegExp("(" + k + ")").test(fmt)) 27 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); 28 | return fmt; 29 | } 30 | 31 | !(async () => { 32 | message = ''; 33 | giftAmount = {}; 34 | giftNames = {}; 35 | giftPrice = {}; 36 | await ttl_gift(); 37 | date = (new Date()).Format("yyyyMMdd"); 38 | ttldhArr = ttldh.split('@'); 39 | console.log(`========共${ttldhArr.length}个兑换账号========\n`); 40 | ttlhdArr = ttlhd.split('@'); 41 | console.log(`共${ttlhdArr.length}个cookie`); 42 | for (let k = 0; k < ttldhArr.length; k++) { 43 | user_pwd = ttlhdArr[k].split('#'); 44 | user = user_pwd[0]; 45 | pwd = user_pwd[1]; 46 | giftId = ttldhArr[k]; 47 | stockAmount = giftAmount[giftId]; 48 | stockName = giftNames[giftId]; 49 | stockPrice = giftPrice[giftId]; 50 | if (stockAmount === 0) { 51 | console.log(`第 ${k + 1} 个账号 ${user} 要兑换的商品: ${stockName} 商品库存 ${stockAmount},取消兑换`); 52 | continue; 53 | } 54 | console.log(`第 ${k + 1} 个账号 ${user} 要兑换的商品: ${stockName} 商品库存: ${stockAmount},进行兑换`); 55 | 56 | // 获取缓存的积分 57 | $.integral = $.getdata(`${date}_${user}`) 58 | if (typeof $.integral === 'undefined') 59 | // 登录app 60 | await ttl_login(); 61 | if ($.integral - stockPrice < 0) { 62 | console.log(`账号 ${user} 积分不足以兑换,取消兑换`); 63 | message += `\n【兑换商品】 ${stockName} \n【兑换结果】 积分不足以兑换`; 64 | continue; 65 | } 66 | // 兑换 67 | await ttl_dh(); 68 | // 兑换完减少积分 69 | $.setdata($.integral - stockPrice, `${date}_${user}`); 70 | $.msg($.name, ``, `\n${message}`) 71 | if ($.isNode()) await notify.sendNotify($.name, `${message}`); 72 | } 73 | 74 | 75 | })() 76 | .catch((e) => $.logErr(e)) 77 | .finally(() => $.done()); 78 | 79 | 80 | async function ttl_gift(){ 81 | return new Promise((resolve) => { 82 | 83 | let param = { 84 | url: `http://www.ttljf.com/ttl_site/giftApi.do?mthd=searchGift&giftCategoryId=7&pageNo=1&pageSize=8`, 85 | headers:{ 86 | 'User-Agent':'okhttp/3.6.0', 87 | } 88 | }; 89 | $.get(param, async(error, response, data) =>{ 90 | try{ 91 | const result = JSON.parse(data); 92 | const gifts = result.gifts; 93 | let msg = ''; 94 | for (let gift of gifts) { 95 | const stockAmount = parseInt(gift.stockAmount); 96 | const giftName = gift.giftName; 97 | const giftId = gift.giftId; 98 | const price = parseInt(gift.price); 99 | msg += `${giftName} id: ${giftId}, 库存: ${stockAmount}, 积分: ${price}\n`; 100 | giftAmount[giftId] = stockAmount; 101 | giftNames[giftId] = giftName; 102 | giftPrice[giftId] = price; 103 | } 104 | $.log(`${msg}`); 105 | }catch(e) { 106 | $.logErr(e, response); 107 | } finally { 108 | resolve(); 109 | } 110 | }) 111 | }) 112 | } 113 | 114 | async function ttl_login() { 115 | url=`http://www.ttljf.com/ttl_site/user.do`; 116 | body=`mthd=login&username=${user}&password=${pwd}&platform=android`; 117 | let config = { 118 | url: url, 119 | body: body, 120 | headers: { 121 | 'Host': 'www.ttljf.com', 122 | 'Connection': 'Keep-Alive', 123 | 'content-type': 'application/x-www-form-urlencoded', 124 | 'Accept-Encoding': 'gzip', 125 | 'Content-Length': body.length, 126 | 'User-Agent': 'okhttp/3.6.0' 127 | } 128 | }; 129 | //console.log(config) 130 | return new Promise((resolve) => { 131 | $.post(config, function (error, response, body) { 132 | try { 133 | if (error) { 134 | console.log(`${JSON.stringify(error)}`) 135 | console.log(`${$.name} API请求失败,请检查网路重试`) 136 | } 137 | data = JSON.parse(body); 138 | if (data.code === '0000') { 139 | $.token = data.user.loginToken; 140 | $.userId = data.user.userId; 141 | $.userName = data.user.userName; 142 | $.integral = data.user.integral; 143 | console.log(`token:${$.token} 积分:${$.integral}`); 144 | $.setdata($.integral, `${date}_${user}`); 145 | console.log(`设置当天积分缓存成功!`); 146 | } 147 | console.log('登录信息 ' + data.message); 148 | message += `\n【账号】 ${$.userName}(${data.user.mobile}) \n【登录信息】 ${data.message} \n【积分】 ${$.integral}`; 149 | } catch (e) { 150 | $.logErr(e, resp) 151 | } finally { 152 | resolve(); 153 | } 154 | }); 155 | }) 156 | } 157 | 158 | async function ttl_dh() { 159 | url=`http://www.ttljf.com/ttl_site/chargeApi.do`; 160 | body=`method=charge&userId=${$.userId}&loginToken=${$.token}&mobile=${user}&giftId=${giftId}`; 161 | let config = { 162 | url: url, 163 | body: body, 164 | headers: { 165 | 'Host': 'www.ttljf.com', 166 | 'Connection': 'Keep-Alive', 167 | 'content-type': 'application/x-www-form-urlencoded', 168 | 'Accept-Encoding': 'gzip', 169 | 'Content-Length': body.length, 170 | 'User-Agent': 'okhttp/3.6.0' 171 | } 172 | }; 173 | return new Promise((resolve) => { 174 | $.post(config, function (error, response, body) { 175 | try { 176 | if (error) { 177 | console.log(`${JSON.stringify(error)}`) 178 | console.log(`${$.name} API请求失败,请检查网路重试`) 179 | } 180 | data = JSON.parse(body); 181 | console.log(`兑换商品 ${stockName} 兑换结果:${data.message}`); 182 | message += `\n【兑换商品】 ${stockName} \n【兑换结果】 ${data.message}`; 183 | } catch (e) { 184 | $.logErr(e, resp) 185 | } finally { 186 | resolve(); 187 | } 188 | }); 189 | }) 190 | } 191 | 192 | function Env(t,e){class s{constructor(t){this.env=t}send(t,e="GET"){t="string"==typeof t?{url:t}:t;let s=this.get;return"POST"===e&&(s=this.post),new Promise((e,i)=>{s.call(this,t,(t,s,r)=>{t?i(t):e(s)})})}get(t){return this.send.call(this.env,t)}post(t){return this.send.call(this.env,t,"POST")}}return new class{constructor(t,e){this.name=t,this.http=new s(this),this.data=null,this.dataFile="box.dat",this.logs=[],this.isMute=!1,this.isNeedRewrite=!1,this.logSeparator="\n",this.startTime=(new Date).getTime(),Object.assign(this,e),this.log("",`\ud83d\udd14${this.name}, \u5f00\u59cb!`)}isNode(){return"undefined"!=typeof module&&!!module.exports}isQuanX(){return"undefined"!=typeof $task}isSurge(){return"undefined"!=typeof $httpClient&&"undefined"==typeof $loon}isLoon(){return"undefined"!=typeof $loon}toObj(t,e=null){try{return JSON.parse(t)}catch{return e}}toStr(t,e=null){try{return JSON.stringify(t)}catch{return e}}getjson(t,e){let s=e;const i=this.getdata(t);if(i)try{s=JSON.parse(this.getdata(t))}catch{}return s}setjson(t,e){try{return this.setdata(JSON.stringify(t),e)}catch{return!1}}getScript(t){return new Promise(e=>{this.get({url:t},(t,s,i)=>e(i))})}runScript(t,e){return new Promise(s=>{let i=this.getdata("@chavy_boxjs_userCfgs.httpapi");i=i?i.replace(/\n/g,"").trim():i;let r=this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout");r=r?1*r:20,r=e&&e.timeout?e.timeout:r;const[o,h]=i.split("@"),a={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(a,(t,e,i)=>s(i))}).catch(t=>this.logErr(t))}loaddata(){if(!this.isNode())return{};{this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e);if(!s&&!i)return{};{const i=s?t:e;try{return JSON.parse(this.fs.readFileSync(i))}catch(t){return{}}}}}writedata(){if(this.isNode()){this.fs=this.fs?this.fs:require("fs"),this.path=this.path?this.path:require("path");const t=this.path.resolve(this.dataFile),e=this.path.resolve(process.cwd(),this.dataFile),s=this.fs.existsSync(t),i=!s&&this.fs.existsSync(e),r=JSON.stringify(this.data);s?this.fs.writeFileSync(t,r):i?this.fs.writeFileSync(e,r):this.fs.writeFileSync(t,r)}}lodash_get(t,e,s){const i=e.replace(/\[(\d+)\]/g,".$1").split(".");let r=t;for(const t of i)if(r=Object(r)[t],void 0===r)return s;return r}lodash_set(t,e,s){return Object(t)!==t?t:(Array.isArray(e)||(e=e.toString().match(/[^.[\]]+/g)||[]),e.slice(0,-1).reduce((t,s,i)=>Object(t[s])===t[s]?t[s]:t[s]=Math.abs(e[i+1])>>0==+e[i+1]?[]:{},t)[e[e.length-1]]=s,t)}getdata(t){let e=this.getval(t);if(/^@/.test(t)){const[,s,i]=/^@(.*?)\.(.*?)$/.exec(t),r=s?this.getval(s):"";if(r)try{const t=JSON.parse(r);e=t?this.lodash_get(t,i,""):e}catch(t){e=""}}return e}setdata(t,e){let s=!1;if(/^@/.test(e)){const[,i,r]=/^@(.*?)\.(.*?)$/.exec(e),o=this.getval(i),h=i?"null"===o?null:o||"{}":"{}";try{const e=JSON.parse(h);this.lodash_set(e,r,t),s=this.setval(JSON.stringify(e),i)}catch(e){const o={};this.lodash_set(o,r,t),s=this.setval(JSON.stringify(o),i)}}else s=this.setval(t,e);return s}getval(t){return this.isSurge()||this.isLoon()?$persistentStore.read(t):this.isQuanX()?$prefs.valueForKey(t):this.isNode()?(this.data=this.loaddata(),this.data[t]):this.data&&this.data[t]||null}setval(t,e){return this.isSurge()||this.isLoon()?$persistentStore.write(t,e):this.isQuanX()?$prefs.setValueForKey(t,e):this.isNode()?(this.data=this.loaddata(),this.data[e]=t,this.writedata(),!0):this.data&&this.data[e]||null}initGotEnv(t){this.got=this.got?this.got:require("got"),this.cktough=this.cktough?this.cktough:require("tough-cookie"),this.ckjar=this.ckjar?this.ckjar:new this.cktough.CookieJar,t&&(t.headers=t.headers?t.headers:{},void 0===t.headers.Cookie&&void 0===t.cookieJar&&(t.cookieJar=this.ckjar))}get(t,e=(()=>{})){t.headers&&(delete t.headers["Content-Type"],delete t.headers["Content-Length"]),this.isSurge()||this.isLoon()?(this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.get(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)})):this.isQuanX()?(this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t))):this.isNode()&&(this.initGotEnv(t),this.got(t).on("redirect",(t,e)=>{try{if(t.headers["set-cookie"]){const s=t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString();s&&this.ckjar.setCookieSync(s,null),e.cookieJar=this.ckjar}}catch(t){this.logErr(t)}}).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)}))}post(t,e=(()=>{})){if(t.body&&t.headers&&!t.headers["Content-Type"]&&(t.headers["Content-Type"]="application/x-www-form-urlencoded"),t.headers&&delete t.headers["Content-Length"],this.isSurge()||this.isLoon())this.isSurge()&&this.isNeedRewrite&&(t.headers=t.headers||{},Object.assign(t.headers,{"X-Surge-Skip-Scripting":!1})),$httpClient.post(t,(t,s,i)=>{!t&&s&&(s.body=i,s.statusCode=s.status),e(t,s,i)});else if(this.isQuanX())t.method="POST",this.isNeedRewrite&&(t.opts=t.opts||{},Object.assign(t.opts,{hints:!1})),$task.fetch(t).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>e(t));else if(this.isNode()){this.initGotEnv(t);const{url:s,...i}=t;this.got.post(s,i).then(t=>{const{statusCode:s,statusCode:i,headers:r,body:o}=t;e(null,{status:s,statusCode:i,headers:r,body:o},o)},t=>{const{message:s,response:i}=t;e(s,i,i&&i.body)})}}time(t){let e={"M+":(new Date).getMonth()+1,"d+":(new Date).getDate(),"H+":(new Date).getHours(),"m+":(new Date).getMinutes(),"s+":(new Date).getSeconds(),"q+":Math.floor(((new Date).getMonth()+3)/3),S:(new Date).getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,((new Date).getFullYear()+"").substr(4-RegExp.$1.length)));for(let s in e)new RegExp("("+s+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?e[s]:("00"+e[s]).substr((""+e[s]).length)));return t}msg(e=t,s="",i="",r){const o=t=>{if(!t)return t;if("string"==typeof t)return this.isLoon()?t:this.isQuanX()?{"open-url":t}:this.isSurge()?{url:t}:void 0;if("object"==typeof t){if(this.isLoon()){let e=t.openUrl||t.url||t["open-url"],s=t.mediaUrl||t["media-url"];return{openUrl:e,mediaUrl:s}}if(this.isQuanX()){let e=t["open-url"]||t.url||t.openUrl,s=t["media-url"]||t.mediaUrl;return{"open-url":e,"media-url":s}}if(this.isSurge()){let e=t.url||t.openUrl||t["open-url"];return{url:e}}}};if(this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r))),!this.isMuteLog){let t=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];t.push(e),s&&t.push(s),i&&t.push(i),console.log(t.join("\n")),this.logs=this.logs.concat(t)}}log(...t){t.length>0&&(this.logs=[...this.logs,...t]),console.log(t.join(this.logSeparator))}logErr(t,e){const s=!this.isSurge()&&!this.isQuanX()&&!this.isLoon();s?this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t.stack):this.log("",`\u2757\ufe0f${this.name}, \u9519\u8bef!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`\ud83d\udd14${this.name}, \u7ed3\u675f! \ud83d\udd5b ${s} \u79d2`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} -------------------------------------------------------------------------------- /Scripts/Olcean.js: -------------------------------------------------------------------------------- 1 | /* 2 | "欧可林" app 自动签到得积分,支持 Quantumult X(理论上也支持 Surge、Loon,未尝试)。 3 | 请先按下述方法进行配置,进入"欧可林"并点击"活动",若弹出"首次写入欧可林 Cookie 成功"即可正常食用,其他提示或无提示请发送日志信息至 issue。 4 | 到 cron 设定时间自动签到时,若弹出"欧可林 - 签到成功"即完成签到,其他提示或无提示请发送日志信息至 issue。 5 | 6 | 注意:"欧可林" app 签到与微信小程序"欧可林商城"签到共享(一致),即 Oclean.js 与 Oclean_mini.js 任取一个使用即可,暂未验证两个脚本中账户信息哪个过期快,不过猜测 app 签到会更持久,而新用户推荐使用小程序先进行注册,会有额外积分奖励。 7 | 8 | ⚠️免责声明: 9 | 1. 此脚本仅用于学习研究,不保证其合法性、准确性、有效性,请根据情况自行判断,本人对此不承担任何保证责任。 10 | 2. 由于此脚本仅用于学习研究,您必须在下载后 24 小时内将所有内容从您的计算机或手机或任何存储设备中完全删除,若违反规定引起任何事件本人对此均不负责。 11 | 3. 请勿将此脚本用于任何商业或非法目的,若违反规定请自行对此负责。 12 | 4. 此脚本涉及应用与本人无关,本人对因此引起的任何隐私泄漏或其他后果不承担任何责任。 13 | 5. 本人对任何脚本引发的问题概不负责,包括但不限于由脚本错误引起的任何损失和损害。 14 | 6. 如果任何单位或个人认为此脚本可能涉嫌侵犯其权利,应及时通知并提供身份证明,所有权证明,我们将在收到认证文件确认后删除此脚本。 15 | 7. 所有直接或间接使用、查看此脚本的人均应该仔细阅读此声明。本人保留随时更改或补充此声明的权利。一旦您使用或复制了此脚本,即视为您已接受此免责声明。 16 | 17 | Origin Author:zZPiglet 18 | Fix Author:GirHub@FlechazoPh 19 | 20 | Quantumult X: 21 | [task_local] 22 | 1 0 * * * https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean.js, tag=欧可林 23 | 24 | [rewrite_local] 25 | ^https:\/\/mall\.oclean\.com\/API\/VshopProcess\.ashx$ url script-request-header https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean.js 26 | 27 | 28 | Surge & Loon: 29 | [Script] 30 | cron "1 0 * * *" script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean.js 31 | http-request ^https:\/\/mall\.oclean\.com\/API\/VshopProcess\.ashx$ script-path=https://raw.githubusercontent.com/zZPiglet/Task/master/Oclean/Oclean.js 32 | 33 | All app: 34 | [mitm] 35 | hostname = mall.oclean.com 36 | 37 | 获取完 Cookie 后可不注释 rewrite / hostname,Cookie 更新时会弹窗。若因 MitM 导致该软件网络不稳定,可注释掉 hostname。 38 | */ 39 | 40 | const CheckinURL = 'https://mall.oclean.com/API/VshopProcess.ashx' 41 | const DrawURL = 'https://mall.oclean.com/api/VshopProcess.ashx?action=ActivityDraw' 42 | const CookieName = '欧可林' 43 | const CookieKey = 'Oclean' 44 | const reg = /Shop-Member=(\S*);/ 45 | const $cmp = compatibility() 46 | 47 | const utils = require('./utils'); 48 | const Env = utils.Env; 49 | const sleep = utils.sleep; 50 | const getData = utils.getData; 51 | 52 | const $ = new Env('Olcean'); 53 | const notify = $.isNode() ? require('./notify') : ''; 54 | const COOKIES_OCLEAN = getData().Oclean; 55 | 56 | !(async () => { 57 | if ($cmp.isRequest) { 58 | GetCookie() 59 | } else { 60 | await Checkin() 61 | } 62 | })().finally(() => $cmp.done()) 63 | 64 | function GetCookie() { 65 | if ($request && reg.exec($request.headers['Cookie'])[1]) { 66 | let CookieValue = reg.exec($request.headers['Cookie'])[1] 67 | if ($cmp.read(CookieKey) != (undefined || null)) { 68 | if ($cmp.read(CookieKey) != CookieValue) { 69 | let token = $cmp.write(CookieValue, CookieKey) 70 | if (!token) { 71 | $cmp.notify("更新" + CookieName + " Cookie 失败‼️", "", "") 72 | } else { 73 | $cmp.notify("更新" + CookieName + " Cookie 成功 🎉", "", "") 74 | } 75 | } 76 | } else { 77 | let token = $cmp.write(CookieValue, CookieKey) 78 | if (!token) { 79 | $cmp.notify("首次写入" + CookieName + " Cookie 失败‼️", "", "") 80 | } else { 81 | $cmp.notify("首次写入" + CookieName + " Cookie 成功 🎉", "", "") 82 | } 83 | } 84 | } else { 85 | $cmp.notify("写入" + CookieName + "Cookie 失败‼️", "", "配置错误, 无法读取请求头, ") 86 | } 87 | } 88 | 89 | async function Checkin() { 90 | let subTitle = '' 91 | let detail = '' 92 | const oclean = { 93 | url: CheckinURL, 94 | headers: { 95 | "Cookie": 'Shop-Member=' + COOKIES_OCLEAN, 96 | }, 97 | body: 'action=SignIn&SignInSource=2&clientType=2' 98 | } 99 | const oclean_draw = { 100 | url: DrawURL, 101 | headers: { 102 | "Cookie": 'Shop-Member=' + COOKIES_OCLEAN, 103 | }, 104 | body: 'ActivityId=9&clientType=2' 105 | } 106 | await new Promise((resolve, reject) => { 107 | $cmp.post(oclean_draw, function(error, response, data) { 108 | if (!error) { 109 | const result = JSON.parse(data) 110 | if (result.Status == "OK" || result.Data.AwardGrade) { 111 | $cmp.log("Oclean draw succeed response : \n" + result.Data.Msg + ':' + result.Data.AwardSubName + '\n一等奖可能是未中奖。。') 112 | } else { 113 | $cmp.log("Oclean draw failed response : \n" + JSON.stringify(result)) 114 | } 115 | } else { 116 | $cmp.log("Oclean draw failed response : \n" + error) 117 | } 118 | resolve() 119 | }) 120 | }) 121 | await new Promise((resolve, reject) => { 122 | $cmp.post(oclean, function(error, response, data) { 123 | if (!error) { 124 | const result = JSON.parse(data) 125 | if (result.Status == "OK" && result.Code == 1) { 126 | subTitle += '签到成功!🦷' 127 | let todayget = result.Data.points 128 | let total = result.Data.integral 129 | detail += '签到获得 ' + todayget + ' 积分,账户共有 ' + total + ' 积分。' 130 | } else if (result.Status == "OK" && result.Code == 2) { 131 | subTitle += '重复签到!🥢' 132 | let total = result.Data.integral 133 | detail += '账户共有 ' + total + ' 积分。' 134 | } else if (result.Status == "NO") { 135 | subTitle += 'Cookie 失效或未获取' 136 | detail += '请按照脚本开头注释获取 Cookie。' 137 | } else { 138 | subTitle += '未知错误,详情请见日志。' 139 | detail += result.Message 140 | $cmp.log("Oclean failed response : \n" + JSON.stringify(result)) 141 | } 142 | } else { 143 | subTitle += '签到接口请求失败,详情请见日志。' 144 | detail += error 145 | $cmp.log("Oclean failed response : \n" + error) 146 | } 147 | $cmp.notify(CookieName, subTitle, detail) 148 | resolve() 149 | }) 150 | }) 151 | } 152 | 153 | function compatibility(){const e="undefined"!=typeof $request,t="undefined"!=typeof $httpClient,r="undefined"!=typeof $task,n="undefined"!=typeof $app&&"undefined"!=typeof $http,o="function"==typeof require&&!n,s=(()=>{if(o){const e=require("request");return{request:e}}return null})(),i=(e,s,i)=>{r&&$notify(e,s,i),t&&$notification.post(e,s,i),o&&a(e+s+i),n&&$push.schedule({title:e,body:s?s+"\n"+i:i})},u=(e,n)=>r?$prefs.setValueForKey(e,n):t?$persistentStore.write(e,n):void 0,d=e=>r?$prefs.valueForKey(e):t?$persistentStore.read(e):void 0,l=e=>(e&&(e.status?e.statusCode=e.status:e.statusCode&&(e.status=e.statusCode)),e),f=(e,i)=>{r&&("string"==typeof e&&(e={url:e}),e.method="GET",$task.fetch(e).then(e=>{i(null,l(e),e.body)},e=>i(e.error,null,null))),t&&$httpClient.get(e,(e,t,r)=>{i(e,l(t),r)}),o&&s.request(e,(e,t,r)=>{i(e,l(t),r)}),n&&("string"==typeof e&&(e={url:e}),e.header=e.headers,e.handler=function(e){let t=e.error;t&&(t=JSON.stringify(e.error));let r=e.data;"object"==typeof r&&(r=JSON.stringify(e.data)),i(t,l(e.response),r)},$http.get(e))},p=(e,i)=>{r&&("string"==typeof e&&(e={url:e}),e.method="POST",$task.fetch(e).then(e=>{i(null,l(e),e.body)},e=>i(e.error,null,null))),t&&$httpClient.post(e,(e,t,r)=>{i(e,l(t),r)}),o&&s.request.post(e,(e,t,r)=>{i(e,l(t),r)}),n&&("string"==typeof e&&(e={url:e}),e.header=e.headers,e.handler=function(e){let t=e.error;t&&(t=JSON.stringify(e.error));let r=e.data;"object"==typeof r&&(r=JSON.stringify(e.data)),i(t,l(e.response),r)},$http.post(e))},a=e=>console.log(e),y=(t={})=>{e?$done(t):$done()};return{isQuanX:r,isSurge:t,isJSBox:n,isRequest:e,notify:i,write:u,read:d,get:f,post:p,log:a,done:y}} 154 | -------------------------------------------------------------------------------- /Surge/Sgmodule/LLSPCrack.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=LLSPCrack 2 | #!desc=LLSPCrack is automatically converted by github@FlechazoPh SCRIPT; if not available plz use Script-Hub. 3 | [MITM] 4 | hostname = %APPEND% h5*you* 5 | [Script] 6 | LLSPCrack = type=http-response,pattern=^https?:\/\/h5.*you.*\/h5\/login\/loginAccount$,script-path=https://raw.githubusercontent.com/yqc007/QuantumultX/master/LLSPCrack.js 7 | -------------------------------------------------------------------------------- /Surge/Sgmodule/pure.baidu.user.sgmodule: -------------------------------------------------------------------------------- 1 | #!name=pure.baidu.user 2 | #!desc=pure.baidu.user is automatically converted by github@FlechazoPh SCRIPT; if not available plz use Script-Hub. 3 | [MITM] 4 | 5 | [Script] 6 | pure.baidu.user = type=http-response,pattern=http:\/\/m\.baidu\.com\/.*,script-path=pure.baidu.user.js 7 | pure.baidu.user = type=http-response,pattern=https:\/\/m\.baidu\.com\/.*,script-path=pure.baidu.user.js 8 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.m\.baidu\.com\/.*,script-path=pure.baidu.user.js 9 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.m\.baidu\.com\/.*,script-path=pure.baidu.user.js 10 | pure.baidu.user = type=http-response,pattern=http:\/\/www\.baidu\.com\/.*,script-path=pure.baidu.user.js 11 | pure.baidu.user = type=http-response,pattern=https:\/\/www\.baidu\.com\/.*,script-path=pure.baidu.user.js 12 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.www\.baidu\.com\/.*,script-path=pure.baidu.user.js 13 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.www\.baidu\.com\/.*,script-path=pure.baidu.user.js 14 | pure.baidu.user = type=http-response,pattern=http:\/\/wapbaike\.baidu\.com\/.*,script-path=pure.baidu.user.js 15 | pure.baidu.user = type=http-response,pattern=https:\/\/wapbaike\.baidu\.com\/.*,script-path=pure.baidu.user.js 16 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.wapbaike\.baidu\.com\/.*,script-path=pure.baidu.user.js 17 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.wapbaike\.baidu\.com\/.*,script-path=pure.baidu.user.js 18 | pure.baidu.user = type=http-response,pattern=http:\/\/baike\.baidu\.com\/.*,script-path=pure.baidu.user.js 19 | pure.baidu.user = type=http-response,pattern=https:\/\/baike\.baidu\.com\/.*,script-path=pure.baidu.user.js 20 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.baike\.baidu\.com\/.*,script-path=pure.baidu.user.js 21 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.baike\.baidu\.com\/.*,script-path=pure.baidu.user.js 22 | pure.baidu.user = type=http-response,pattern=http:\/\/m\.baidu\.com\/?tn=simple.*,script-path=pure.baidu.user.js 23 | pure.baidu.user = type=http-response,pattern=https:\/\/m\.baidu\.com\/?tn=simple.*,script-path=pure.baidu.user.js 24 | pure.baidu.user = type=http-response,pattern=http:\/\/mbd\.baidu\.com\/.*,script-path=pure.baidu.user.js 25 | pure.baidu.user = type=http-response,pattern=https:\/\/mbd\.baidu\.com\/.*,script-path=pure.baidu.user.js 26 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.mbd\.baidu\.com\/.*,script-path=pure.baidu.user.js 27 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.mbd\.baidu\.com\/.*,script-path=pure.baidu.user.js 28 | pure.baidu.user = type=http-response,pattern=http:\/\/pae\.baidu\.com\/.*,script-path=pure.baidu.user.js 29 | pure.baidu.user = type=http-response,pattern=https:\/\/pae\.baidu\.com\/.*,script-path=pure.baidu.user.js 30 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.pae\.baidu\.com\/.*,script-path=pure.baidu.user.js 31 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.pae\.baidu\.com\/.*,script-path=pure.baidu.user.js 32 | pure.baidu.user = type=http-response,pattern=http:\/\/baijiahao\.baidu\.com\/.*,script-path=pure.baidu.user.js 33 | pure.baidu.user = type=http-response,pattern=https:\/\/baijiahao\.baidu\.com\/.*,script-path=pure.baidu.user.js 34 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.baijiahao\.baidu\.com\/.*,script-path=pure.baidu.user.js 35 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.baijiahao\.baidu\.com\/.*,script-path=pure.baidu.user.js 36 | pure.baidu.user = type=http-response,pattern=http:\/\/haokan\.baidu\.com\/.*,script-path=pure.baidu.user.js 37 | pure.baidu.user = type=http-response,pattern=https:\/\/haokan\.baidu\.com\/.*,script-path=pure.baidu.user.js 38 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.haokan\.baidu\.com\/.*,script-path=pure.baidu.user.js 39 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.haokan\.baidu\.com\/.*,script-path=pure.baidu.user.js 40 | pure.baidu.user = type=http-response,pattern=http:\/\/mobile\.baidu\.com\/.*,script-path=pure.baidu.user.js 41 | pure.baidu.user = type=http-response,pattern=https:\/\/mobile\.baidu\.com\/.*,script-path=pure.baidu.user.js 42 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.mobile\.baidu\.com\/.*,script-path=pure.baidu.user.js 43 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.mobile\.baidu\.com\/.*,script-path=pure.baidu.user.js 44 | pure.baidu.user = type=http-response,pattern=http:\/\/zhidao\.baidu\.com\/.*,script-path=pure.baidu.user.js 45 | pure.baidu.user = type=http-response,pattern=https:\/\/zhidao\.baidu\.com\/.*,script-path=pure.baidu.user.js 46 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.zhidao\.baidu\.com\/.*,script-path=pure.baidu.user.js 47 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.zhidao\.baidu\.com\/.*,script-path=pure.baidu.user.js 48 | pure.baidu.user = type=http-response,pattern=http:\/\/wk\.baidu\.com\/.*,script-path=pure.baidu.user.js 49 | pure.baidu.user = type=http-response,pattern=https:\/\/wk\.baidu\.com\/.*,script-path=pure.baidu.user.js 50 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.wk\.baidu\.com\/.*,script-path=pure.baidu.user.js 51 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.wk\.baidu\.com\/.*,script-path=pure.baidu.user.js 52 | pure.baidu.user = type=http-response,pattern=http:\/\/fanyi\.baidu\.com\/.*,script-path=pure.baidu.user.js 53 | pure.baidu.user = type=http-response,pattern=https:\/\/fanyi\.baidu\.com\/.*,script-path=pure.baidu.user.js 54 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.fanyi\.baidu\.com\/.*,script-path=pure.baidu.user.js 55 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.fanyi\.baidu\.com\/.*,script-path=pure.baidu.user.js 56 | pure.baidu.user = type=http-response,pattern=http:\/\/jingyan\.baidu\.com\/.*,script-path=pure.baidu.user.js 57 | pure.baidu.user = type=http-response,pattern=https:\/\/jingyan\.baidu\.com\/.*,script-path=pure.baidu.user.js 58 | pure.baidu.user = type=http-response,pattern=http:\/\/.*\.jingyan\.baidu\.com\/.*,script-path=pure.baidu.user.js 59 | pure.baidu.user = type=http-response,pattern=https:\/\/.*\.jingyan\.baidu\.com\/.*,script-path=pure.baidu.user.js 60 | --------------------------------------------------------------------------------