├── 6Slite.conf ├── ClashConfig.yml ├── Clash_ACL4SSR.ini ├── Clash_ACL4SSR_Mini.ini ├── Clash_ACL4SSR_Netflix.ini ├── DIY_shopsign.js ├── EmbyPremiere.conf ├── Get_Cookie.conf ├── Mtxx.js ├── Profiles.conf ├── README.md ├── bing.png ├── caiyuntianqi.conf ├── jd_cash_exchange.js ├── jd_try.js ├── jddb.js ├── jkd.js ├── jone2008_lxk_cookies.conf ├── jone2008_lxk_gallery.json ├── mtxx.js ├── pp_parking.js ├── rewrite.conf ├── sfssss.js ├── shareCode-auto.js ├── shareCode-backup.js └── wxgetcookie.js /6Slite.conf: -------------------------------------------------------------------------------- 1 | [general] 2 | # 建议在「其他设置」里「GeoLite2」的「来源」填写使用「 https://raw.githubusercontent.com/Loyalsoldier/geoip/release/Country.mmdb 」并开启「自动更新」 3 | server_check_url= http://www.qualcomm.cn/generate_204 4 | resource_parser_url= https://cdn.jsdelivr.net/gh/KOP-XIAO/QuantumultX@master/Scripts/resource-parser.js 5 | geo_location_checker=http://ip-api.com/json/?lang=zh-CN, https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/IP_API.js 6 | 7 | # DNS 排除列表 8 | # dns_exclusion_list 包含了禁用占位符 IP (240.*) 的域,不在 dns_exclusion_list 中的域都启用了占位符 IP,并打开了 resolve-on-remote 设置。 9 | dns_exclusion_list=*.cmpassport.com, *.jegotrip.com.cn, *.icitymobile.mobi, id6.me, *.pingan.com.cn, *.cmbchina.com 10 | excluded_routes=239.255.255.250/32, 24.105.30.129/32, 185.60.112.157/32, 185.60.112.158/32, 182.162.132.1/32 11 | 12 | udp_whitelist=1-442, 444-65535 13 | fallback_udp_policy=direct 14 | 15 | 16 | [dns] 17 | # 查询结果只用于评估过滤器或通过直接策略连接,当通过服务器连接时,查询结果不会被使用,Quantumult 永远不会知道相关域名的目标 IP。 18 | # 如果您想让某个域名(例如:example.com)为 127.0.0.0.1,只需在「filter_local」部分添加「host, example.com, reject」即可。拒绝操作将返回 127.0.0.0.1 的 DNS 响应。 19 | 20 | # 禁用系统 DNS 21 | # 为了提高性能,会使用从当前网络(系统)中获取的 DNS 服务器(您可以使用「no-system」禁用此功能,但至少要增加一个自定义的 DNS 服务器。 22 | ;no-system 23 | 24 | # 禁用 IPv6 25 | # 当设置「no-ipv6」时,Quanumult X Tunnel 的 DNS 模块会直接让 AAAA 查询失败。 26 | no-ipv6 27 | 28 | # 自定义 DNS 29 | # > OneDNS 30 | ;server=117.50.10.10 31 | # > DNSPod Public DNS 32 | server=119.29.29.29 33 | # > Alibaba Public DNS 34 | ;server=223.5.5.5 35 | 36 | # 在特定的网络环境下忽略自定义 DNS 可在后方加上「excluded_ssids」相关字段。 37 | # 注意:如配置了 no-system,则请务必确保在忽略了部分自定义 DNS 的配置下至少有一个可用的自定义 DNS 配置。 38 | # server=114.114.114.114, excluded_ssids=SSID1, SSID2 39 | 40 | # DNS over HTTPS 41 | # 当 DoH 服务器被设置时,所有其他普通的(没有与之相关的特定域)服务器将被忽略。 42 | # 当设置了多个 DoH 服务器时,只有第一个会被使用。 43 | # 当使用的 DoH 服务器不是基于 HTTP/2 时,DoH 将被暂时禁用,并使用常规服务器,直到下次启动 VPN 连接。 44 | # 不建议在与防火墙相关的网络环境中使用,不确定 DoH 服务器是否总能被到达。 45 | # 如果 DoH 服务器在您的国家或地区不是流行的 DNS 服务器,则不推荐使用,它可能会丢失 ISP DNS 服务器返回的 CDN 优化结果。 46 | # 如果 DoH 服务器是一个反广告相关的服务器,则不推荐使用(Quantumult X 过滤模块对于被拒绝的域具有更好的性能,它可以避免客户端无休止的请求)。 47 | ;doh-server=https://dns.alidns.com/dns-query 48 | ;doh-server=https://223.6.6.6/dns-query 49 | 50 | # 本地 DNS 映射 51 | 52 | # > Firebase Cloud Messaging 53 | address=/mtalk.google.com/108.177.125.188 54 | # > Google Dl 55 | server=/dl.google.com/119.29.29.29 56 | server=/dl.l.google.com/119.29.29.29 57 | server=/update.googleapis.com/119.29.29.29 58 | 59 | # > PlayStation 60 | server=/*.dl.playstation.net/119.29.29.29 61 | 62 | # > Router Admin Panel 63 | server=/amplifi.lan/system 64 | server=/router.synology.com/system 65 | server=/sila.razer.com/system 66 | server=/router.asus.com/system 67 | server=/routerlogin.net/system 68 | server=/orbilogin.com/system 69 | server=/www.LinksysSmartWiFi.com/system 70 | server=/LinksysSmartWiFi.com/system 71 | server=/myrouter.local/system 72 | server=/www.miwifi.com/system 73 | server=/miwifi.com/system 74 | server=/mediarouter.home/system 75 | server=/tplogin.cn/system 76 | server=/tplinklogin.net/system 77 | server=/melogin.cn/system 78 | server=/falogin.cn/system 79 | 80 | ;server=8.8.4.4:53 81 | ;server=/example0.com/system 82 | ;server=/example1.com/8.8.4.4 83 | ;server=/*.example2.com/223.5.5.5 84 | ;server=/example4.com/[2001:4860:4860::8888]:53 85 | ;address=/example5.com/192.168.16.18 86 | ;address=/example6.com/[2001:8d3:8d3:8d3:8d3:8d3:8d3:8d3] 87 | 88 | 89 | [policy] 90 | url-latency-benchmark=香港节点, server-tag-regex=Lv3.*香港, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/HK.png 91 | url-latency-benchmark=台湾节点, server-tag-regex=(?=.*(台|TW|(?i)Taiwan))^((?!(港|日|韩|新|美)).)*$, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/TW.png 92 | url-latency-benchmark=日本节点, server-tag-regex=(?=.*(日|JP|(?i)Japan))^((?!(港|台|韩|新|美)).)*$, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/JP.png 93 | url-latency-benchmark=狮城节点, server-tag-regex=(?=.*(新|狮|獅|SG|(?i)Singapore))^((?!(港|台|日|韩|美)).)*$, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/SG.png 94 | url-latency-benchmark=美国节点, server-tag-regex=(?=.*(美|US|(?i)States|American))^((?!(港|台|日|韩|新)).)*$, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/US.png 95 | static=🍎 苹果服务, direct, proxy, img-url= https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Apple.png 96 | static=📽 国内视频, direct, proxy, img-url= https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/DomesticMedia.png 97 | static=💻 国外影视, 香港节点, 台湾节点, 狮城节点, proxy, direct, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/ForeignMedia.png 98 | static=📺 Netflix, 台湾节点, 狮城节点, proxy, direct, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/Netflix.png 99 | static=🎬 YouTube, 香港节点, 台湾节点, 狮城节点, proxy, direct, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/YouTube.png 100 | static=📹 Disney+, 台湾节点, 狮城节点, proxy, direct, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/DisneyPlus.png 101 | static=📱 Telegram, 香港节点, 台湾节点, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/Telegram.png 102 | static=🌏 国外网站, 香港节点, 台湾节点, proxy, direct, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/Global.png 103 | static=🕹 终极清单, direct, proxy, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Final.png 104 | #server-tag-regex 以及 resource-tag-regex 参数用于正则筛选来建立策略组 105 | #具体可参见教程部分: https://shrtm.nu/DAFP 106 | 107 | [server_remote] 108 | 109 | [filter_remote] 110 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Unbreak.list, tag=规则修正, force-policy=direct, update-interval=86400, opt-parser=true, enabled=true 111 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Advertising.list, tag=广告拦截, force-policy=reject, update-interval=86400, opt-parser=true, enabled=true 112 | https://raw.githubusercontent.com/NobyDa/Script/master/Surge/AdRule.list, tag=广告拦截, force-policy=reject, update-interval=86400, opt-parser=true, enabled=true 113 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Hijacking.list, tag=运营劫持, force-policy=reject, update-interval=86400, opt-parser=true, enabled=true 114 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Privacy.list, tag=隐私保护, force-policy=reject, update-interval=86400, opt-parser=true, enabled=true 115 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/StreamingCN.list, force-policy=📽 国内视频, tag=📽 国内视频, enabled=true 116 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Video/Netflix.list, tag=📺 Netflix, force-policy=📺 Netflix, enabled=true 117 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Video/YouTube.list, tag=🎬 YouTube, force-policy=🎬 YouTube, enabled=true 118 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/StreamingMedia/Video/DisneyPlus.list, tag=📹 Disney+, force-policy=📹 Disney+, update-interval=172800, opt-parser=true, enabled=true 119 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Streaming.list, tag=💻 国外影视,force-policy= 💻 国外影视, enabled=true 120 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/Telegram/Telegram.list, tag=📱 telegram, force-policy=📱 Telegram, update-interval=172800, opt-parser=true, enabled=true 121 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Global.list, tag=🌍 国外网站, force-policy= 🌏 国外网站, enabled=true 122 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Extra/Apple/Apple.list, tag= Apple服务, force-policy=🍎 苹果服务,enabled=true 123 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Extra/Apple/TestFlight.list, tag=Testflight, force-policy=direct, update-interval=86400, opt-parser=true, enabled=true 124 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/China.list, tag=🐼 国内网站, force-policy=direct, update-interval=172800, opt-parser=true, enabled=true 125 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Extra/ChinaIP.list, tag=🇨🇳️ 国内IP池, force-policy=direct, update-interval=172800, opt-parser=true, enabled=true 126 | #支持本地/iCloud规则文件,位于Quantumult X/Profiles路径下 127 | ;filter.txt, tag=本地分流, enabled=false 128 | 129 | 130 | [rewrite_remote] 131 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rewrite/QuantumultX/AllInOne/AllInOne.conf, tag=去广告大集合, update-interval=86400, opt-parser=true, enabled=true 132 | https://raw.githubusercontent.com/Jone2008/QuantumultX/master/Get_Cookie.conf, tag=自用抓包集合, update-interval=86400, opt-parser=true, enabled=true 133 | https://raw.githubusercontent.com/chavyleung/scripts/master/QuantumultX_Local_Cookie.conf, tag=chavyleung抓包, update-interval=86400, opt-parser=true, enabled=false 134 | https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Js_Remote_Cookie.conf, tag=野比大佬抓包, update-interval=86400, opt-parser=false, enabled=false 135 | https://raw.githubusercontent.com/Jone2008/QuantumultX/master/rewrite.conf, tag=自用重写规则, update-interval=86400, opt-parser=true, enabled=false 136 | https://gitee.com/chavyleung/scripts/raw/master/box/rewrite/boxjs.rewrite.quanx.conf, tag=boxjs新, update-interval=86400, opt-parser=true, enabled=false 137 | https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Rewrite_lhie1.conf, tag=野比大佬重写规则, update-interval=86400, opt-parser=true, enabled=false 138 | https://gitee.com/chavyleung/scripts/raw/master/box/rewrite/boxjs.rewrite.quanx.tf.conf, tag=boxjs_TF, update-interval=86400, opt-parser=true, enabled=false 139 | 140 | 141 | [task_local] 142 | 143 | 144 | 145 | [rewrite_local] 146 | 147 | 148 | 149 | [server_local] 150 | 151 | 152 | [filter_local] 153 | # Local Area Network 局域网 154 | host-suffix, local, direct 155 | ip-cidr, 192.168.0.0/16, direct 156 | ip-cidr, 10.0.0.0/8, direct 157 | ip-cidr, 172.16.0.0/12, direct 158 | ip-cidr, 127.0.0.0/8, direct 159 | ip-cidr, 100.64.0.0/10, direct 160 | ip-cidr, 224.0.0.0/4, direct 161 | ip6-cidr, fe80::/10, direct 162 | 163 | final, 🕹 终极清单 164 | 165 | [mitm] 166 | -------------------------------------------------------------------------------- /ClashConfig.yml: -------------------------------------------------------------------------------- 1 | #---------------------------------------------------# 2 | # 配置文件需要放置在 $HOME/.config/clash/config.yml 3 | # 或者运行目录下的config.yml 4 | #---------------------------------------------------# 5 | # 混合端口 HTTP和SOCKS5用一个端口 6 | mixed-port: 7890 7 | 8 | # HTTP 代理端口 9 | # port: 7890 10 | 11 | # SOCKS5 代理端口 12 | socks-port: 7891 13 | 14 | # Linux 和 macOS 的 redir 代理端口 (如需使用此功能,请取消注释) 15 | # redir-port: 7892 16 | 17 | # 允许局域网的连接(可用来共享代理) 18 | allow-lan: true 19 | 20 | # 仅在将allow-lan设置为true时适用 21 | # #"*": 绑定所有IP地址 22 | # #192.168.122.11: 绑定单个IPv4地址 23 | # #"[aaaa::a8aa:ff:fe09:57d8]": 绑定单个IPv6地址 24 | bind-address: "*" 25 | ipv6: true 26 | 27 | # 规则模式:rule(规则) / global(全局代理)/ direct(全局直连)/ script (脚本) 28 | # mode: rule 29 | 30 | # 设置日志输出级别 (默认级别:silent,即不输出任何内容,以避免因日志内容过大而导致程序内存溢出)。 31 | # 5 个级别:silent / error / warning / info / debug。级别越高日志输出量越大,越倾向于调试,若需要请自行开启。 32 | log-level: info 33 | 34 | # Clash 的 RESTful API 35 | external-controller: '0.0.0.0:9090' 36 | 37 | # 您可以将静态网页资源(如 clash-dashboard)放置在一个目录中,clash 将会服务于 `RESTful API/ui` 38 | # 参数应填写配置目录的相对路径或绝对路径。 39 | # http://127.0.0.1:9090/ui/#/ 40 | # external-ui: folder 41 | # yacd面板: https://github.com/haishanh/yacd 42 | # Razord面板:http://clash.razord.top/#/proxies 43 | # external-ui: dashboard 44 | 45 | # RESTful API 的口令 (可选) 46 | # secret: "" 47 | 48 | # 实验性功能 49 | experimental: 50 | ignore-resolve-fail: true # 忽略 DNS 解析失败,默认值为 true 51 | # interface-name: en0 # outbound interface name 52 | 53 | # 本地 SOCKS5 / HTTP(S) 服务认证 54 | # authentication: 55 | # - "user1:pass1" 56 | # - "user2:pass2" 57 | 58 | # 实验性功能 hosts, 支持通配符 (例如 *.clash.dev 甚至 *.foo.*.example.com) 59 | # 静态的域名 比 通配域名 具有更高的优先级 (foo.example.com 优先于 *.example.com) 60 | # 注意: hosts 在 fake-ip 模式下不生效 61 | #hosts: 62 | # '*.clash.dev': 127.0.0.1 63 | # 'alpha.clash.dev': '::1' 64 | 65 | #dns: 66 | #enable: true # 是否启用dns false 67 | #ipv6: false 68 | #listen: 0.0.0.0:53 69 | #enhanced-mode: redir-host # 模式:redir-host或fake-ip 70 | #fake-ip-range: 198.18.0.1/16 # 71 | #fake-ip-filter: # fake ip 白名单列表,如果你不知道这个参数的作用,请勿修改 72 | #- '*.lan' 73 | #- localhost.ptlogin2.qq.com 74 | #nameserver: 75 | #- 223.5.5.5 # 阿里DNS 76 | #- 180.76.76.76 # 百度DNS 77 | #- 119.29.29.29 # 腾讯DNS 78 | #- 117.50.11.11 # ONE DNS拦截版 恶意网站拦截、广告过滤 79 | #- 117.50.10.10 # ONE DNS纯净版 直接返回其真实的响应结果 80 | #- 114.114.114.114 # 114DNS 81 | #- https://dns.alidns.com/dns-query # 阿里 DoH DNS 82 | #- https://doh.360.cn/dns-query # 360 DoH DNS 83 | #fallback: 84 | #- 8.8.8.8 # 谷歌DNS 85 | #- 1.1.1.1 # Cloudflare DNS 86 | #- tls://dns.rubyfish.cn:853 87 | #- tls://1.0.0.1:853 88 | #- tls://dns.google:853 89 | #- https://dns.rubyfish.cn/dns-query 90 | #- https://cloudflare-dns.com/dns-query 91 | #- https://dns.google/dns-query 92 | #fallback-filter: 93 | #geoip: true # 默认 94 | #ipcidr: # 在这个网段内的 IP 地址会被考虑为被污染的 IP 95 | #- 240.0.0.0/4 96 | 97 | # 1. clash DNS 请求逻辑: 98 | # (1) 当访问一个域名时, nameserver 与 fallback 列表内的所有服务器并发请求,得到域名对应的 IP 地址。 99 | # (2) clash 将选取 nameserver 列表内,解析最快的结果。 100 | # (3) 若解析结果中,IP 地址属于 国外,那么 clash 将选择 fallback 列表内,解析最快的结果。 101 | # 102 | # 因此,我在 nameserver 和 fallback 内都放置了无污染、解析速度较快的国内 DNS 服务器,以达到最快的解析速度。 103 | # 但是 fallback 列表内服务器会用在解析境外网站,为了结果绝对无污染,我仅保留了支持 DoT/DoH 的两个服务器。 104 | # 105 | # 2. clash DNS 配置注意事项: 106 | # (1) 如果您为了确保 DNS 解析结果无污染,请仅保留列表内以 tls:// 或 https:// 开头的 DNS 服务器,但是通常对于国内域名没有必要。 107 | # (2) 如果您不在乎可能解析到污染的结果,更加追求速度。请将 nameserver 列表的服务器插入至 fallback 列表内,并移除重复项。 108 | # 109 | # 3. 关于 DNS over HTTPS (DoH) 和 DNS over TLS (DoT) 的选择: 110 | # 对于两项技术双方各执一词,而且会无休止的争论,各有利弊。各位请根据具体需求自行选择,但是配置文件内默认启用 DoT,因为目前国内没有封锁或管制。 111 | # DoH: 以 https:// 开头的 DNS 服务器。拥有更好的伪装性,且几乎不可能被运营商或网络管理封锁,但查询效率和安全性可能略低。 112 | # DoT: 以 tls:// 开头的 DNS 服务器。拥有更高的安全性和查询效率,但端口有可能被管制或封锁。 113 | # 若要了解更多关于 DoH/DoT 相关技术,请自行查阅规范文档。 114 | 115 | # 代理组 116 | # 下面这3个不要引到订阅里去 要不会出错 117 | # Will be ignored after profile selection 118 | #proxies: 119 | # - name: Shadowsocks 120 | # type: socks5 121 | # server: 127.0.0.1 122 | # port: 1080 123 | #proxy-groups: 124 | # - name: Proxy 125 | # type: select 126 | # proxies: 127 | # - Shadowsocks 128 | #rules: 129 | # - 'MATCH,DIRECT' 130 | 131 | # Clash for Windows 132 | # Proxies module latency test settings 133 | cfw-latency-timeout: 3000 134 | cfw-latency-url: http://www.gstatic.com/generate_204 135 | 136 | # 混合配置(mixin) 137 | # 支持向所有配置文件中注入公共属性设置 138 | #cfw-profile-mixin: 139 | #dns: 140 | #enable: true 141 | #listen: :53 142 | #enhanced-mode: fake-ip 143 | #nameserver: 144 | #- 223.5.5.5 # 阿里DNS 145 | #- 180.76.76.76 # 百度DNS 146 | #- 119.29.29.29 # 腾讯DNS 147 | #- 117.50.11.11 # ONE DNS拦截版 恶意网站拦截、广告过滤 148 | #- 117.50.10.10 # ONE DNS纯净版 直接返回其真实的响应结果 149 | #- 114.114.114.114 # 114DNS 150 | #experimental: 151 | #interface-name: WLAN 152 | 153 | #自定义配置目录 154 | #cfw-profiles-path: 'C:\Users\Administrator\.config\clash\profiles' 155 | 156 | # 打断连接 157 | # Identify strategy of breaking connections after switching to a new proxy/profile/mode 158 | # Options for proxy: none, chain(proxy group in connection chains), all 159 | # Options for profile: true, false 160 | # Options for mode: true, false 161 | cfw-conn-break-strategy: 162 | proxy: none # none/chain/all 163 | profile: true # true/false 164 | mode: false # true/false 165 | 166 | # 自定义状态栏图标 167 | #cfw-tray-icon: 168 | #default: .\resources\static\imgs\logo_64.png # 默认图标 169 | #system-proxy-on: .\resources\static\imgs\custom.ico # 开启系统代理后图标 170 | 171 | # 自定义字体 172 | #cfw-font-family: "Noto Sans TC" # 系统中存在的字体 173 | 174 | # 自定义请求头 175 | #cfw-http-headers: 176 | #token: "123456" 177 | #cfw-version: "0.9.11" 178 | 179 | # 自定义节点排序 180 | # 可选参数: 181 | # default:按配置文件定义节点顺序 182 | # latency:按节点延迟升序排列 183 | # alphabet:按节点名称字母表排列 184 | # Sort proxies in Proxies module by default/latency/alphabet 185 | cfw-proxies-order: default 186 | 187 | # 子进程 启动其他应用 188 | # Run child process after CFW started 189 | # Refer: https://docs.cfw.lbyczf.com/contents/childprocess.html 190 | #cfw-child-process: 191 | # 启动订阅转换程序,端口号7893 192 | #- command: "subconverter.exe" # run.cmd 程序名称 subconverter.exe -cfw >>logs/run.log 2>&1 193 | #args: 194 | #- "-cfw" # 运行参数1 195 | #- "-f" # 运行参数2 196 | #- "pref-acl4ssr.yml" # 运行参数3 197 | #options: 198 | #cwd: subconverter # 子进程工作目录 199 | #detached: true # 子进程独立于其父进程运行 200 | #shell: true # 则在 shell 中运行 command 201 | #windowsHide: true # 隐藏子进程的控制台窗口 202 | # 启动网易云,端口号3333 203 | #- command: "unblockneteasemusic.exe" # 启动网易云 204 | #args: 205 | #- "-p" # 运行参数1 206 | #- "3333" # 运行参数2 207 | #options: 208 | #cwd: unblockNeteaseMusic # 子进程工作目录 209 | #detached: true # 子进程独立于其父进程运行 210 | #shell: true # 则在 shell 中运行 command 211 | #windowsHide: true # 隐藏子进程的控制台窗口 212 | 213 | # 系统代理跳过列表 cfw-bypass 214 | # System proxy will ignore these domains(or ipnet) 215 | # 系统代理跳过列表-备份的,不起作用, 216 | # 使用时可以将cfw-bypass-bak与cfw-bypass内容互换 217 | cfw-bypass-bak: 218 | # 原有字段不用删除 219 | - qq.com 220 | - 'music.163.com' # 网易云域名1 221 | - '*.music.126.net' # 网易云域名2 222 | - localhost 223 | - 127.* 224 | - 10.* 225 | - 172.16.* 226 | - 172.17.* 227 | - 172.18.* 228 | - 172.19.* 229 | - 172.20.* 230 | - 172.21.* 231 | - 172.22.* 232 | - 172.23.* 233 | - 172.24.* 234 | - 172.25.* 235 | - 172.26.* 236 | - 172.27.* 237 | - 172.28.* 238 | - 172.29.* 239 | - 172.30.* 240 | - 172.31.* 241 | - 192.168.* 242 | - 243 | # 系统代理跳过列表 起作用的 244 | cfw-bypass: 245 | # 直连列表 246 | # MyList 247 | - "*.13th.tech" 248 | - "*.423down.com" 249 | - "*.bokecc.com" 250 | - "*.chaipip.com" 251 | - "*.chinaplay.store" 252 | - "*.hrtsea.com" 253 | - "*.kaikeba.com" 254 | - "*.laomo.me" 255 | - "*.mpyit.com" 256 | - "*.msftconnecttest.com" 257 | - "*.msftncsi.com" 258 | - "*.qupu123.com" 259 | - "*.pdfwifi.com" 260 | - "*.zhenguanyu.biz" 261 | - "*.zhenguanyu.com" 262 | # CN域名直连(中国|公司|网络) 263 | - "*.cn" 264 | - "*.xn--fiqs8s" 265 | - "*.xn--55qx5d" 266 | - "*.xn--io0a7i" 267 | # 中国国内常见域名关键词直连 268 | - "*360buy*" 269 | - "*alicdn*" 270 | - "*alimama*" 271 | - "*alipay*" 272 | - "*appzapp*" 273 | - "*baidupcs*" 274 | - "*bilibili*" 275 | - "*ccgslb*" 276 | - "*chinacache*" 277 | - "*duobao*" 278 | - "*jdpay*" 279 | - "*moke*" 280 | - "*qhimg*" 281 | - "*vpimg*" 282 | - "*xiami*" 283 | - "*xiaomi*" 284 | # 360 285 | - "*.360.com" 286 | - "*.360kuai.com" 287 | - "*.360safe.com" 288 | - "*.dhrest.com" 289 | - "*.qhres.com" 290 | - "*.qhstatic.com" 291 | - "*.qhupdate.com" 292 | - "*.so.com" 293 | # 4399 294 | - "*.4399.com" 295 | - "*.4399pk.com" 296 | - "*.5054399.com" 297 | - "*.img4399.com" 298 | # 58 299 | - "*.58.com" 300 | # Alibaba 301 | - "*.1688.com" 302 | - "*.aliapp.org" 303 | - "*.alibaba.com" 304 | - "*.alibabacloud.com" 305 | - "*.alibabausercontent.com" 306 | - "*.alicdn.com" 307 | - "*.alicloudccp.com" 308 | - "*.aliexpress.com" 309 | - "*.aliimg.com" 310 | - "*.alikunlun.com" 311 | - "*.alipay.com" 312 | - "*.alipayobjects.com" 313 | - "*.alisoft.com" 314 | - "*.aliyun.com" 315 | - "*.aliyuncdn.com" 316 | - "*.aliyuncs.com" 317 | - "*.aliyundrive.com" 318 | - "*.amap.com" 319 | - "*.autonavi.com" 320 | - "*.dingtalk.com" 321 | - "*.ele.me" 322 | - "*.hichina.com" 323 | - "*.mmstat.com" 324 | - "*.mxhichina.com" 325 | - "*.soku.com" 326 | - "*.taobao.com" 327 | - "*.taobaocdn.com" 328 | - "*.tbcache.com" 329 | - "*.tbcdn.com" 330 | - "*.tmall.com" 331 | - "*.tmall.hk" 332 | - "*.ucweb.com" 333 | - "*.xiami.com" 334 | - "*.xiami.net" 335 | - "*.ykimg.com" 336 | - "*.youku.com" 337 | # Baidu 338 | - "*.baidu.com" 339 | - "*.baidubcr.com" 340 | - "*.baidupcs.com" 341 | - "*.baidustatic.com" 342 | - "*.bcebos.com" 343 | - "*.bdimg.com" 344 | - "*.bdstatic.com" 345 | - "*.bdurl.net" 346 | - "*.hao123.com" 347 | - "*.hao123img.com" 348 | - "*.jomodns.com" 349 | - "*.yunjiasu-cdn.net" 350 | # Bilibili 351 | - "*.acg.tv" 352 | - "*.acgvideo.com" 353 | - "*.b23.tv" 354 | - "*.bigfun.cn" 355 | - "*.bigfunapp.cn" 356 | - "*.biliapi.com" 357 | - "*.biliapi.net" 358 | - "*.bilibili.com" 359 | - "*.biligame.com" 360 | - "*.biligame.net" 361 | - "*.bilivideo.com" 362 | - "*.bilivideo.cn" 363 | - "*.hdslb.com" 364 | - "*.im9.com" 365 | - "*.smtcdns.net" 366 | # Blizzard 367 | - "*.battle.net" 368 | - "*.battlenet.com" 369 | - "*.blizzard.com" 370 | # ByteDance 371 | - "*.amemv.com" 372 | - "*.bdxiguaimg.com" 373 | - "*.bdxiguastatic.com" 374 | - "*.byted-static.com" 375 | - "*.bytedance.com" 376 | - "*.bytedance.net" 377 | - "*.bytedns.net" 378 | - "*.bytednsdoc.com" 379 | - "*.bytegoofy.com" 380 | - "*.byteimg.com" 381 | - "*.bytescm.com" 382 | - "*.bytetos.com" 383 | - "*.bytexservice.com" 384 | - "*.douyin.com" 385 | - "*.douyinpic.com" 386 | - "*.douyinstatic.com" 387 | - "*.douyinvod.com" 388 | - "*.feelgood.cn" 389 | - "*.feiliao.com" 390 | - "*.gifshow.com" 391 | - "*.huoshan.com" 392 | - "*.huoshanzhibo.com" 393 | - "*.ibytedapm.com" 394 | - "*.iesdouyin.com" 395 | - "*.ixigua.com" 396 | - "*.kspkg.com" 397 | - "*.pstatp.com" 398 | - "*.snssdk.com" 399 | - "*.toutiao.com" 400 | - "*.toutiao13.com" 401 | - "*.toutiaoapi.com" 402 | - "*.toutiaocdn.com" 403 | - "*.toutiaocdn.net" 404 | - "*.toutiaocloud.com" 405 | - "*.toutiaohao.com" 406 | - "*.toutiaohao.net" 407 | - "*.toutiaoimg.com" 408 | - "*.toutiaopage.com" 409 | - "*.wukong.com" 410 | - "*.zijieapi.com" 411 | - "*.zijieimg.com" 412 | - "*.zjbyte.com" 413 | - "*.zjcdn.com" 414 | # CCTV 415 | - "*.cctv.com" 416 | - "*.cctvpic.com" 417 | - "*.livechina.com" 418 | # ChinaNet 419 | - "*.21cn.com" 420 | # DiDi 421 | - "*.didialift.com" 422 | - "*.didiglobal.com" 423 | - "*.udache.com" 424 | # Douyu 斗鱼 425 | - "*.douyu.com" 426 | - "*.douyu.tv" 427 | - "*.douyuscdn.com" 428 | - "*.douyutv.com" 429 | # Epic 430 | - "*.epicgames.com" 431 | - "*.epicgames.dev" 432 | - "*.helpshift.com" 433 | - "*.paragon.com" 434 | - "*.unrealengine.com" 435 | # HuaWei 436 | - "*.dbankcdn.com" 437 | - "*.hc-cdn.com" 438 | - "*.hicloud.com" 439 | - "*.hihonor.com" 440 | - "*.huawei.com" 441 | - "*.huaweicloud.com" 442 | - "*.huaweishop.net" 443 | - "*.hwccpc.com" 444 | - "*.vmall.com" 445 | - "*.vmallres.com" 446 | # Iflytek 科大讯飞 447 | - "*.iflyink.com" 448 | - "*.iflyrec.com" 449 | - "*.iflytek.com" 450 | # Iqiyi 451 | - "*.71.am" 452 | - "*.71edge.com" 453 | - "*.iqiyi.com" 454 | - "*.iqiyipic.com" 455 | - "*.ppsimg.com" 456 | - "*.qiyi.com" 457 | - "*.qiyipic.com" 458 | - "*.qy.net" 459 | # JD 460 | - "*.360buy.com" 461 | - "*.360buyimg.com" 462 | - "*.jcloudcs.com" 463 | - "*.jd.com" 464 | - "*.jd.hk" 465 | - "*.jdcloud.com" 466 | - "*.jdpay.com" 467 | - "*.paipai.com" 468 | # Kingsoft 469 | - "*.iciba.com" 470 | - "*.ksosoft.com" 471 | - "*.ksyun.com" 472 | # Kuaishou 快手 473 | - "*.kuaishou.com" 474 | - "*.yximgs.com" 475 | # Meitu 476 | - "*.meitu.com" 477 | - "*.meitudata.com" 478 | - "*.meitustat.com" 479 | - "*.meipai.com" 480 | # LeTV 乐视 481 | - "*.le.com" 482 | - "*.lecloud.com" 483 | - "*.letv.com" 484 | - "*.letvcloud.com" 485 | - "*.letvimg.com" 486 | - "*.letvlive.com" 487 | - "*.letvstore.com" 488 | # MGTV 芒果TV 489 | - "*.hitv.com" 490 | - "*.hunantv.com" 491 | - "*.mgtv.com" 492 | # MI 493 | - "*.duokan.com" 494 | - "*.mi-img.com" 495 | - "*.mi.com" 496 | - "*.miui.com" 497 | - "*.xiaomi.com" 498 | - "*.xiaomi.net" 499 | - "*.xiaomicp.com" 500 | # NetEase 501 | - "*.126.com" 502 | - "*.126.net" 503 | - "*.127.net" 504 | - "*.163.com" 505 | - "*.163yun.com" 506 | - "*.lofter.com" 507 | - "*.netease.com" 508 | - "*.ydstatic.com" 509 | - "*.youdao.com" 510 | # PPTV、PPLive 511 | - "*.pplive.com" 512 | - "*.pptv.com" 513 | # PDD 拼多多 514 | - "*.pinduoduo.com" 515 | - "*.yangkeduo.com" 516 | # Sina 517 | - "*.leju.com" 518 | - "*.miaopai.com" 519 | - "*.sina.com" 520 | - "*.sina.com.cn" 521 | - "*.sina.cn" 522 | - "*.sinaapp.com" 523 | - "*.sinaapp.cn" 524 | - "*.sinaimg.com" 525 | - "*.sinaimg.cn" 526 | - "*.weibo.com" 527 | - "*.weibo.cn" 528 | - "*.weibocdn.com" 529 | - "*.weibocdn.cn" 530 | - "*.xiaoka.tv" 531 | # Sohu Sogo 532 | - "*.go2map.com" 533 | - "*.sogo.com" 534 | - "*.sogou.com" 535 | - "*.sogoucdn.com" 536 | - "*.sohu-inc.com" 537 | - "*.sohu.com" 538 | - "*.sohucs.com" 539 | - "*.sohuno.com" 540 | - "*.sohurdc.com" 541 | - "*.v-56.com" 542 | # Sony 543 | - "*.playstation.com" 544 | - "*.playstation.net" 545 | - "*.playstationnetwork.com" 546 | - "*.sony.com" 547 | - "*.sonyentertainmentnetwork.com" 548 | # SteamCN 549 | - "*.cm.steampowered.com" 550 | - "*.steamcontent.com" 551 | - "*.steamusercontent.com" 552 | - "*.steamchina.com" 553 | - "csgo.wmsj.cn" 554 | - "dota2.wmsj.cn" 555 | - "wmsjsteam.com" 556 | - "dl.steam.clngaa.com" 557 | - "dl.steam.ksyna.com" 558 | - "st.dl.bscstorage.net" 559 | - "st.dl.eccdnx.com" 560 | - "st.dl.pinyuncloud.com" 561 | - "steampipe.steamcontent.tnkjmec.com" 562 | - "steampowered.com.8686c.com" 563 | - "steamstatic.com.8686c.com" 564 | # Tencent 565 | - "*.foxmail.com" 566 | - "*.gtimg.com" 567 | - "*.idqqimg.com" 568 | - "*.igamecj.com" 569 | - "*.myapp.com" 570 | - "*.myqcloud.com" 571 | - "*.qq.com" 572 | - "*.qqmail.com" 573 | - "*.qqurl.com" 574 | - "*.smtcdns.com" 575 | - "*.smtcdns.net" 576 | - "*.soso.com" 577 | - "*.tencent-cloud.net" 578 | - "*.tencent.com" 579 | - "*.tencentmind.com" 580 | - "*.tenpay.com" 581 | - "*.wechat.com" 582 | - "*.weixin.com" 583 | - "*.weiyun.com" 584 | # Vip 唯品会 585 | - "*.appsimg.com" 586 | - "*.appvipshop.com" 587 | - "*.vip.com" 588 | - "*.vipstatic.com" 589 | # Ximalaya 喜马拉雅 590 | - "*.ximalaya.com" 591 | - "*.xmcdn.com" 592 | # Xunlei 迅雷 593 | - "*.00cdn.com" 594 | - "*.88cdn.com" 595 | - "*.kanimg.com" 596 | - "*.kankan.com" 597 | - "*.p2cdn.com" 598 | - "*.sandai.net" 599 | - "*.thundercdn.com" 600 | - "*.xunlei.com" 601 | # YYeTs 人人影视 602 | - "*.got001.com" 603 | - "*.p4pfile.com" 604 | - "*.rrys.tv" 605 | - "*.rrys2020.com" 606 | - "*.yyets.com" 607 | - "*.zimuzu.io" 608 | - "*.zimuzu.tv" 609 | - "*.zmz001.com" 610 | - "*.zmz002.com" 611 | - "*.zmz003.com" 612 | - "*.zmz004.com" 613 | - "*.zmz2019.com" 614 | - "*.zmzapi.com" 615 | - "*.zmzapi.net" 616 | - "*.zmzfile.com" 617 | # Private Tracker 618 | - "*announce*" 619 | - "*torrent*" 620 | - "*tracker*" 621 | - "*.animebytes.tv" 622 | - "*.animetorrents.me" 623 | - "*.awesome-hd.me" 624 | - "*.beitai.pt" 625 | - "*.bittorrent.com" 626 | - "*.broadcasthe.net" 627 | - "*.chdbits.co" 628 | - "*.classix-unlimited.co.uk" 629 | - "*.empornium.me" 630 | - "*.gazellegames.net" 631 | - "*.hd4fans.org" 632 | - "*.hdchina.org" 633 | - "*.hdhome.org" 634 | - "*.hdsky.me" 635 | - "*.hdtime.org" 636 | - "*.hdzone.me" 637 | - "*.icetorrent.org" 638 | - "*.jpopsuki.eu" 639 | - "*.keepfrds.com" 640 | - "*.leaguehd.com" 641 | - "*.m-team.cc" 642 | - "*.madsrevolution.net" 643 | - "*.msg.vg" 644 | - "*.nanyangpt.com" 645 | - "*.ncore.cc" 646 | - "*.open.cd" 647 | - "*.ourbits.club" 648 | - "*.passthepopcorn.me" 649 | - "*.privatehd.to" 650 | - "*.pthome.net" 651 | - "*.redacted.ch" 652 | - "*.springsunday.net" 653 | - "*.tjupt.org" 654 | - "*.tju.pt" 655 | - "*.totheglory.im" 656 | - "*.trontv.com" 657 | # TeamViewer 658 | - "*.teamviewer.com" 659 | # Public Direct CDN 公共直连 660 | - "*.baomitu.com" 661 | - "*.bootcss.com" 662 | - "*.jiasule.com" 663 | - "*.staticfile.org" 664 | - "*.upaiyun.com" 665 | # AccelerateDirectSites 666 | - "*.10010.com" 667 | - "*.115.com" 668 | - "*.12306.com" 669 | - "*.17173.com" 670 | - "*.178.com" 671 | - "*.17k.com" 672 | - "*.360doc.com" 673 | - "*.36kr.com" 674 | - "*.3dmgame.com" 675 | - "*.51cto.com" 676 | - "*.51job.com" 677 | - "*.51jobcdn.com" 678 | - "*.56.com" 679 | - "*.8686c.com" 680 | - "*.abchina.com" 681 | - "*.abercrombie.com" 682 | - "*.acfun.tv" 683 | - "*.air-matters.com" 684 | - "*.air-matters.io" 685 | - "*.aixifan.com" 686 | - "*.algocasts.io" 687 | - "*.babytree.com" 688 | - "*.babytreeimg.com" 689 | - "*.baicizhan.com" 690 | - "*.baidupan.com" 691 | - "*.baike.com" 692 | - "*.biqudu.com" 693 | - "*.biquge.com" 694 | - "*.bitauto.com" 695 | - "*.c-ctrip.com" 696 | - "*.camera360.com" 697 | - "*.cdnmama.com" 698 | - "*.chaoxing.com" 699 | - "*.che168.com" 700 | - "*.chinacache.net" 701 | - "*.chinaso.com" 702 | - "*.chinaz.com" 703 | - "*.chinaz.net" 704 | - "*.chuimg.com" 705 | - "*.cibntv.net" 706 | - "*.clouddn.com" 707 | - "*.cloudxns.net" 708 | - "*.cn163.net" 709 | - "*.cnblogs.com" 710 | - "*.cnki.net" 711 | - "*.cnmstl.net" 712 | - "*.coolapk.com" 713 | - "*.coolapkmarket.com" 714 | - "*.csdn.net" 715 | - "*.ctrip.com" 716 | - "*.dangdang.com" 717 | - "*.dfcfw.com" 718 | - "*.dianping.com" 719 | - "*.dilidili.wang" 720 | - "*.douban.com" 721 | - "*.doubanio.com" 722 | - "*.dpfile.com" 723 | - "*.duowan.com" 724 | - "*.dxycdn.com" 725 | - "*.dytt8.net" 726 | - "*.easou.com" 727 | - "*.eastday.com" 728 | - "*.eastmoney.com" 729 | - "*.ecitic.com" 730 | - "*.ewqcxz.com" 731 | - "*.fang.com" 732 | - "*.fantasy.tv" 733 | - "*.feng.com" 734 | - "*.fengkongcloud.com" 735 | - "*.fir.im" 736 | - "*.frdic.com" 737 | - "*.fresh-ideas.cc" 738 | - "*.ganji.com" 739 | - "*.ganjistatic1.com" 740 | - "*.geetest.com" 741 | - "*.geilicdn.com" 742 | - "*.ghpym.com" 743 | - "*.godic.net" 744 | - "*.guazi.com" 745 | - "*.gwdang.com" 746 | - "*.gzlzfm.com" 747 | - "*.haibian.com" 748 | - "*.haosou.com" 749 | - "*.hollisterco.com" 750 | - "*.hongxiu.com" 751 | - "*.huajiao.com" 752 | - "*.hupu.com" 753 | - "*.huxiucdn.com" 754 | - "*.huya.com" 755 | - "*.ifeng.com" 756 | - "*.ifengimg.com" 757 | - "*.images-amazon.com" 758 | - "*.infzm.com" 759 | - "*.ipip.net" 760 | - "*.it168.com" 761 | - "*.ithome.com" 762 | - "*.ixdzs.com" 763 | - "*.jianguoyun.com" 764 | - "*.jianshu.com" 765 | - "*.jianshu.io" 766 | - "*.jianshuapi.com" 767 | - "*.jiathis.com" 768 | - "*.jmstatic.com" 769 | - "*.jumei.com" 770 | - "*.kaola.com" 771 | - "*.knewone.com" 772 | - "*.koowo.com" 773 | - "*.ksyungslb.com" 774 | - "*.kuaidi100.com" 775 | - "*.kugou.com" 776 | - "*.lancdns.com" 777 | - "*.landiannews.com" 778 | - "*.lanzou.com" 779 | - "*.lanzoui.com" 780 | - "*.lanzoux.com" 781 | - "*.lemicp.com" 782 | - "*.letitfly.me" 783 | - "*.lizhi.fm" 784 | - "*.lizhi.io" 785 | - "*.lizhifm.com" 786 | - "*.luoo.net" 787 | - "*.lvmama.com" 788 | - "*.lxdns.com" 789 | - "*.maoyan.com" 790 | - "*.meilishuo.com" 791 | - "*.meituan.com" 792 | - "*.meituan.net" 793 | - "*.meizu.com" 794 | - "*.migucloud.com" 795 | - "*.miguvideo.com" 796 | - "*.mobike.com" 797 | - "*.mogu.com" 798 | - "*.mogucdn.com" 799 | - "*.mogujie.com" 800 | - "*.moji.com" 801 | - "*.moke.com" 802 | - "*.msstatic.com" 803 | - "*.mubu.com" 804 | - "*.myunlu.com" 805 | - "*.nruan.com" 806 | - "*.nuomi.com" 807 | - "*.onedns.net" 808 | - "*.oneplus.com" 809 | - "*.onlinedown.net" 810 | - "*.oppo.com" 811 | - "*.oracle.com" 812 | - "*.oschina.net" 813 | - "*.ourdvs.com" 814 | - "*.polyv.net" 815 | - "*.qbox.me" 816 | - "*.qcloud.com" 817 | - "*.qcloudcdn.com" 818 | - "*.qdaily.com" 819 | - "*.qdmm.com" 820 | - "*.qhimg.com" 821 | - "*.qianqian.com" 822 | - "*.qidian.com" 823 | - "*.qihucdn.com" 824 | - "*.qin.io" 825 | - "*.qiniu.com" 826 | - "*.qiniucdn.com" 827 | - "*.qiniudn.com" 828 | - "*.qiushibaike.com" 829 | - "*.quanmin.tv" 830 | - "*.qunar.com" 831 | - "*.qunarzz.com" 832 | - "*.realme.com" 833 | - "*.repaik.com" 834 | - "*.ruguoapp.com" 835 | - "*.runoob.com" 836 | - "*.sankuai.com" 837 | - "*.segmentfault.com" 838 | - "*.sf-express.com" 839 | - "*.shumilou.net" 840 | - "*.simplecd.me" 841 | - "*.smzdm.com" 842 | - "*.snwx.com" 843 | - "*.soufunimg.com" 844 | - "*.sspai.com" 845 | - "*.startssl.com" 846 | - "*.suning.com" 847 | - "*.synology.com" 848 | - "*.taihe.com" 849 | - "*.th-sjy.com" 850 | - "*.tianqi.com" 851 | - "*.tianqistatic.com" 852 | - "*.tianyancha.com" 853 | - "*.tianyaui.com" 854 | - "*.tietuku.com" 855 | - "*.tiexue.net" 856 | - "*.tmiaoo.com" 857 | - "*.trip.com" 858 | - "*.ttmeiju.com" 859 | - "*.tudou.com" 860 | - "*.tuniu.com" 861 | - "*.tuniucdn.com" 862 | - "*.umengcloud.com" 863 | - "*.upyun.com" 864 | - "*.uxengine.net" 865 | - "*.videocc.net" 866 | - "*.vivo.com" 867 | - "*.wandoujia.com" 868 | - "*.weather.com" 869 | - "*.weico.cc" 870 | - "*.weidian.com" 871 | - "*.weiphone.com" 872 | - "*.weiphone.net" 873 | - "*.womai.com" 874 | - "*.wscdns.com" 875 | - "*.xdrig.com" 876 | - "*.xhscdn.com" 877 | - "*.xiachufang.com" 878 | - "*.xiaohongshu.com" 879 | - "*.xiaojukeji.com" 880 | - "*.xinhuanet.com" 881 | - "*.xip.io" 882 | - "*.xitek.com" 883 | - "*.xiumi.us" 884 | - "*.xslb.net" 885 | - "*.xueqiu.com" 886 | - "*.yach.me" 887 | - "*.yeepay.com" 888 | - "*.yhd.com" 889 | - "*.yihaodianimg.com" 890 | - "*.yinxiang.com" 891 | - "*.yinyuetai.com" 892 | - "*.yixia.com" 893 | - "*.ys168.com" 894 | - "*.yuewen.com" 895 | - "*.yy.com" 896 | - "*.yystatic.com" 897 | - "*.zealer.com" 898 | - "*.zhangzishi.cc" 899 | - "*.zhanqi.tv" 900 | - "*.zhaopin.com" 901 | - "*.zhihu.com" 902 | - "*.zhimg.com" 903 | - "*.zhongsou.com" 904 | - "*.zhuihd.com" 905 | - "localhost" 906 | - 127.* 907 | - 10.* 908 | - 172.16.* 909 | - 172.17.* 910 | - 172.18.* 911 | - 172.19.* 912 | - 172.20.* 913 | - 172.21.* 914 | - 172.22.* 915 | - 172.23.* 916 | - 172.24.* 917 | - 172.25.* 918 | - 172.26.* 919 | - 172.27.* 920 | - 172.28.* 921 | - 172.29.* 922 | - 172.30.* 923 | - 172.31.* 924 | - 192.168.* 925 | - 926 | -------------------------------------------------------------------------------- /Clash_ACL4SSR.ini: -------------------------------------------------------------------------------- 1 | [custom] 2 | ;不要随意改变关键字,否则会导致出错 3 | ;acl4SSR规则 4 | 5 | ;去广告:支持 6 | ;自动测速:支持 7 | ;微软分流:支持 8 | ;苹果分流:支持 9 | ;增强中国IP段:支持 10 | ;增强国外GFW:支持 11 | 12 | ;设置规则标志位 13 | ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/LocalAreaNetwork.list 14 | ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/UnBan.list 15 | ruleset=🛑 广告拦截,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/BanAD.list 16 | ruleset=🍃 应用净化,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/BanProgramAD.list 17 | ruleset=📢 谷歌FCM,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/GoogleFCM.list 18 | ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/GoogleCN.list 19 | ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/SteamCN.list 20 | ruleset=Ⓜ️ 微软云盘,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/OneDrive.list 21 | ruleset=Ⓜ️ 微软服务,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Microsoft.list 22 | ruleset=🍎 苹果服务,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Apple.list 23 | ruleset=📲 电报TG,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Telegram.list 24 | ruleset=💬 OpenAi,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/OpenAi.list 25 | ruleset=🎶 网易音乐,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/NetEaseMusic.list 26 | ruleset=🎮 游戏平台,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/Epic.list 27 | ruleset=🎮 游戏平台,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/Sony.list 28 | ruleset=🎮 游戏平台,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/Steam.list 29 | ruleset=🎮 游戏平台,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/Origin.list 30 | ruleset=🎮 游戏平台,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/Nintendo.list 31 | ruleset=📹 油管视频,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/YouTube.list 32 | ruleset=🎥 奈飞视频,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/Netflix.list 33 | ruleset=🎥 奈飞视频,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/AmazonIp.list 34 | ruleset=📹 迪士尼,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/DisneyPlus.list 35 | ruleset=📺 巴哈姆特,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/Bahamut.list 36 | ruleset=📺 哔哩哔哩,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/BilibiliHMT.list 37 | ruleset=📺 哔哩哔哩,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Ruleset/Bilibili.list 38 | ruleset=🌏 国内媒体,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/ChinaMedia.list 39 | ruleset=🌏 emby视频,https://cdn.jsdelivr.net/gh/blackmatrix7/ios_rule_script@master/rule/Clash/Emby/Emby.list 40 | ruleset=🌍 国外媒体,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/ProxyMedia.list 41 | ruleset=🚀 节点选择,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/ProxyGFWlist.list 42 | ;ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/ChinaIp.list 43 | ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/ChinaDomain.list 44 | ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/ChinaCompanyIp.list 45 | ruleset=🎯 全球直连,https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/Download.list 46 | ;ruleset=🎯 全球直连,[]GEOIP,LAN 47 | ruleset=🎯 全球直连,[]GEOIP,CN 48 | ruleset=🐟 漏网之鱼,[]FINAL 49 | ;设置规则标志位 50 | 51 | ;设置分组标志位 52 | custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`[]🔯 故障转移`[]🔮 负载均衡`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇺🇲 美国节点`[]🚀 手动切换`[]DIRECT 53 | custom_proxy_group=🚀 手动切换`select`.* 54 | custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.google.com/generate_204`300,,50 55 | custom_proxy_group=🔯 故障转移`fallback`.*`http://www.google.com/generate_204`300,,50 56 | custom_proxy_group=🔮 负载均衡`load-balance`.*`http://www.google.com/generate_204`300,,50 57 | custom_proxy_group=📲 电报TG`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇺🇲 美国节点`[]🚀 手动切换`[]DIRECT 58 | custom_proxy_group=📹 油管视频`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇺🇲 美国节点`[]🚀 手动切换`[]DIRECT 59 | custom_proxy_group=🎥 奈飞视频`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇺🇲 美国节点`[]🚀 手动切换`[]DIRECT 60 | custom_proxy_group=📹 迪士尼`select`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🚀 节点选择`[]🚀 手动切换`[]DIRECT 61 | custom_proxy_group=💬 OpenAi`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇺🇲 美国节点`[]🚀 手动切换`[]DIRECT 62 | custom_proxy_group=📺 巴哈姆特`select`[]🇨🇳 台湾节点`[]🚀 节点选择`[]🚀 手动切换`[]DIRECT 63 | custom_proxy_group=📺 哔哩哔哩`select`[]🎯 全球直连`[]🇨🇳 台湾节点`[]🇭🇰 香港节点 64 | custom_proxy_group=🌍 国外媒体`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇺🇲 美国节点`[]🚀 手动切换`[]DIRECT 65 | custom_proxy_group=🌏 国内媒体`select`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 66 | custom_proxy_group=🌏 emby视频`select`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 67 | custom_proxy_group=📢 谷歌FCM`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 68 | custom_proxy_group=Ⓜ️ 微软云盘`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 69 | custom_proxy_group=Ⓜ️ 微软服务`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 70 | custom_proxy_group=🍎 苹果服务`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 71 | custom_proxy_group=🎮 游戏平台`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 72 | custom_proxy_group=🎶 网易音乐`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择`(网易|音乐|解锁|Music|NetEase) 73 | custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择 74 | custom_proxy_group=🛑 广告拦截`select`[]REJECT`[]DIRECT 75 | custom_proxy_group=🍃 应用净化`select`[]REJECT`[]DIRECT 76 | custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]♻️ 自动选择`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇺🇲 美国节点`[]🚀 手动切换 77 | custom_proxy_group=🇭🇰 香港节点`url-test`(港|HK|Hong Kong)`http://www.google.com/generate_204`300,,50 78 | custom_proxy_group=🇨🇳 台湾节点`url-test`(台|新北|彰化|TW|Taiwan)`http://www.google.com/generate_204`300,,50 79 | ;custom_proxy_group=📲 电报节点`url-test`(港|HK|Hong Kong|台|新北|彰化|TW|Taiwan)`http://www.google.com/generate_204`300,,50 80 | ;custom_proxy_group=🎥 奈飞节点`url-test`(NF|奈飞|解锁|Netflix|NETFLIX|Media)`http://www.google.com/generate_204`300,,50 81 | custom_proxy_group=🇸🇬 狮城节点`url-test`(新加坡|坡|狮城|獅城|SG|Singapore)`http://www.google.com/generate_204`300,,50 82 | custom_proxy_group=🇺🇲 美国节点`url-test`(美|波特兰|旧金山|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States)`http://www.google.com/generate_204`300,,150 83 | ;custom_proxy_group=🇯🇵 日本节点`url-test`(日本|川日|东京|大阪|泉日|埼玉|沪日|深日|[^-]日|JP|Japan)`http://www.google.com/generate_204`300,,50 84 | ;设置分组标志位 85 | 86 | enable_rule_generator=true 87 | overwrite_original_rules=true 88 | 89 | clash_rule_base=https://cdn.jsdelivr.net/gh/ACL4SSR/ACL4SSR@master/Clash/GeneralClashConfig.yml 90 | ;clash_rule_base=https://gh-proxy.com/https://raw.githubusercontent.com/Jone2008/QuantumultX/master/ClashConfig.yml 91 | ;引用 https://github.com/ACL4SSR/ACL4SSR/blob/master/Clash/config/ACL4SSR_Online_Full_Netflix.ini 92 | ;luck 93 | -------------------------------------------------------------------------------- /Clash_ACL4SSR_Mini.ini: -------------------------------------------------------------------------------- 1 | [custom] 2 | ;不要随意改变关键字,否则会导致出错 3 | ;acl4SSR规则 4 | 5 | ;去广告:支持 6 | ;自动测速:支持 7 | ;微软分流:支持 8 | ;苹果分流:支持 9 | ;增强中国IP段:支持 10 | ;增强国外GFW:支持 11 | 12 | ;设置规则标志位 13 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list 14 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list 15 | ruleset=🛑 广告拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list 16 | ruleset=🍃 应用净化,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list 17 | ruleset=📢 谷歌FCM,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleFCM.list 18 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GoogleCN.list 19 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/SteamCN.list 20 | ruleset=Ⓜ️ 微软云盘,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/OneDrive.list 21 | ruleset=Ⓜ️ 微软服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Microsoft.list 22 | ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Apple.list 23 | ruleset=📲 电报消息,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Telegram.list 24 | ruleset=🎶 网易音乐,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/NetEaseMusic.list 25 | ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Epic.list 26 | ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Sony.list 27 | ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Steam.list 28 | ruleset=📹 油管视频,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/YouTube.list 29 | ruleset=🎥 奈飞视频,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Netflix.list 30 | ruleset=🎥 奈飞视频,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/AmazonIp.list 31 | ruleset=📹 迪士尼,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/DisneyPlus.list 32 | ruleset=📺 巴哈姆特,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Bahamut.list 33 | ruleset=📺 哔哩哔哩,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/BilibiliHMT.list 34 | ruleset=📺 哔哩哔哩,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Bilibili.list 35 | ruleset=🌏 国内媒体,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaMedia.list 36 | ruleset=🌏 emby视频,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Emby/Emby.list 37 | ruleset=🌍 国外媒体,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyMedia.list 38 | ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyGFWlist.list 39 | ;ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaIp.list 40 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list 41 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list 42 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Download.list 43 | ;ruleset=🎯 全球直连,[]GEOIP,LAN 44 | ruleset=🎯 全球直连,[]GEOIP,CN 45 | ruleset=🐟 漏网之鱼,[]FINAL 46 | ;设置规则标志位 47 | 48 | ;设置分组标志位 49 | custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`[]🔯 故障转移`[]🔮 负载均衡`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🚀 手动切换`[]DIRECT 50 | custom_proxy_group=🚀 手动切换`select`.* 51 | custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50 52 | custom_proxy_group=🔯 故障转移`fallback`.*`http://www.gstatic.com/generate_204`300,,50 53 | custom_proxy_group=🔮 负载均衡`load-balance`.*`http://www.gstatic.com/generate_204`300,,50 54 | custom_proxy_group=📲 电报消息`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换`[]DIRECT 55 | custom_proxy_group=📹 油管视频`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换`[]DIRECT 56 | custom_proxy_group=🎥 奈飞视频`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换`[]DIRECT 57 | custom_proxy_group=📹 迪士尼`select`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 节点选择`[]🚀 手动切换`[]DIRECT 58 | custom_proxy_group=📺 巴哈姆特`select`[]🇨🇳 台湾节点`[]🚀 节点选择`[]🚀 手动切换`[]DIRECT 59 | custom_proxy_group=📺 哔哩哔哩`select`[]🎯 全球直连`[]🇨🇳 台湾节点`[]🇭🇰 香港节点 60 | custom_proxy_group=🌍 国外媒体`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🚀 手动切换`[]DIRECT 61 | custom_proxy_group=🌏 国内媒体`select`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🚀 手动切换 62 | custom_proxy_group=🌏 emby视频`select`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 63 | custom_proxy_group=📢 谷歌FCM`select`[]DIRECT`[]🚀 节点选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 64 | custom_proxy_group=Ⓜ️ 微软云盘`select`[]DIRECT`[]🚀 节点选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 65 | custom_proxy_group=Ⓜ️ 微软服务`select`[]DIRECT`[]🚀 节点选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 66 | custom_proxy_group=🍎 苹果服务`select`[]DIRECT`[]🚀 节点选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 67 | custom_proxy_group=🎮 游戏平台`select`[]DIRECT`[]🚀 节点选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 68 | custom_proxy_group=🎶 网易音乐`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择`(网易|音乐|解锁|Music|NetEase) 69 | custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择 70 | custom_proxy_group=🛑 广告拦截`select`[]REJECT`[]DIRECT 71 | custom_proxy_group=🍃 应用净化`select`[]REJECT`[]DIRECT 72 | custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]♻️ 自动选择`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 73 | custom_proxy_group=🇭🇰 香港节点`url-test`(港|HK|Hong Kong)`http://www.gstatic.com/generate_204`300,,50 74 | custom_proxy_group=🇨🇳 台湾节点`url-test`(台|新北|彰化|TW|Taiwan)`http://www.gstatic.com/generate_204`300,,50 75 | custom_proxy_group=🇸🇬 狮城节点`url-test`(新加坡|坡|狮城|SG|Singapore)`http://www.google.com/generate_204`300,,50 76 | ;custom_proxy_group=🎥 奈飞节点`url-test`(NF|奈飞|解锁|Netflix|NETFLIX|Media)`http://www.gstatic.com/generate_204`300,,50 77 | ;设置分组标志位 78 | 79 | enable_rule_generator=true 80 | overwrite_original_rules=true 81 | 82 | clash_rule_base=https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GeneralClashConfig.yml 83 | ;clash_rule_base=https://raw.githubusercontent.com/Jone2008/QuantumultX/master/ClashConfig.yml 84 | 85 | ;luck 86 | -------------------------------------------------------------------------------- /Clash_ACL4SSR_Netflix.ini: -------------------------------------------------------------------------------- 1 | [custom] 2 | ;不要随意改变关键字,否则会导致出错 3 | ;acl4SSR规则 4 | 5 | ;去广告:支持 6 | ;自动测速:支持 7 | ;微软分流:支持 8 | ;苹果分流:支持 9 | ;增强中国IP段:支持 10 | ;增强国外GFW:支持 11 | 12 | ;设置规则标志位 13 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/LocalAreaNetwork.list 14 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/UnBan.list 15 | ruleset=🛑 广告拦截,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanAD.list 16 | ruleset=🍃 应用净化,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/BanProgramAD.list 17 | ruleset=📢 谷歌FCM,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/GoogleFCM.list 18 | ruleset=📢 Google,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Clash/Google/Google.list 19 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GoogleCN.list 20 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/SteamCN.list 21 | ruleset=Ⓜ️ 微软Bing,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Bing.list 22 | ruleset=Ⓜ️ 微软云盘,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/OneDrive.list 23 | ruleset=Ⓜ️ 微软服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Microsoft.list 24 | ruleset=🍎 苹果服务,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Apple.list 25 | ruleset=📲 电报消息,https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/Surge/Telegram/Telegram.list 26 | ruleset=📲 电报消息,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Telegram.list 27 | ruleset=💬 Ai平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/AI.list 28 | ruleset=💬 Ai平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/OpenAi.list 29 | ruleset=🎶 网易音乐,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/NetEaseMusic.list 30 | ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Epic.list 31 | ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Sony.list 32 | ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Steam.list 33 | ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Origin.list 34 | ruleset=🎮 游戏平台,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Nintendo.list 35 | ruleset=📹 油管视频,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/YouTube.list 36 | ruleset=🎥 奈飞视频,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Netflix.list 37 | ruleset=🎥 奈飞视频,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/AmazonIp.list 38 | ruleset=📹 迪士尼,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/DisneyPlus.list 39 | ruleset=📺 巴哈姆特,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Bahamut.list 40 | ruleset=📺 哔哩哔哩,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/BilibiliHMT.list 41 | ruleset=📺 哔哩哔哩,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Ruleset/Bilibili.list 42 | ruleset=🌏 国内媒体,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaMedia.list 43 | ruleset=🌍 国外媒体,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyMedia.list 44 | ruleset=🚀 节点选择,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ProxyGFWlist.list 45 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaIp.list 46 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/refs/heads/master/Clash/ChinaIpV6.list 47 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaDomain.list 48 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/ChinaCompanyIp.list 49 | ruleset=🎯 全球直连,https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/Download.list 50 | ;ruleset=🎯 全球直连,[]GEOIP,LAN 51 | ruleset=🎯 全球直连,[]GEOIP,CN 52 | ruleset=🐟 漏网之鱼,[]FINAL 53 | ;设置规则标志位 54 | 55 | ;设置分组标志位 56 | custom_proxy_group=🚀 节点选择`select`[]♻️ 自动选择`[]🔯 故障转移`[]🔮 负载均衡`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇺🇲 美国节点`[]🇯🇵 日本节点`[]🚀 手动切换`[]DIRECT 57 | custom_proxy_group=🚀 手动切换`select`.* 58 | custom_proxy_group=♻️ 自动选择`url-test`.*`http://www.gstatic.com/generate_204`300,,50 59 | custom_proxy_group=🇭🇰 香港节点`url-test`(港|HK|Hong Kong)`http://www.gstatic.com/generate_204`300,,50 60 | custom_proxy_group=🔯 故障转移`fallback`.*`http://www.gstatic.com/generate_204`300,,50 61 | custom_proxy_group=🔮 负载均衡`load-balance`.*`http://www.gstatic.com/generate_204`300,,50 62 | custom_proxy_group=📲 电报消息`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇺🇲 美国节点`[]🇯🇵 日本节点`[]🚀 手动切换`[]DIRECT 63 | custom_proxy_group=📹 油管视频`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇺🇲 美国节点`[]🇯🇵 日本节点`[]🚀 手动切换`[]DIRECT 64 | custom_proxy_group=🎥 奈飞视频`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇯🇵 日本节点`[]🇺🇲 美国节点`[]🚀 手动切换`[]DIRECT 65 | custom_proxy_group=📹 迪士尼`select`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🚀 节点选择`[]🚀 手动切换`[]DIRECT 66 | custom_proxy_group=📢 Google`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🚀 手动切换 67 | custom_proxy_group=💬 Ai平台`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇺🇲 美国节点`[]🇯🇵 日本节点`[]🚀 手动切换`[]DIRECT 68 | custom_proxy_group=📺 巴哈姆特`select`[]🇨🇳 台湾节点`[]🚀 节点选择`[]🚀 手动切换`[]DIRECT 69 | custom_proxy_group=📺 哔哩哔哩`select`[]🎯 全球直连`[]🇨🇳 台湾节点`[]🇭🇰 香港节点 70 | custom_proxy_group=🌍 国外媒体`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇺🇲 美国节点`[]🇯🇵 日本节点`[]🚀 手动切换`[]DIRECT 71 | custom_proxy_group=🌏 国内媒体`select`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🚀 手动切换 72 | custom_proxy_group=📢 谷歌FCM`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🚀 手动切换 73 | custom_proxy_group=Ⓜ️ 微软Bing`select`[]🚀 节点选择`[]♻️ 自动选择`[]🇺🇲 美国节点`[]🇸🇬 狮城节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇯🇵 日本节点`[]🚀 手动切换`[]DIRECT 74 | custom_proxy_group=Ⓜ️ 微软云盘`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🚀 手动切换 75 | custom_proxy_group=Ⓜ️ 微软服务`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🚀 手动切换 76 | custom_proxy_group=🍎 苹果服务`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🚀 手动切换 77 | custom_proxy_group=🎮 游戏平台`select`[]DIRECT`[]🚀 节点选择`[]🇺🇲 美国节点`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇯🇵 日本节点`[]🚀 手动切换 78 | custom_proxy_group=🎶 网易音乐`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择`(网易|音乐|解锁|Music|NetEase) 79 | custom_proxy_group=🎯 全球直连`select`[]DIRECT`[]🚀 节点选择`[]♻️ 自动选择 80 | custom_proxy_group=🛑 广告拦截`select`[]REJECT`[]DIRECT 81 | custom_proxy_group=🍃 应用净化`select`[]REJECT`[]DIRECT 82 | custom_proxy_group=🐟 漏网之鱼`select`[]🚀 节点选择`[]♻️ 自动选择`[]DIRECT`[]🇭🇰 香港节点`[]🇨🇳 台湾节点`[]🇸🇬 狮城节点`[]🇺🇲 美国节点`[]🇯🇵 日本节点`[]🚀 手动切换 83 | custom_proxy_group=🇺🇲 美国节点`url-test`(美|波特兰|达拉斯|俄勒冈|凤凰城|费利蒙|硅谷|拉斯维加斯|洛杉矶|圣何塞|圣克拉拉|西雅图|芝加哥|US|United States)`http://www.gstatic.com/generate_204`300,,150 84 | custom_proxy_group=🇨🇳 台湾节点`url-test`(台|新北|彰化|TW|Taiwan)`http://www.gstatic.com/generate_204`300,,50 85 | custom_proxy_group=🇸🇬 狮城节点`url-test`(新加坡|坡|狮城|獅城|SG|Singapore)`http://www.gstatic.com/generate_204`300,,50 86 | custom_proxy_group=🇯🇵 日本节点`url-test`(日本|川日|东京|大阪|泉日|埼玉|沪日|深日|JP|Japan)`http://www.gstatic.com/generate_204`300,,50 87 | ;custom_proxy_group=🎥 奈飞节点`url-test`(NF|奈飞|解锁|Netflix|NETFLIX|Media)`http://www.gstatic.com/generate_204`300,,50 88 | ;设置分组标志位 89 | 90 | enable_rule_generator=true 91 | overwrite_original_rules=true 92 | 93 | clash_rule_base=https://raw.githubusercontent.com/ACL4SSR/ACL4SSR/master/Clash/GeneralClashConfig.yml 94 | 95 | ;luck 96 | -------------------------------------------------------------------------------- /DIY_shopsign.js: -------------------------------------------------------------------------------- 1 | /* 2 | 店铺签到,各类店铺签到,有新的店铺直接添加token即可 3 | ============Quantumultx=============== 4 | [task_local] 5 | #店铺签到 6 | 0 1 * * * https://raw.githubusercontent.com/Misaka09982/AutoSignMachine/master/DIY_shopsign.js, tag=店铺签到, enabled=true 7 | ===========Loon============ 8 | [Script] 9 | cron "0 1 * * *" script-path=https://raw.githubusercontent.com/Misaka09982/AutoSignMachine/master/DIY_shopsign.js,tag=店铺签到 10 | ============Surge============= 11 | 店铺签到 = type=cron,cronexp="0 1 * * *",wake-system=1,timeout=3600,script-path=https://raw.githubusercontent.com/Misaka09982/AutoSignMachine/master/DIY_shopsign.js 12 | ===========小火箭======== 13 | 店铺签到 = type=cron,script-path=https://raw.githubusercontent.com/Misaka09982/AutoSignMachine/master/DIY_shopsign.jss, cronexpr="0 1 * * *", timeout=3600, enable=true 14 | */ 15 | 16 | 17 | const $ = new Env('和尚大佬已重写 建议大家转用大佬的 '); 18 | 19 | const notify = $.isNode() ? require('./sendNotify') : ''; 20 | //Node.js用户请在jdCookie.js处填写京东ck; 21 | const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; 22 | //IOS等用户直接用NobyDa的jd cookie 23 | let cookiesArr = [], cookie = '', message; 24 | const JD_API_HOST = 'https://api.m.jd.com/api?appid=interCenter_shopSign'; 25 | 26 | let activityId='' 27 | let vender='' 28 | let num=0 29 | let shopname='' 30 | const token=[ 31 | '7C1820082C993AB3103EB02E1B5AEC39',//4.1日添加18天20 32 | '1D2F4BD7D6F73DD7473B2ADF1E154BC6',//4.1日添加10天20 33 | 'AB8B120EB16A090179AE4ED13C36B29D',//4.1日添加6天2 13天5 34 | '17AABB287E29B0CCE7AEDFD502463782',//4.2日添加3天3 5天5 10天10 35 | '4C676E07FEDABA47B86766F4C367C21F',//4.2日添加7天5 36 | 'A8E250725F8C34653D0D683F2FFC9C65',//4.2日添加7天50 15天100 37 | '978FCCE248F3E5EB1763F86057B55D68',//4.3日添加15天100 38 | '81A2FD6866BD26CB65101E930F1972C3',//4.3日添加3天10 7天100 39 | '7EDA3ADB3DC353CEFC2DE11160D4EA9A',//4.4日添加2天2 4天3 6天5 7天10 40 | '8E7FDDEF3EA142242274818D594D9888',//4.5日添加3天1 41 | 'E1670DC962BADB2C70D243946B2F56DB',//4.6日添加3天5 42 | ] 43 | //IOS等用户直接用NobyDa的jd cookie 44 | 45 | if ($.isNode()) { 46 | Object.keys(jdCookieNode).forEach((item) => { 47 | cookiesArr.push(jdCookieNode[item]) 48 | }) 49 | if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; 50 | } else { 51 | let cookiesData = $.getdata('CookiesJD') || "[]"; 52 | cookiesData = jsonParse(cookiesData); 53 | cookiesArr = cookiesData.map(item => item.cookie); 54 | cookiesArr.reverse(); 55 | cookiesArr.push(...[$.getdata('CookieJD2'), $.getdata('CookieJD')]); 56 | cookiesArr.reverse(); 57 | cookiesArr = cookiesArr.filter(item => item !== "" && item !== null && item !== undefined); 58 | } 59 | 60 | !(async () => { 61 | if (!cookiesArr[0]) { 62 | $.msg($.name, '【提示】请先获取京东账号一cookie\n直接使用NobyDa的京东签到获取', 'https://bean.m.jd.com/bean/signIndex.action', {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); 63 | return; 64 | } 65 | for (let i = 0; i < cookiesArr.length; i++) { 66 | if (cookiesArr[i]) { 67 | cookie = cookiesArr[i]; 68 | $.UserName = decodeURIComponent(cookie.match(/pt_pin=(.+?);/) && cookie.match(/pt_pin=(.+?);/)[1]) 69 | $.index = i + 1; 70 | $.isLogin = true; 71 | $.nickName = ''; 72 | message = ''; 73 | await TotalBean(); 74 | console.log(`\n******开始【京东账号${$.index}】${$.nickName || $.UserName}*********\n`); 75 | if (!$.isLogin) { 76 | $.msg($.name, `【提示】cookie已失效`, `京东账号${$.index} ${$.nickName || $.UserName}\n请重新登录获取\nhttps://bean.m.jd.com/bean/signIndex.action`, {"open-url": "https://bean.m.jd.com/bean/signIndex.action"}); 77 | 78 | if ($.isNode()) { 79 | await notify.sendNotify(`${$.name}cookie已失效 - ${$.UserName}`, `京东账号${$.index} ${$.UserName}\n请重新登录获取cookie`); 80 | } 81 | continue 82 | } 83 | await dpqd() 84 | await showMsg() 85 | } 86 | } 87 | })() 88 | .catch((e) => { 89 | $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') 90 | }) 91 | .finally(() => { 92 | $.done(); 93 | }) 94 | 95 | //开始店铺签到 96 | async function dpqd(){ 97 | for (var j = 0; j < token.length; j++) { 98 | num=j+1 99 | if (token[j]=='') {continue} 100 | await getvenderId(token[j]) 101 | if (vender=='') {continue} 102 | await getvenderName(vender) 103 | await getActivityInfo(token[j],vender) 104 | await signCollectGift(token[j],vender,activityId) 105 | await taskUrl(token[j],vender) 106 | } 107 | } 108 | 109 | //获取店铺ID 110 | function getvenderId(token) { 111 | return new Promise(resolve => { 112 | const options = { 113 | url: `https://api.m.jd.com/api?appid=interCenter_shopSign&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:%22%22}&jsonp=jsonp1000`, 114 | headers: { 115 | "accept": "*/*", 116 | "accept-encoding": "gzip, deflate, br", 117 | "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", 118 | "cookie": cookie, 119 | "referer": 'https://h5.m.jd.com/', 120 | "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` 121 | } 122 | } 123 | $.get(options, (err, resp, data) => { 124 | try { 125 | if (err) { 126 | console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) 127 | $.logErr(err); 128 | } else { 129 | //console.log(data) 130 | data = JSON.parse(/{(.*)}/g.exec(data)[0]) 131 | if (data.code==402) { 132 | vender='' 133 | console.log(`第`+num+`个店铺签到活动已失效`) 134 | message +=`第`+num+`个店铺签到活动已失效\n` 135 | }else{ 136 | vender=data.data.venderId 137 | } 138 | } 139 | } catch (e) { 140 | $.logErr(e, resp); 141 | } finally { 142 | resolve(data); 143 | } 144 | }) 145 | }) 146 | } 147 | 148 | //获取店铺名称 149 | function getvenderName(venderId) { 150 | return new Promise(resolve => { 151 | const options = { 152 | url: `https://wq.jd.com/mshop/QueryShopMemberInfoJson?venderId=${venderId}`, 153 | headers: { 154 | "accept": "*/*", 155 | "accept-encoding": "gzip, deflate, br", 156 | "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", 157 | "cookie": cookie, 158 | "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` 159 | } 160 | } 161 | $.get(options, (err, resp, data) => { 162 | try { 163 | if (err) { 164 | console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) 165 | $.logErr(err); 166 | } else { 167 | //console.log(data) 168 | data = JSON.parse(data) 169 | shopName = data.shopName 170 | console.log(`【`+shopName+`】`) 171 | message +=`【`+shopName+`】` 172 | } 173 | } catch (e) { 174 | $.logErr(e, resp); 175 | } finally { 176 | resolve(data); 177 | } 178 | }) 179 | }) 180 | } 181 | 182 | 183 | //获取店铺活动信息 184 | function getActivityInfo(token,venderId) { 185 | return new Promise(resolve => { 186 | const options = { 187 | url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getActivityInfo&body={%22token%22:%22${token}%22,%22venderId%22:${venderId}}&jsonp=jsonp1005`, 188 | headers: { 189 | "accept": "accept", 190 | "accept-encoding": "gzip, deflate", 191 | "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", 192 | "cookie": cookie, 193 | "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, 194 | "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` 195 | } 196 | } 197 | $.get(options, (err, resp, data) => { 198 | try { 199 | if (err) { 200 | // console.log(data) 201 | console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) 202 | $.logErr(err); 203 | } else { 204 | //console.log(data) 205 | data = JSON.parse(/{(.*)}/g.exec(data)[0]) 206 | activityId=data.data.id 207 | //console.log(data) 208 | let mes=''; 209 | for (let i = 0; i < data.data.continuePrizeRuleList.length; i++) { 210 | const level=data.data.continuePrizeRuleList[i].level 211 | const discount=data.data.continuePrizeRuleList[i].prizeList[0].discount 212 | mes += "签到"+level+"天,获得"+discount+'豆' 213 | } 214 | //console.log(message+mes+'\n') 215 | //message += mes+'\n' 216 | } 217 | } catch (e) { 218 | $.logErr(e, resp); 219 | } finally { 220 | resolve(data); 221 | } 222 | }) 223 | }) 224 | } 225 | 226 | //店铺签到 227 | function signCollectGift(token,venderId,activitytemp) { 228 | return new Promise(resolve => { 229 | const options = { 230 | url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_signCollectGift&body={%22token%22:%22${token}%22,%22venderId%22:688200,%22activityId%22:${activitytemp},%22type%22:56,%22actionType%22:7}&jsonp=jsonp1004`, 231 | headers: { 232 | "accept": "accept", 233 | "accept-encoding": "gzip, deflate", 234 | "accept-language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7", 235 | "cookie": cookie, 236 | "referer": `https://h5.m.jd.com/babelDiy/Zeus/2PAAf74aG3D61qvfKUM5dxUssJQ9/index.html?token=${token}&sceneval=2&jxsid=16105853541009626903&cu=true&utm_source=kong&utm_medium=jingfen&utm_campaign=t_1001280291_&utm_term=fa3f8f38c56f44e2b4bfc2f37bce9713`, 237 | "User-Agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` 238 | } 239 | } 240 | $.get(options, (err, resp, data) => { 241 | try { 242 | if (err) { 243 | console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) 244 | $.logErr(err); 245 | } else { 246 | //console.log(data) 247 | data = JSON.parse(/{(.*)}/g.exec(data)[0]) 248 | } 249 | } catch (e) { 250 | $.logErr(e, resp); 251 | } finally { 252 | resolve(data); 253 | } 254 | }) 255 | }) 256 | } 257 | 258 | //店铺获取签到信息 259 | function taskUrl(token,venderId) { 260 | return new Promise(resolve => { 261 | const options = { 262 | url: `${JD_API_HOST}&t=${Date.now()}&loginType=2&functionId=interact_center_shopSign_getSignRecord&body={%22token%22:%22${token}%22,%22venderId%22:${venderId},%22activityId%22:${activityId},%22type%22:56}&jsonp=jsonp1006`, 263 | headers: { 264 | "accept": "application/json", 265 | "accept-encoding": "gzip, deflate, br", 266 | "accept-language": "zh-CN,zh;q=0.9", 267 | "cookie": cookie, 268 | "referer": `https://h5.m.jd.com/`, 269 | "user-agent": `Mozilla/5.0 (Linux; U; Android 10; zh-cn; MI 8 Build/QKQ1.190828.002) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.147 Mobile Safari/537.36 XiaoMi/MiuiBrowser/13.5.40` 270 | } 271 | } 272 | $.get(options, (err, resp, data) => { 273 | try { 274 | if (err) { 275 | console.log(`\n${$.name}: API查询请求失败 ‼️‼️`) 276 | $.logErr(err); 277 | } else { 278 | //console.log(data) 279 | data = JSON.parse(/{(.*)}/g.exec(data)[0]) 280 | console.log(`已签到:`+data.data.days+`天`) 281 | message +=`已签到:`+data.data.days+`天\n` 282 | } 283 | } catch (e) { 284 | $.logErr(e, resp); 285 | } finally { 286 | resolve(data); 287 | } 288 | }) 289 | }) 290 | } 291 | 292 | async function showMsg() { 293 | if ($.isNode()) { 294 | $.msg($.name, '', `【京东账号${$.index}】${$.nickName}\n${message}`); 295 | await notify.sendNotify(`${$.name} - 账号${$.index} - ${$.nickName}`, `【京东账号${$.index}】${$.nickName}\n${message}`); 296 | } 297 | } 298 | 299 | function TotalBean() { 300 | return new Promise(async resolve => { 301 | const options = { 302 | "url": `https://wq.jd.com/user/info/QueryJDUserInfo?sceneval=2`, 303 | "headers": { 304 | "Accept": "application/json,text/plain, */*", 305 | "Content-Type": "application/x-www-form-urlencoded", 306 | "Accept-Encoding": "gzip, deflate, br", 307 | "Accept-Language": "zh-cn", 308 | "Connection": "keep-alive", 309 | "Cookie": cookie, 310 | "Referer": "https://wqs.jd.com/my/jingdou/my.shtml?sceneval=2", 311 | "User-Agent": `jdapp;android;9.3.5;10;3353234393134326-3673735303632613;network/wifi;model/MI 8;addressid/138719729;aid/3524914bc77506b1;oaid/274aeb3d01b03a22;osVer/29;appBuild/86390;psn/Mp0dlaZf4czQtfPNMEfpcYU9S/f2Vv4y|2255;psq/1;adk/;ads/;pap/JA2015_311210|9.3.5|ANDROID 10;osv/10;pv/2039.1;jdv/0|androidapp|t_335139774|appshare|QQfriends|1611211482018|1611211495;ref/com.jingdong.app.mall.home.JDHomeFragment;partner/jingdong;apprpd/Home_Main;eufv/1;jdSupportDarkMode/0;Mozilla/5.0 (Linux; Android 10; MI 8 Build/QKQ1.190828.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045230 Mobile Safari/537.36` 312 | } 313 | } 314 | $.post(options, (err, resp, data) => { 315 | try { 316 | if (err) { 317 | console.log(`${JSON.stringify(err)}`) 318 | console.log(`${$.name} API请求失败,请检查网路重试`) 319 | } else { 320 | if (data) { 321 | data = JSON.parse(data); 322 | if (data['retcode'] === 13) { 323 | $.isLogin = false; //cookie过期 324 | return 325 | } 326 | $.nickName = data['base'].nickname; 327 | } else { 328 | console.log(`京东服务器返回空数据`) 329 | } 330 | } 331 | } catch (e) { 332 | $.logErr(e, resp) 333 | } finally { 334 | resolve(); 335 | } 336 | }) 337 | }) 338 | } 339 | 340 | function jsonParse(str) { 341 | if (typeof str == "string") { 342 | try { 343 | return JSON.parse(str); 344 | } catch (e) { 345 | console.log(e); 346 | $.msg($.name, '', '请勿随意在BoxJs输入框修改内容\n建议通过脚本去获取cookie') 347 | return []; 348 | } 349 | } 350 | } 351 | 352 | // prettier-ignore 353 | 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();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}}}};this.isMute||(this.isSurge()||this.isLoon()?$notification.post(e,s,i,o(r)):this.isQuanX()&&$notify(e,s,i,o(r)));let h=["","==============\ud83d\udce3\u7cfb\u7edf\u901a\u77e5\ud83d\udce3=============="];h.push(e),s&&h.push(s),i&&h.push(i),console.log(h.join("\n")),this.logs=this.logs.concat(h)}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)} 354 | -------------------------------------------------------------------------------- /EmbyPremiere.conf: -------------------------------------------------------------------------------- 1 | hostname = mb3admin.com 2 | 3 | ^https:\/\/mb3admin\.com\/admin\/service(\/registration\/validateDevice|\/appstore\/register|\/registration\/validate|\/registration\/getStatus|\/supporter\/retrievekey) url script-echo-response https://subweb.oss-cn-hongkong.aliyuncs.com/Script/embycrack.js 4 | 5 | ^https:\/\/mb3admin\.com\/admin\/service(\/registration\/validateDevice|\/appstore\/register|\/registration\/validate|\/registration\/getStatus|\/supporter\/retrievekey) url script-echo-response https://raw.githubusercontent.com/rartv/SurgeScript/main/EmbyPremiere/EmbyPremiere.js 6 | 7 | # > embyUnlocked. (By KleinerSource) 8 | ^https:\/\/mb3admin\.com\/admin\/service(\/registration\/validateDevice|\/appstore\/register|\/registration\/validate|\/registration\/getStatus|\/supporter\/retrievekey) url script-echo-response https://raw.githubusercontent.com/echoops/cookies/main/Script/emby.js 9 | -------------------------------------------------------------------------------- /Get_Cookie.conf: -------------------------------------------------------------------------------- 1 | hostname = wapside.189.cn, wapside.189.cn:900, alipaymini.189.cn, alipaymini.189.cn:8043, *.snssdk.com, www.xiaodouzhuan.cn, commontgw6.reader.qq.com, eventv3.reader.qq.com,mqqapi.reader.qq.com,wapside.189.cn,account.huami.com,apph5.manmanbuy.com,h5.ele.me,api.didialift.com,bosp-api.xiaojukeji.com,as.xiaojukeji.com,manhattan.webapp.xiaojukeji.com,mobile01.91quzou.com, mk.immomo.com, huiyuan.163.com, geekhub.com, cxdng.cpic.com.cn, h5.youzan.com, api.infzm.com, api.xiaoheihe.cn, exp.angelalign.com, ngabbs.com, api.umer.com.cn, app*.jegotrip.com.cn, task.jegotrip.com.cn, my.ruanmei.com, www.mydigit.cn, wx-mini.pagoda.com.cn, m.weibo.cn, apapia-history.manmanbuy.com, weather-data.apple.com, mall.oclean.com, api.cashtoutiao.com, user-api-prd-mx.wandafilm.com, h5.bianlifeng.com, teacherapi.zmlearn.com, clientaccess.10086.cn, maicai.api.ddxq.mobi, vip.heytea.com, webapi.qmai.cn, proapi.115.com, proxy.vac.qq.com, *.xmcimg.com, as.xiaojukeji.com, note.youdao.com, api.m.jd.com, music.163.com, c.tieba.baidu.com, tiebac.baidu.com, weibo.com,ifac*.iqiyi.com, *.smzdm.com, *.v2ex.com, www.52pojie.cn, *.bilibili.com, *.feng.com, *.video.qq.com, *.acfun.cn, *.rrys2019.com, mobwsa.ximalaya.com, *.rr.tv, www.flyertea.com, wapside.189.cn, sf-integral-sign-in.weixinjia.net, h5.ele.me, *.you.163.com, apk.tw, api.dongqiudi.com, *.m.163.com, user.qunar.com, yuba.douyu.com, ios.zmzapi.com, *.y.qq.com, *.csdn.net, m.ctrip.com, m.gdoil.cn, credits.bz.mgtv.com, api-takumi.mihoyo.com, act.10010.com, e.189.cn, www.maomicd.com, wx.10086.cn, mtrace.qq.com, www.lltxt.com, weclub.ccc.cmbchina.com, promotion.waimai.meituan.com, i.meituan.com, daojia.jd.com, api-hdcj.9w9.com, api.everphoto.cn, group.baicizhan.com, maicai.api.ddxq.mobi, pm.m.fenqile.com, ms.jr.jd.com, api.dushu.io, node.kg.qq.com, app.nio.com, wxprdapplet.gac-nio.com, activity-1.m.duiba.com.cn, m.client.10010.com, m-bean.kaola.com, 110.43.90.61, zt.wps.cn, xiaoshuo.qm989.com, passport.suning.com, luckman.suning.com, sign.suning.com, gameapi.suning.com, m.ximalaya.com, iphone.myzaker.com, draw.jdfcloud.com, sapi.beingfine.cn, icbc1.wlphp.com, wx.17u.cn, frodo.douban.com, mcs-mimp-web.sf-express.com, gameapi.hellobike.com, mwegame.qq.com, api.1sapp.com, tieba.baidu.com, m.ximalaya.com, app.jf.360.cn, pay.sc.weibo.com, api.inews.qq.com, newsapi.sina.cn, *.youth.cn, apiwz.midukanshu.com, www.duokan.com, appv8.qukantianxia.com, appv7.qukantx.com, xwsh.javamall.cn,m.ximalaya.com,zhiyou.smzdm.com, passport.suning.com, luckman.suning.com, sign.suning.com, gameapi.suning.com, choujiang-server.deering.cn, www.52pojie.cn, lkyl.dianpusoft.cn, club.yili.com, wq.jd.com, m.jingxi.com,i.meituan.com, nebula.kuaishou.com, activity.m.kuaishou.com, kd.youth.cn, ios.baertt.com, *.amemv.com, api.weibo.cn, m.weibo.cn, me-api.jd.com, api.wfdata.club, %APPEND% auth.alipan.com, auth.aliyundrive.com, yunbusiness.ccb.com, hweb-personalcenter.huazhu.com, *.amap.com, api.tuhu.cn, sytgate.jslife.com.cn, weather-data.apple.com, api.weather.com, sweixin.hisense.com, apis.folidaymall.com, user-api.smzdm.com, miniapp.yaduo.com, *.xbiao.com, userapi.qiekj.com, api.660pp.com, tslmember-crm.tslj.com.cn, api.aeonbuy.com 2 | 3 | 4 | # 途虎app/小程序,签到得积分,购买商品积分可抵现。公众号搜索途虎小程序登录,或者app登陆(Crazy-Z7/Task) 5 | # https://api.tuhu.cn/User/GetInternalCenterInfo url script-request-header https://raw.githubusercontent.com/Crazy-Z7/Task/main/Tuhyche.js 6 | # 添加重写进入途虎养车小程序积分页面即可获取 Token,支持多账号,兼容 NE / Node.js 环境(FoKit/Scripts) 7 | # https:\/\/api\.tuhu\.cn\/User\/GetInternalCenterInfo url script-request-header https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/tuhu.js 8 | # 途虎养车(修复blackBox by @Sliverkiss) 9 | https:\/\/api\.tuhu\.cn\/User\/GetInternalCenterInfo url script-request-header https://raw.githubusercontent.com/Sliverkiss/GoodNight/master/Script/tuhu.js 10 | 11 | # 高德地图.打车.福利中心,手动签到一次获取(wf021325/qx) 12 | # 签到里程可兑换打车抵用券 13 | ^https?:\/\/(m5(|-zb)|dache)\.amap\.com\/(ws\/yuece\/(act|openapi\/activity\/current)\/query|common\/(alipaymini|wxmini)\?_ENCRYPT=) url script-response-body https://raw.githubusercontent.com/wf021325/qx/master/task/ampDache.js 14 | 15 | # 腕表之家签到(wf021325),进APP,切换到【我】,可获得cookie,可反复切换获取 16 | ^https:\/\/\w+\.xbiao\.com\/apps\/\w+/.+\/home\/center/$ url script-request-header https://raw.githubusercontent.com/wf021325/qx/master/task/wbzj.js 17 | 18 | # 华住会 APP获取Token&签到(wf021325/qx),已入住过的才能进行签到,需要使用脚本的自行取消备注即可 19 | #^https?:\/\/hweb-personalcenter\.huazhu\.com\/login\/autoLogin$ url script-request-header https://raw.githubusercontent.com/wf021325/qx/master/task/hzh.js 20 | 21 | # 亚朵酒店app 签到、抽奖 (Sliverkiss) 22 | ^https:\/\/miniapp\.yaduo\.com\/atourlife\/signIn\/signIn.+ url script-request-header https://gist.githubusercontent.com/Sliverkiss/2e2093bfd5f524d58c8e90fed9beacfd/raw/e399523e428f3c173ec4b95c892725006c3128ff/adjd.js 23 | # 8 8 * * * https://gist.githubusercontent.com/Sliverkiss/2e2093bfd5f524d58c8e90fed9beacfd/raw/e399523e428f3c173ec4b95c892725006c3128ff/adjd.js, tag=亚朵酒店签到, img-url=https://raw.githubusercontent.com/Sliverkiss/QuantumultX/main/icon/Adjd.png 24 | 25 | # 脚本名称:谢瑞麟 · TSL (FoKit/Scripts)小程序每日签到可获取5积分,会员感恩月期问每连续签到7天可额外获得100积分奖励,签到积分有效期2年。 26 | https:\/\/tslmember-crm\.tslj\.com\.cn\/api\/auth\/login url script-response-body https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/tsl_sign.js 27 | 28 | # 脚本名称:PP 停车 (FoKit/Scripts)每日签到可获取积分,积分有效期≤2年。 29 | ^https:\/\/api\.660pp\.com\/rest\/[\d\.]+?\/user\/token url script-request-header https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/pp_parking.js 30 | 31 | # 永旺 Aeon - 签到 (FoKit/Scripts)累计签到 x 天可获得奖励(优惠券)添加重写进入"永旺"小程序签到页面即可获取 Token(有效期28天,进入小程序失效)(签到活动已结束) 32 | # https:\/\/api\.aeonbuy\.com\/api\/access-auth-api\/auth\/third\/silentWechatMiniLogin url script-response-body https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/aeon_sign.js 33 | # 33 6 * * * https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/aeon_sign.js, tag=永旺Aeon签到, img-url=https://raw.githubusercontent.com/sliverkiss/QuantumultX/main/icon/aeon.png, enabled=true 34 | 35 | # 脚本名称:海信爱家(FoKit/Scripts) 36 | # 活动入口:海信爱家(公众号) -> 个人中心 -> 会员中心 -> 玩转积分 -> 签到;进入个人中心即可获取 Cookie。 37 | #^https:\/\/sweixin\.hisense\.com\/ecrp\/member\/initMember url script-response-body https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/Hisense.js 38 | 39 | # 建行生活(FoKit/Scripts) 40 | # 活动入口:建行生活APP -> 首页 -> 会员有礼 -> 签到 41 | # 脚本说明:连续签到领优惠券礼包(打车、外卖优惠券),配置重写手动签到一次即可获取签到数据。兼容 Node.js 环境,变量名称 JHSH_BODY,多账号分割符 "|"。 42 | # ^https:\/\/yunbusiness\.ccb\.com\/clp_coupon\/txCtrl\?txcode=A3341A038 url script-request-body https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/jhsh_checkIn.js 43 | #^https:\/\/yunbusiness\.ccb\.com\/(clp_coupon|clp_service)\/txCtrl\?txcode=(A3341A038|autoLogin) url script-request-body https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/jhsh_checkIn.js 44 | 45 | # 托迈酷客,进入“复游度假生活”小程序即可获取Cookie,每日签到可获得积分(FoKit/Scripts) 46 | ^https:\/\/apis\.folidaymall\.com\/online\/capi\/uc\/getCount url script-request-header https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/ThomasCook.js 47 | 48 | # 捷停车签到(FoKit/Scripts) 49 | # 使用说明:添加重写规则并打开捷停车APP即可获取userId 50 | ^https:\/\/sytgate\.jslife\.com\.cn\/core-gateway\/order\/carno\/pay\/info url script-request-body https://raw.githubusercontent.com/FoKit/Scripts/main/scripts/jparking_sign.js 51 | 52 | # jd_appopen 53 | # ^https:\/\/api\.m\.jd\.com\/openUpgrade url script-request-header https://raw.githubusercontent.com/JDHelloWorld/jd_scripts/main/utils/jd_appopen.js 54 | 55 | # Nobyda大佬更新2021.8.15 56 | # 开启抓包app后, Safari浏览器登录 https://home.m.jd.com/myJd/newhome.action 点击个人中心页面后, 返回抓包app搜索关键字 info/GetJDUserInfoUnion 复制请求头Cookie字段填入json串数据内即可如需获取京东金融签到Body, 可进入"京东金融"APP (iOS), 在"首页"点击"签到"并签到一次, 返回抓包app搜索关键字 h5/m/appSign 复制请求体填入json串数据内即可 57 | # BoxJs或QX Gallery订阅地址: https://raw.githubusercontent.com/NobyDa/Script/master/NobyDa_BoxJs.json 58 | # 获取京东Cookie. 59 | ^https:\/\/(api\.m|me-api)\.jd\.com\/(client\.action\?functionId=signBean|user_new\/info\/GetJDUserInfoUnion\?) url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js 60 | # 获取钢镚签到body. 61 | #^https:\/\/ms\.jr\.jd\.com\/gw\/generic\/hy\/h5\/m\/appSign\? url script-request-body https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js 62 | 63 | #阿里云盘签到cookie by lowking 64 | #^https:\/\/auth.aliyundrive.com\/v2\/account\/token url script-response-body https://raw.githubusercontent.com/lowking/Scripts/master/ali/aliYunPanCheckIn.js 65 | #^https:\/\/auth.(aliyundrive|alipan).com\/v2\/account\/token url script-response-body https://raw.githubusercontent.com/lowking/Scripts/master/ali/aliYunPanCheckIn.js 66 | # by zqess Sliverkiss 67 | #^https:\/\/(auth|aliyundrive)\.alipan\.com\/v2\/account\/token url script-request-body https://raw.githubusercontent.com/zqzess/rule_for_quantumultX/master/js/Mine/aDriveCheckIn/aDriveCheckIn.js 68 | ^https:\/\/(auth|aliyundrive)\.alipan\.com\/v2\/account\/token url script-request-body https://gist.githubusercontent.com/Sliverkiss/33800a98dcd029ba09f8b6fc6f0f5162/raw/aliyun.js 69 | 70 | #伊利乳品 - 小程序 71 | https:\/\/club\.yili\.com\/MALLIFChe\/MCSWSIAPI\.asmx\/Call url script-request-body https://raw.githubusercontent.com/id77/QuantumultX/master/task/yiLi.cookie.js 72 | 73 | ## 吾爱破解,获取Cookie(NobyDa) 74 | ## https:\/\/www\.52pojie\.cn\/home\.php\? url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/52pojie-DailyBonus/52pojie.js 75 | 76 | # 慢慢买 77 | https?:\/\/apph5\.manmanbuy\.com\/taolijin\/(login.aspx|logserver.aspx) url script-request-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/manmanbuy/manmanbuy_checkin.js 78 | 79 | # 什么值得买每日自动签到(By blackmatrix7) 80 | ^https?:\/\/user-api\.smzdm\.com\/checkin$ url script-request-header https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_daily.js 81 | 82 | 83 | # NobyDa(https://github.com/NobyDa/Script/tree/master/QuantumultX) 84 | 85 | # 爱奇艺 cookie 86 | #^https?:\/\/iface(\d)?\.iqiyi\.com\/ url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/iQIYI-DailyBonus/iQIYI.js 87 | 88 | # 百度贴吧 cookie(NobyDa) 89 | #https?:\/\/(c\.tieba\.baidu\.com|180\.97\.\d+\.\d+)\/c\/s\/login url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/BDTieBa-DailyBonus/TieBa.js 90 | # 百度贴吧签到(chavyleung) 91 | #^https?:\/\/tieba\.baidu\.com\/?.? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/tieba/tieba.cookie.js 92 | # 百度贴吧签到(blackmatrix7) 93 | ^https?:\/\/(c\.tieba\.baidu\.com|180\.97\.\d+\.\d+)\/c\/s\/login url script-request-header https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/tieba/tieba_signin.js 94 | ^https?:\/\/c\.tieba\.baidu\.com\/c\/s\/channelIconConfig url script-request-header https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/tieba/tieba_signin.js 95 | ^https?:\/\/tiebac\.baidu\.com\/c\/u\/follow\/getFoldedMessageUserInfo url script-request-header https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/tieba/tieba_signin.js 96 | 97 | # 京东 cookie (NobyDa)开启抓包app后, Safari浏览器登录 https://bean.m.jd.com/bean/signIndex.action 98 | #https:\/\/api\.m\.jd\.com\/client\.action.*functionId=signBean url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/JD-DailyBonus/JD_DailyBonus.js 99 | 100 | # 电信营业厅 101 | #^https:\/\/wapside.189.cn:9001\/api\/home\/homeInfo url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/10000/10000.cookie.js 102 | 103 | # bilibili 104 | #^https:\/\/(www|live)\.bilibili\.com\/?.? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/bilibili/bilibili.cookie.js 105 | 106 | # 威锋网 107 | # ^https:\/\/(www\.)?feng\.com\/?.? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/feng/feng.cookie.js 108 | #^https?:\/\/api.wfdata.club\/v1\/auth\/signin url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/feng/feng.cookie.js 109 | 110 | #美团 111 | #^https:\/\/i.meituan.com\/evolve\/signin\/signpost\/ url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/meituan/meituan.cookie.js 112 | 113 | # 网易云音乐 114 | #^https:\/\/music.163.com\/weapi\/user\/level url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/neteasemusic/quanx/neteasemusic.cookie.js 115 | 116 | # 网易新闻 117 | #^https:\/\/(.*?)c\.m\.163\.com\/uc\/api\/sign\/v3\/commit url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/neteasenews/neteasenews.cookie.js 118 | 119 | # 去哪儿 120 | #^https:\/\/user.qunar.com\/webapi\/member\/signIndexV2.htm url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/qunar/qunar.cookie.js 121 | 122 | # 顺丰速运 123 | #^https:\/\/sf-integral-sign-in.weixinjia.net\/app\/index url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/sfexpress/sfexpress.cookie.js 124 | #^https:\/\/mcs-mimp-web.sf-express.com\/mcs-mimp\/share\/(.*?)Redirect url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/sfexpress/sfexpress.cookie.js 125 | 126 | # 腾讯视频 127 | #^https:\/\/access.video.qq.com\/user\/auth_refresh url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/videoqq/videoqq.cookie.js 128 | 129 | # 喜马拉雅 130 | #^https?:\/\/.*\/mobile\-user\/homePage\/.* url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/ximalaya/ximalaya.cookie.js 131 | 132 | # 中国移动 133 | #^http:\/\/wx.10086.cn\/website\/taskCenter\/index\? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.cookie.js 134 | #^http:\/\/wx.10086.cn\/website\/taskCenter\/sign\? url script-request-header https://raw.githubusercontent.com/chavyleung/scripts/master/10086/10086.cookie.js 135 | 136 | #网易考拉 137 | #^https:\/\/m-bean\.kaola\.com/m/point/sign\.html url script-request-body https://raw.githubusercontent.com/chavyleung/scripts/master/wykl/wykl.cookie.js 138 | 139 | # 微博通知 (By @zZPiglet) 140 | #^https:\/\/m\.weibo\.cn\/feed\/ url script-request-header https://raw.githubusercontent.com/zZPiglet/Task/master/Weibo/Weibo.js 141 | 142 | # 彩云天气 (By Peng-YM) 143 | #https://weather-data.apple.com url script-request-header https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/caiyun.js 144 | #https:\/\/((weather-data\.apple)|(api.weather))\.com url script-request-header https://raw.githubusercontent.com/Peng-YM/QuanX/master/Tasks/caiyun.js 145 | -------------------------------------------------------------------------------- /Mtxx.js: -------------------------------------------------------------------------------- 1 | /* 2 | 拷贝自:https://github.com/githubdulong/Script/blob/master/Mtxx.js 3 | 自行修改了一下QX的mitm导入,直接引用重写即可 4 | 5 | 【Quantumult_X】 6 | 7 | [rewrite_local] 8 | ^https?://(api|h5).xiuxiu.meitu.com/(?!(v\d/feed/|v\d/search/|v\d/channel/)) url script-response-body https://raw.githubusercontent.com/githubdulong/Script/master/Mtxx.js 9 | 10 | [MITM] 11 | hostname = api.xiuxiu.meitu.com, h5.xiuxiu.meitu.com 12 | 13 | ************************************************ 14 | 15 | 【Surge】 16 | [Script] 17 | 美图秀秀 = type=http-response,requires-body=1,max-size=0,pattern=^https?://(api|h5).xiuxiu.meitu.com/(?!(v\d/feed/|v\d/search/|v\d/channel/)),script-path=https://raw.githubusercontent.com/githubdulong/Script/master/Mtxx.js 18 | 19 | [MITM] 20 | hostname: api.xiuxiu.meitu.com, h5.xiuxiu.meitu.com 21 | 22 | */ 23 | 24 | var obj = JSON.parse($response.body); 25 | 26 | if (obj && obj.data) { 27 | obj.data.vip_type = 1; 28 | obj.data.expire_days = -9999999999; 29 | obj.data.is_expire = 0; 30 | obj.data.in_valid_time = 5576488923; 31 | obj.data.is_valid_user = 1; 32 | obj.data.valid_time = 5576488923; 33 | obj.data.home_prompt = "粉钻会员 2100年1月1日到期"; 34 | obj.data.home_btn_prompt = "已解锁"; 35 | } else { 36 | console.log("obj or obj.data is undefined"); 37 | } 38 | 39 | $done({ body: JSON.stringify(obj) }); 40 | -------------------------------------------------------------------------------- /Profiles.conf: -------------------------------------------------------------------------------- 1 | [policy] 2 | url-latency-benchmark=香港节点, server-tag-regex=.*香港, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/HK.png 3 | url-latency-benchmark=台湾节点, server-tag-regex=(?=.*(台|TW|(?i)Taiwan))^((?!(港|日|韩|新|美)).)*$, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/TW.png 4 | url-latency-benchmark=日本节点, server-tag-regex=(?=.*(日|JP|(?i)Japan))^((?!(港|台|韩|新|美)).)*$, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/JP.png 5 | url-latency-benchmark=狮城节点, server-tag-regex=(?=.*(新|狮|獅|SG|(?i)Singapore))^((?!(港|台|日|韩|美)).)*$, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/SG.png 6 | url-latency-benchmark=美国节点, server-tag-regex=(?=.*(美|US|(?i)States|American))^((?!(港|台|日|韩|新)).)*$, check-interval=600, tolerance=0, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/US.png 7 | static=🍎 苹果服务, direct, proxy, img-url= https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Apple.png 8 | static=📽 国内视频, direct, proxy, img-url= https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/DomesticMedia.png 9 | static=💻 国外影视, 香港节点, 台湾节点, 狮城节点, proxy, direct, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/ForeignMedia.png 10 | static=📺 Netflix, 台湾节点, 狮城节点, proxy, direct, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/Netflix.png 11 | static=🎬 YouTube, 香港节点, 台湾节点, 狮城节点, proxy, direct, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/YouTube.png 12 | static=📹 Disney+, 台湾节点, 狮城节点, proxy, direct, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/DisneyPlus.png 13 | static=📱 Telegram, 香港节点, 台湾节点, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/Telegram.png 14 | static=🌏 国外网站, 香港节点, 台湾节点, proxy, direct, img-url=https://raw.githubusercontent.com/Orz-3/mini/master/Color/Global.png 15 | static=🕹 终极清单, direct, proxy, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Final.png 16 | #server-tag-regex 以及 resource-tag-regex 参数用于正则筛选来建立策略组 17 | #具体可参见教程部分: https://shrtm.nu/DAFP 18 | 19 | [filter_remote] 20 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Unbreak.list, tag=规则修正, force-policy=direct, update-interval=86400, opt-parser=true, enabled=true 21 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Advertising.list, tag=广告拦截, force-policy=reject, update-interval=86400, opt-parser=true, enabled=true 22 | https://raw.githubusercontent.com/NobyDa/Script/master/Surge/AdRule.list, tag=广告拦截, force-policy=reject, update-interval=86400, opt-parser=true, enabled=true 23 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Hijacking.list, tag=运营劫持, force-policy=reject, update-interval=86400, opt-parser=true, enabled=true 24 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Guard/Privacy.list, tag=隐私保护, force-policy=reject, update-interval=86400, opt-parser=true, enabled=true 25 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/StreamingCN.list, force-policy=📽 国内视频, tag=📽 国内视频, enabled=true 26 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Video/Netflix.list, tag=📺 Netflix, force-policy=📺 Netflix, enabled=true 27 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Video/YouTube.list, tag=🎬 YouTube, force-policy=🎬 YouTube, enabled=true 28 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/StreamingMedia/Video/DisneyPlus.list, tag=📹 Disney+, force-policy=📹 Disney+, update-interval=172800, opt-parser=true, enabled=true 29 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/StreamingMedia/Streaming.list, tag=💻 国外影视,force-policy= 💻 国外影视, enabled=true 30 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rule/QuantumultX/Telegram/Telegram.list, tag=📱 telegram, force-policy=📱 Telegram, update-interval=172800, opt-parser=true, enabled=true 31 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Global.list, tag=🌍 国外网站, force-policy= 🌏 国外网站, enabled=true 32 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Extra/Apple/Apple.list, tag= Apple服务, force-policy=🍎 苹果服务,enabled=true 33 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Surge/Ruleset/Extra/Apple/TestFlight.list, tag=Testflight, force-policy=direct, update-interval=86400, opt-parser=true, enabled=true 34 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/China.list, tag=🐼 国内网站, force-policy=direct, update-interval=172800, opt-parser=true, enabled=true 35 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Filter/Extra/ChinaIP.list, tag=🇨🇳️ 国内IP池, force-policy=direct, update-interval=172800, opt-parser=true, enabled=true 36 | #支持本地/iCloud规则文件,位于Quantumult X/Profiles路径下 37 | ;filter.txt, tag=本地分流, enabled=false 38 | 39 | [rewrite_remote] 40 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/10010/unicom_signin.qxrewrite, tag=联通_获取Cookie, update-interval=172800, opt-parser=false, enabled=false 41 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/tieba/tieba_checkin.qxrewrite, tag=贴吧_获取Cookie, update-interval=172800, opt-parser=false, enabled=false 42 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/manmanbuy/manmanbuy_checkin.qxrewrite, tag=慢慢买_获取Cookie, update-interval=172800, opt-parser=false, enabled=false 43 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_signin.qxrewrite, tag=什么值得买_获取Cookie, update-interval=172800, opt-parser=false, enabled=false 44 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/didichuxing/didi_checkin.qxrewrite, tag=滴滴出行_获取Cookie, update-interval=172800, opt-parser=false, enabled=false 45 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/eleme/eleme_daily.qxrewrite, tag=饿了么_获取Cookie, update-interval=172800, opt-parser=false, enabled=false 46 | https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/rewrite/QuantumultX/Advertising/Advertising.conf, tag=去广告大集合, update-interval=86400, opt-parser=true, enabled=true 47 | https://raw.githubusercontent.com/Jone2008/QuantumultX/master/Get_Cookie.conf, tag=自用抓包集合, update-interval=86400, opt-parser=true, enabled=true 48 | https://raw.githubusercontent.com/chavyleung/scripts/master/QuantumultX_Local_Cookie.conf, tag=chavyleung抓包, update-interval=86400, opt-parser=true, enabled=false 49 | https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Js_Remote_Cookie.conf, tag=野比大佬抓包, update-interval=86400, opt-parser=false, enabled=false 50 | https://raw.githubusercontent.com/Jone2008/QuantumultX/master/rewrite.conf, tag=自用重写规则, update-interval=86400, opt-parser=true, enabled=false 51 | https://gitee.com/chavyleung/scripts/raw/master/box/rewrite/boxjs.rewrite.quanx.conf, tag=boxjs新, update-interval=86400, opt-parser=true, enabled=false 52 | https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/Rewrite_lhie1.conf, tag=野比大佬重写规则, update-interval=86400, opt-parser=true, enabled=false 53 | https://gitee.com/chavyleung/scripts/raw/master/box/rewrite/boxjs.rewrite.quanx.tf.conf, tag=boxjs_TF, update-interval=86400, opt-parser=true, enabled=false 54 | https://raw.githubusercontent.com/Orz-3/QuantumultX/master/Bili_Auto_Regions.conf, tag=哔哩哔哩自动换区, update-interval=86400, opt-parser=false, enabled=false 55 | # General 56 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/General.conf, tag=🔀General, update-interval=86400, opt-parser=false, enabled=true 57 | # Block Advertising 58 | #https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/Block/Advertising.conf, tag=🛡Block Advertising, update-interval=86400, enabled=true 59 | # Block Advertising+ 60 | https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/Block/AdvertisingPlus.conf, tag=🛡Block Advertising+, update-interval=86400, enabled=true 61 | # Block YouTube Ads 62 | #https://raw.githubusercontent.com/DivineEngine/Profiles/master/Quantumult/Rewrite/Block/YouTubeAds.conf, tag=🛡不适用允许 UDP 转发的节点及 Premium, update-interval=86400, enabled=false 63 | #远程复写模块,内包含主机名hostname以及复写rewrite规则 64 | # update-interval 为更新时间参数,单位 秒, 默认更新时间为 24*60*60=86400 秒,也就是24小时. 65 | # opt-parser=true/false 用于控制是否对本订阅 开启资源解析器,不写或者 false 表示不启用解析器; 66 | #支持本地/iCloud的复写规则文件,位于Quantumult X/Profiles路径下 67 | ;rewrite.txt, tag=本地复写, opt-parser=false, enabled=false 68 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 自用相关东东,仅供学习研究 2 | 仅限自用,摘录自并感谢Sunert、Nobyda、chavyleung、orz、zZPiglet、Peng-YM、lxk0301、nzw9314、 evilbutcher、blackmatrix7 3 | 希望能有更多大神提供更多更好的脚本或者重写规则,万分感激。 4 | -------------------------------------------------------------------------------- /bing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jone2008/QuantumultX/1b105629d3748860bd00010b8fa8e889fd16cc2f/bing.png -------------------------------------------------------------------------------- /caiyuntianqi.conf: -------------------------------------------------------------------------------- 1 | /************************************* 2 | 3 | 项目名称:彩云天气 4 | 下载地址:https://t.cn/A66d95hV 5 | 脚本作者:chxm1023,wf021325 整合 6 | 电报频道:https://t.me/chxm1023 7 | 使用声明:⚠️仅供参考,🈲转载与售卖! 8 | 9 | **************************************/ 10 | 11 | [rewrite_local] 12 | # VIP信息 13 | ^https?:\/\/(biz|wrapper|starplucker)\.(cyapi|caiyunapp)\.(cn|com)\/(.+\/(user\?app_name|activity\?app_name|visitors|operation\/banners|operation\/homefeatures|config)|p\/v\d\/(vip_info|user_info|entries|privileges|trial_card\/info)) url script-response-body https://raw.githubusercontent.com/chxm1023/Rewrite/main/caiyuntianqi.js 14 | 15 | # SVIP地图-48小时预报(方法来源:苍井灰灰) 16 | ^https?:\/\/(api|wrapper)\.(cyapi|caiyunapp)\.(cn|com)\/v\d\/(satellite|nafp\/origin_images) url script-request-header https://raw.githubusercontent.com/chxm1023/Rewrite/main/caiyuntianqi.js 17 | 18 | # 普通版广告 19 | ^https:\/\/ad\.cyapi\.cn\/v2\/req\?app_name=weather url reject-dict 20 | # 赏叶赏花 21 | ^https:\/\/wrapper\.cyapi\.cn\/v1\/activity\?app_name=weather url script-response-body https://raw.githubusercontent.com/wf021325/qx/master/js/caiyun.js 22 | # 解锁vip 23 | ^https:\/\/biz\.cyapi\.cn\/v2\/user url script-response-body https://raw.githubusercontent.com/wf021325/qx/master/js/caiyun.js 24 | # 卫星云图 48小时预报 25 | ^https:\/\/wrapper\.cyapi\.cn\/v1\/(satellite|nafp\/origin_images) url script-request-header https://raw.githubusercontent.com/wf021325/qx/master/js/caiyun.js 26 | 27 | 28 | [mitm] 29 | hostname = *.cyapi.cn, *.caiyunapp.com 30 | -------------------------------------------------------------------------------- /jd_cash_exchange.js: -------------------------------------------------------------------------------- 1 | /* 2 | 签到领现金兑换 3 | 需要填写exchangeAccounts参数,兑换多少取决于app内显示,默认为所有账号兑换10红包,部分账号会出现参数错误的提示。指定账号+金额应这样填写 export exchangeAccounts="pt_pin1@2&pt_pin2@10" 4 | 0 0 * * * jd_cash_exchange.js 5 | */ 6 | const $ = new Env("签到领现金兑换") 7 | const ua = `jdltapp;iPhone;3.1.0;${Math.ceil(Math.random()*4+10)}.${Math.ceil(Math.random()*4)};${randomString(40)}` 8 | let cookiesArr = [] 9 | var exchangeAccounts = process.env.exchangeAccounts ?? "" 10 | !(async () => { 11 | if(exchangeAccounts) { 12 | v = exchangeAccounts.split("&") 13 | exchangeAccounts = {} 14 | for(var i of v){ 15 | j = i.split("@") 16 | exchangeAccounts[j[0]]=j[1] ? +j[1] : 10 17 | } 18 | } 19 | await requireConfig() 20 | for (let i = 0; i < cookiesArr.length; i++) { 21 | if (cookiesArr[i]) { 22 | cookie = cookiesArr[i]; 23 | pt_pin = cookie.match(/pt_pin=([^; ]+)(?=;?)/) && cookie.match(/pt_pin=([^; ]+)(?=;?)/)[1] 24 | amount = 0 25 | if(exchangeAccounts){ 26 | amount = exchangeAccounts[pt_pin] 27 | if(!amount)continue 28 | } 29 | exchange(cookie,amount,pt_pin) 30 | } 31 | } 32 | await $.wait(3000) 33 | })() 34 | function exchange(cookie,amount,pt_pin) { 35 | body = "" 36 | if(amount == 2){ 37 | body = `adid=41CBA646-6EA3-4E79-8623-680F74A5FD7D&body={"type":"2","amount":"200"}&build=167724&client=apple&clientVersion=10.0.6&d_brand=apple&d_model=iPhone10,4&eid=eidI56d7812024s3J0UGWUp+RVK4+9/EY14sMidFB85YSXDSHPI9r07frvvGbXtVFQYuMENUoWFIARXaAYlZNGDyc8dfGQqd42Fer11K0PRjAQjbTBp5&isBackground=N&joycious=79&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=96ca9290eae9f41770e2c16fd4d07c67eb06b445&osVersion=14.4.2&partner=apple&rfs=0000&scope=10&screen=750*1334&sign=1be417384d1ffccde3dbf6a207277706&st=1625756188161&sv=111&uemps=0-0&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJCNy5Ou1kywjunNJYhK2mQzTDwvkNHz8d6J9JA+AN8f7dHT8E/pp+/K+s+/hw3ktfXf7rIWQ3qVqjrVZ8RJpuJJq5WCCsy0wGM2uum+4ppHaNVwnSBrL/ZniFeKJAAxcyCaBFHBfNkP1t3YA8CtB8pQTjm5pvQ/eWyy8qqiBgfB+iPthLx1deRA==&uuid=hjudwgohxzVu96krv/T6Hg==` 38 | }else{ 39 | amount = 10 40 | body = `adid=A23D8ECF-B992-477E-BA88-A5E7680DD8F6&body={"type":"2","amount":"1000"}&build=167638&client=apple&clientVersion=9.5.0&eid=eidI5E4E0119RTBCMkMxNEMtNjgxQi00NQ==20v8iy1ivQ9DClEjHXmgvcd5v2MhcsarbJkOkdI5EZKIlK2CiFmfRE6MG017DU87QAHcuwoYwkjGXGws&isBackground=N&joycious=61&lang=zh_CN&networkType=wifi&networklibtype=JDNetworkBaseAF&openudid=3245ad3d16ab2153c69f9ca91cd2e931b06a3bb8&osVersion=13.6.1&rfs=0000&scope=11&screen=1242*2208&sign=427a28328d1650d4c553c1cfdf25744c&st=1618885128891&sv=100&uemps=0-0&uts=0f31TVRjBSsqndu4/jgUPz6uymy50MQJ/+MrMjk4y13kWuMN4VaxQad1iD1QgEcDK/YYLWTuOPAd1akjd5yd8GStO+tvG+FdogNDbDiKjvQgXieBZsBtY63e8GaM2SFD74E/SCZQOKBCgUHo9/gWatL87O9NO0DFzwx44pkT4mA7/S1gDn01AyEbB70wvtsnPtixLxroKuYYDIBNepnJLQ==&uuid=hjudwgohxzVu96krv/T6Hg==` 41 | } 42 | $.post({ 43 | url: 'https://api.m.jd.com/client.action?functionId=cash_getRedPacket', 44 | headers: { 45 | 'Cookie': cookie, 46 | 'Accept': '*/*', 47 | 'Connection': 'keep-alive', 48 | 'Accept-Encoding': 'gzip, deflate, br', 49 | 'User-Agent': ua, 50 | 'Accept-Language': 'zh-Hans-CN;q=1', 51 | 'Host': 'api.m.jd.com', 52 | 'Content-Type': 'application/x-www-form-urlencoded', 53 | }, 54 | body: body, 55 | }, (err, resp, data) => { 56 | try { 57 | data = JSON.parse(data) 58 | if(data.data){ 59 | console.log(data.data.bizMsg) 60 | if(data.data.bizMsg.indexOf("success")!=-1){ 61 | data.data.bizMsg = `成功兑换${amount}元红包` 62 | } 63 | notify.sendNotify(`签到领现金账号 ${decodeURIComponent(pt_pin)}`, data.data.bizMsg); 64 | } 65 | if(data.errorMessage){ 66 | console.log(data.errorMessage) 67 | } 68 | } catch (e) { 69 | $.logErr('Error: ', e, resp) 70 | } 71 | }) 72 | } 73 | 74 | function requireConfig() { 75 | return new Promise(resolve => { 76 | notify = $.isNode() ? require('./sendNotify') : ''; 77 | const jdCookieNode = $.isNode() ? require('./jdCookie.js') : ''; 78 | if ($.isNode()) { 79 | Object.keys(jdCookieNode).forEach((item) => { 80 | if (jdCookieNode[item]) { 81 | cookiesArr.push(jdCookieNode[item]) 82 | } 83 | }) 84 | if (process.env.JD_DEBUG && process.env.JD_DEBUG === 'false') console.log = () => {}; 85 | } else { 86 | cookiesArr = [$.getdata('CookieJD'), $.getdata('CookieJD2'), ...jsonParse($.getdata('CookiesJD') || "[]").map(item => item.cookie)].filter(item => !!item); 87 | } 88 | console.log(`共${cookiesArr.length}个京东账号\n`) 89 | resolve() 90 | }) 91 | } 92 | 93 | function randomString(e) { 94 | e = e || 32; 95 | let t = "abcdefhijkmnprstwxyz2345678", 96 | a = t.length, 97 | n = ""; 98 | for (i = 0; i < e; i++) 99 | n += t.charAt(Math.floor(Math.random() * a)); 100 | return n 101 | } 102 | 103 | function Env(t, e) { 104 | "undefined" != typeof process && JSON.stringify(process.env).indexOf("GIT_HUB") > -1 && process.exit(0); 105 | class s { 106 | constructor(t) { 107 | this.env = t 108 | } 109 | send(t, e = "GET") { 110 | t = "string" == typeof t ? { 111 | url: t 112 | } : t; 113 | let s = this.get; 114 | return "POST" === e && (s = this.post), new Promise((e, i) => { 115 | s.call(this, t, (t, s, r) => { 116 | t ? i(t) : e(s) 117 | }) 118 | }) 119 | } 120 | get(t) { 121 | return this.send.call(this.env, t) 122 | } 123 | post(t) { 124 | return this.send.call(this.env, t, "POST") 125 | } 126 | } 127 | return new class { 128 | constructor(t, e) { 129 | 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("", `🔔${this.name}, 开始!`) 130 | } 131 | isNode() { 132 | return "undefined" != typeof module && !!module.exports 133 | } 134 | isQuanX() { 135 | return "undefined" != typeof $task 136 | } 137 | isSurge() { 138 | return "undefined" != typeof $httpClient && "undefined" == typeof $loon 139 | } 140 | isLoon() { 141 | return "undefined" != typeof $loon 142 | } 143 | toObj(t, e = null) { 144 | try { 145 | return JSON.parse(t) 146 | } catch (e) { 147 | return e 148 | } 149 | } 150 | toStr(t, e = null) { 151 | try { 152 | return JSON.stringify(t) 153 | } catch (e) { 154 | return e 155 | } 156 | } 157 | getjson(t, e) { 158 | let s = e; 159 | const i = this.getdata(t); 160 | if (i) try { 161 | s = JSON.parse(this.getdata(t)) 162 | } catch {} 163 | return s 164 | } 165 | setjson(t, e) { 166 | try { 167 | return this.setdata(JSON.stringify(t), e) 168 | } catch { 169 | return !1 170 | } 171 | } 172 | getScript(t) { 173 | return new Promise(e => { 174 | this.get({ 175 | url: t 176 | }, (t, s, i) => e(i)) 177 | }) 178 | } 179 | runScript(t, e) { 180 | return new Promise(s => { 181 | let i = this.getdata("@chavy_boxjs_userCfgs.httpapi"); 182 | i = i ? i.replace(/\n/g, "").trim() : i; 183 | let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); 184 | r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; 185 | const [o, h] = i.split("@"), n = { 186 | url: `http://${h}/v1/scripting/evaluate`, 187 | body: { 188 | script_text: t, 189 | mock_type: "cron", 190 | timeout: r 191 | }, 192 | headers: { 193 | "X-Key": o, 194 | Accept: "*/*" 195 | } 196 | }; 197 | this.post(n, (t, e, i) => s(i)) 198 | }).catch(t => this.logErr(t)) 199 | } 200 | loaddata() { 201 | if (!this.isNode()) return {}; { 202 | this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); 203 | const t = this.path.resolve(this.dataFile), 204 | e = this.path.resolve(process.cwd(), this.dataFile), 205 | s = this.fs.existsSync(t), 206 | i = !s && this.fs.existsSync(e); 207 | if (!s && !i) return {}; { 208 | const i = s ? t : e; 209 | try { 210 | return JSON.parse(this.fs.readFileSync(i)) 211 | } catch (t) { 212 | return {} 213 | } 214 | } 215 | } 216 | } 217 | writedata() { 218 | if (this.isNode()) { 219 | this.fs = this.fs ? this.fs : require("fs"), this.path = this.path ? this.path : require("path"); 220 | const t = this.path.resolve(this.dataFile), 221 | e = this.path.resolve(process.cwd(), this.dataFile), 222 | s = this.fs.existsSync(t), 223 | i = !s && this.fs.existsSync(e), 224 | r = JSON.stringify(this.data); 225 | s ? this.fs.writeFileSync(t, r) : i ? this.fs.writeFileSync(e, r) : this.fs.writeFileSync(t, r) 226 | } 227 | } 228 | lodash_get(t, e, s) { 229 | const i = e.replace(/\[(\d+)\]/g, ".$1").split("."); 230 | let r = t; 231 | for (const t of i) 232 | if (r = Object(r)[t], void 0 === r) return s; 233 | return r 234 | } 235 | lodash_set(t, e, s) { 236 | 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) 237 | } 238 | getdata(t) { 239 | let e = this.getval(t); 240 | if (/^@/.test(t)) { 241 | const [, s, i] = /^@(.*?)\.(.*?)$/.exec(t), r = s ? this.getval(s) : ""; 242 | if (r) try { 243 | const t = JSON.parse(r); 244 | e = t ? this.lodash_get(t, i, "") : e 245 | } catch (t) { 246 | e = "" 247 | } 248 | } 249 | return e 250 | } 251 | setdata(t, e) { 252 | let s = !1; 253 | if (/^@/.test(e)) { 254 | const [, i, r] = /^@(.*?)\.(.*?)$/.exec(e), o = this.getval(i), h = i ? "null" === o ? null : o || "{}" : "{}"; 255 | try { 256 | const e = JSON.parse(h); 257 | this.lodash_set(e, r, t), s = this.setval(JSON.stringify(e), i) 258 | } catch (e) { 259 | const o = {}; 260 | this.lodash_set(o, r, t), s = this.setval(JSON.stringify(o), i) 261 | } 262 | } else s = this.setval(t, e); 263 | return s 264 | } 265 | getval(t) { 266 | 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 267 | } 268 | setval(t, e) { 269 | 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 270 | } 271 | initGotEnv(t) { 272 | 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)) 273 | } 274 | get(t, e = (() => {})) { 275 | 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, { 276 | "X-Surge-Skip-Scripting": !1 277 | })), $httpClient.get(t, (t, s, i) => { 278 | !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) 279 | })) : this.isQuanX() ? (this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { 280 | hints: !1 281 | })), $task.fetch(t).then(t => { 282 | const { 283 | statusCode: s, 284 | statusCode: i, 285 | headers: r, 286 | body: o 287 | } = t; 288 | e(null, { 289 | status: s, 290 | statusCode: i, 291 | headers: r, 292 | body: o 293 | }, o) 294 | }, t => e(t))) : this.isNode() && (this.initGotEnv(t), this.got(t).on("redirect", (t, e) => { 295 | try { 296 | if (t.headers["set-cookie"]) { 297 | const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); 298 | s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar 299 | } 300 | } catch (t) { 301 | this.logErr(t) 302 | } 303 | }).then(t => { 304 | const { 305 | statusCode: s, 306 | statusCode: i, 307 | headers: r, 308 | body: o 309 | } = t; 310 | e(null, { 311 | status: s, 312 | statusCode: i, 313 | headers: r, 314 | body: o 315 | }, o) 316 | }, t => { 317 | const { 318 | message: s, 319 | response: i 320 | } = t; 321 | e(s, i, i && i.body) 322 | })) 323 | } 324 | post(t, e = (() => {})) { 325 | 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, { 326 | "X-Surge-Skip-Scripting": !1 327 | })), $httpClient.post(t, (t, s, i) => { 328 | !t && s && (s.body = i, s.statusCode = s.status), e(t, s, i) 329 | }); 330 | else if (this.isQuanX()) t.method = "POST", this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { 331 | hints: !1 332 | })), $task.fetch(t).then(t => { 333 | const { 334 | statusCode: s, 335 | statusCode: i, 336 | headers: r, 337 | body: o 338 | } = t; 339 | e(null, { 340 | status: s, 341 | statusCode: i, 342 | headers: r, 343 | body: o 344 | }, o) 345 | }, t => e(t)); 346 | else if (this.isNode()) { 347 | this.initGotEnv(t); 348 | const { 349 | url: s, 350 | ...i 351 | } = t; 352 | this.got.post(s, i).then(t => { 353 | const { 354 | statusCode: s, 355 | statusCode: i, 356 | headers: r, 357 | body: o 358 | } = t; 359 | e(null, { 360 | status: s, 361 | statusCode: i, 362 | headers: r, 363 | body: o 364 | }, o) 365 | }, t => { 366 | const { 367 | message: s, 368 | response: i 369 | } = t; 370 | e(s, i, i && i.body) 371 | }) 372 | } 373 | } 374 | time(t, e = null) { 375 | const s = e ? new Date(e) : new Date; 376 | let i = { 377 | "M+": s.getMonth() + 1, 378 | "d+": s.getDate(), 379 | "H+": s.getHours(), 380 | "m+": s.getMinutes(), 381 | "s+": s.getSeconds(), 382 | "q+": Math.floor((s.getMonth() + 3) / 3), 383 | S: s.getMilliseconds() 384 | }; 385 | /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); 386 | for (let e in i) new RegExp("(" + e + ")").test(t) && (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? i[e] : ("00" + i[e]).substr(("" + i[e]).length))); 387 | return t 388 | } 389 | msg(e = t, s = "", i = "", r) { 390 | const o = t => { 391 | if (!t) return t; 392 | if ("string" == typeof t) return this.isLoon() ? t : this.isQuanX() ? { 393 | "open-url": t 394 | } : this.isSurge() ? { 395 | url: t 396 | } : void 0; 397 | if ("object" == typeof t) { 398 | if (this.isLoon()) { 399 | let e = t.openUrl || t.url || t["open-url"], 400 | s = t.mediaUrl || t["media-url"]; 401 | return { 402 | openUrl: e, 403 | mediaUrl: s 404 | } 405 | } 406 | if (this.isQuanX()) { 407 | let e = t["open-url"] || t.url || t.openUrl, 408 | s = t["media-url"] || t.mediaUrl; 409 | return { 410 | "open-url": e, 411 | "media-url": s 412 | } 413 | } 414 | if (this.isSurge()) { 415 | let e = t.url || t.openUrl || t["open-url"]; 416 | return { 417 | url: e 418 | } 419 | } 420 | } 421 | }; 422 | if (this.isMute || (this.isSurge() || this.isLoon() ? $notification.post(e, s, i, o(r)) : this.isQuanX() && $notify(e, s, i, o(r))), !this.isMuteLog) { 423 | let t = ["", "==============📣系统通知📣=============="]; 424 | t.push(e), s && t.push(s), i && t.push(i), console.log(t.join("\n")), this.logs = this.logs.concat(t) 425 | } 426 | } 427 | log(...t) { 428 | t.length > 0 && (this.logs = [...this.logs, ...t]), console.log(t.join(this.logSeparator)) 429 | } 430 | logErr(t, e) { 431 | const s = !this.isSurge() && !this.isQuanX() && !this.isLoon(); 432 | s ? this.log("", `❗️${this.name}, 错误!`, t.stack) : this.log("", `❗️${this.name}, 错误!`, t) 433 | } 434 | wait(t) { 435 | return new Promise(e => setTimeout(e, t)) 436 | } 437 | done(t = {}) { 438 | const e = (new Date).getTime(), 439 | s = (e - this.startTime) / 1e3; 440 | this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), (this.isSurge() || this.isQuanX() || this.isLoon()) && $done(t) 441 | } 442 | }(t, e) 443 | } 444 | -------------------------------------------------------------------------------- /jddb.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 京东京豆夺宝。地址:我的 - 右上角信息 - 账户通知 - 京豆账户变动通知 - 京豆夺宝 3 | * 需自行抓包获取header和body,开着抓包打开'京豆夺宝'。抓包地址为 https://pf.moxigame.cn/jddb/duobao/login 4 | * 有效期未知。 5 | * 能不能多账号未知,所以没写。 6 | */ 7 | 8 | const $ = new Env('京东京豆夺宝'); 9 | 10 | let jddb_name = $.getdata('jddb_name') || ``; //默认不参与需要京豆大于10的活动 11 | 12 | const headers = { 13 | //header填到这里 14 | }; 15 | const body = ``; //body填进``里面 16 | 17 | !(async () => { 18 | await do_login(); 19 | })() 20 | .catch((e) => { 21 | $.log('', `❌ ${$.name}, 失败! 原因: ${e}!`, '') 22 | }) 23 | .finally(() => { 24 | $.done(); 25 | }) 26 | 27 | if ($.isNode()) { 28 | if (process.env.JDDB_NAME) { 29 | jddb_name = process.env.JDDB_NAME; 30 | } 31 | } 32 | 33 | //时间格式化 34 | Date.prototype.format = function(fmt) { 35 | var o = { 36 | "M+" : this.getMonth()+1, //月份 37 | "d+" : this.getDate(), //日 38 | "h+" : this.getHours(), //小时 39 | "m+" : this.getMinutes(), //分 40 | "s+" : this.getSeconds(), //秒 41 | "q+" : Math.floor((this.getMonth()+3)/3), //季度 42 | "S" : this.getMilliseconds() //毫秒 43 | }; 44 | if(/(y+)/.test(fmt)) { 45 | fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 46 | } 47 | for(var k in o) { 48 | if(new RegExp("("+ k +")").test(fmt)){ 49 | fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length))); 50 | } 51 | } 52 | return fmt; 53 | } 54 | 55 | 56 | //do_login 57 | function do_login() { 58 | return new Promise(resolve => { 59 | $.post(login(), async(err, resp, data) => { 60 | try { 61 | if (err) { 62 | console.log(`${JSON.stringify(err)}`) 63 | console.log(resp) 64 | console.log(`${$.name} API请求失败,请检查网路重试`) 65 | } else { 66 | if (safeGet(data)) { 67 | const result = JSON.parse(data); 68 | //console.log(`结果:${JSON.stringify(result)}\n`) 69 | $.token = result.token 70 | $.nickname = result.userInfo.nickname 71 | $.id = result.id 72 | if (result.code == 0){ 73 | console.log(`账号 ${$.nickname} 登入成功,开始检测京豆夺宝活动 -----\n`) 74 | console.log(`默认做需要京豆少于10的活动!`) 75 | console.log(`如需参与其它,请自行填写活动全称到变量 JDDB_NAME !`) 76 | for (let p = 0; p < 2; p++) { 77 | page = p + 1 ; 78 | await do_check_list() 79 | } 80 | for (let o = 0; o < 2; o++) { 81 | page1 = o + 1; 82 | await do_joined_list() 83 | } 84 | await do_awardedList() 85 | } else { 86 | console.log(`登入失败:${JSON.stringify(result)}\n`) 87 | } 88 | } 89 | } 90 | } catch (e) { 91 | $.logErr(e, resp) 92 | } finally { 93 | resolve(); 94 | } 95 | }) 96 | }) 97 | } 98 | 99 | //do_check_list 100 | function do_check_list() { 101 | return new Promise(resolve => { 102 | $.post(check_list(), async(err, resp, data) => { 103 | try { 104 | if (err) { 105 | console.log(`${JSON.stringify(err)}`) 106 | console.log(resp) 107 | console.log(`${$.name} API请求失败,请检查网路重试`) 108 | } else { 109 | if (safeGet(data)) { 110 | const result = JSON.parse(data); 111 | //console.log(`结果:${JSON.stringify(result)}\n`) 112 | if (result.code == 0) { 113 | prizenums = result.result.totSize 114 | //pageSize = result.result.pageSize 115 | console.log(`\n检测活动成功,共有 ${prizenums} 个京豆夺宝活动。`) 116 | console.log(`显示第 ${page} 页的活动:`) 117 | let list = result.result.list 118 | for (let i = 0; i < list.length; i++) { 119 | console.log(`\n【活动${i+1}】:抽 ${list[i].actTitle} \n开始时间:${new Date(list[i].startTime).format("yyyy-MM-dd hh:mm:ss")} \n结束时间:${new Date(list[i].endTime).format("yyyy-MM-dd hh:mm:ss")} \n参与需要 ${list[i].duoBaoSetting.jdBeanNum} 京豆。`) 120 | if (list[i].status === `open` && list[i].duoBaoSetting.jdBeanNum <= 10){ 121 | actid = list[i]._id 122 | console.log(`开始参与活动 ${list[i].actTitle} -----`) 123 | await do_join() 124 | await $.wait(3000) 125 | } else if (list[i].status === `open` && `${jddb_name}` === `${list[i].actTitle}`) { 126 | actid = list[i]._id 127 | console.log(`你选择参与活动 ${jddb_name}`) 128 | console.log(`开始参与活动 ${list[i].actTitle} -----`) 129 | await do_join() 130 | } 131 | } 132 | } else { 133 | console.log(`检测任务失败:${JSON.stringify(result)}\n`) 134 | } 135 | } 136 | } 137 | } catch (e) { 138 | $.logErr(e, resp) 139 | } finally { 140 | resolve(); 141 | } 142 | }) 143 | }) 144 | } 145 | 146 | //do_join 147 | function do_join() { 148 | return new Promise(resolve => { 149 | $.post(join(), (err, resp, data) => { 150 | try { 151 | if (err) { 152 | console.log(`${JSON.stringify(err)}`) 153 | console.log(resp) 154 | console.log(`${$.name} API请求失败,请检查网路重试`) 155 | } else { 156 | if (safeGet(data)) { 157 | const result = JSON.parse(data); 158 | if (result.code == 0) { 159 | console.log(`参与成功!`) 160 | } else { 161 | console.log(`${JSON.stringify(result)}`) 162 | } 163 | } 164 | } 165 | } catch (e) { 166 | $.logErr(e, resp) 167 | } finally { 168 | resolve(); 169 | } 170 | }) 171 | }) 172 | } 173 | 174 | //显示已参与的活动 175 | function do_joined_list() { 176 | return new Promise(resolve => { 177 | $.post(joined_list(), async(err, resp, data) => { 178 | try { 179 | if (err) { 180 | console.log(`${JSON.stringify(err)}`) 181 | console.log(resp) 182 | console.log(`${$.name} API请求失败,请检查网路重试`) 183 | } else { 184 | if (safeGet(data)) { 185 | const result = JSON.parse(data); 186 | //console.log(`结果:${JSON.stringify(result)}\n`) 187 | if (result.code == 0) { 188 | let list = result.result.list 189 | for (let i = 0; i < list.length; i++) { 190 | console.log(`\n已参与活动【抽 ${list[i].actTitle} 】,开始进行1次(假)分享 -----`) 191 | actid = list[i]._id 192 | for (let s = 0; s < 1; s++) { 193 | await do_share() 194 | await $.wait(1500) 195 | } 196 | } 197 | } else { 198 | console.log(`获取失败:${JSON.stringify(result)}\n`) 199 | } 200 | } 201 | } 202 | } catch (e) { 203 | $.logErr(e, resp) 204 | } finally { 205 | resolve(); 206 | } 207 | }) 208 | }) 209 | } 210 | 211 | //do_share 212 | function do_share() { 213 | return new Promise(resolve => { 214 | $.post(share(), (err, resp, data) => { 215 | try { 216 | if (err) { 217 | console.log(`${JSON.stringify(err)}`) 218 | console.log(resp) 219 | console.log(`${$.name} API请求失败,请检查网路重试`) 220 | } else { 221 | if (safeGet(data)) { 222 | const result = JSON.parse(data); 223 | if (result.code == 0) { 224 | console.log(`分享成功!`) 225 | } else { 226 | console.log(`分享失败:${JSON.stringify(result)}`) 227 | } 228 | } 229 | } 230 | } catch (e) { 231 | $.logErr(e, resp) 232 | } finally { 233 | resolve(); 234 | } 235 | }) 236 | }) 237 | } 238 | 239 | //查询中奖信息 240 | function do_awardedList() { 241 | return new Promise(resolve => { 242 | $.post(awardedList(), (err, resp, data) => { 243 | try { 244 | if (err) { 245 | console.log(`${JSON.stringify(err)}`) 246 | console.log(resp) 247 | console.log(`${$.name} API请求失败,请检查网路重试`) 248 | } else { 249 | if (safeGet(data)) { 250 | const result = JSON.parse(data); 251 | console.log(`\n中奖信息:${JSON.stringify(result)}`) 252 | } 253 | } 254 | } catch (e) { 255 | $.logErr(e, resp) 256 | } finally { 257 | resolve(); 258 | } 259 | }) 260 | }) 261 | } 262 | 263 | //login 264 | function login() { 265 | return { 266 | url: `https://pf.moxigame.cn/jddb/duobao/login`, 267 | headers: headers, 268 | body: body 269 | } 270 | } 271 | 272 | //check_list 273 | function check_list() { 274 | return { 275 | url: `https://pf.moxigame.cn/jddb/duobao/list`, 276 | headers: headers, 277 | body: `{"id":"${$.id}","token":"${$.token}","pageSize":10,"page":${page},"status":"progress"}` 278 | } 279 | } 280 | 281 | //join 282 | function join() { 283 | return { 284 | url: `https://pf.moxigame.cn/jddb/duobao/join`, 285 | headers: headers, 286 | body: `{"id":"${$.id}","token":"${$.token}","activeid":"${actid}"}` 287 | } 288 | } 289 | 290 | //joined_list 291 | function joined_list() { 292 | return { 293 | url: `https://pf.moxigame.cn/jddb/duobao/joinProgressList`, 294 | headers: headers, 295 | body: `{"id":"${$.id}","token":"${$.token}","pageSize":10,"page":${page1}}` 296 | } 297 | } 298 | 299 | //share 300 | function share() { 301 | return { 302 | url: `https://pf.moxigame.cn/jddb/duobao/finishTask`, 303 | headers: headers, 304 | body: `{"id":"${$.id}","token":"${$.token}","type":"share","activeid":"${actid}"}` 305 | } 306 | } 307 | 308 | //awardedList 309 | function awardedList() { 310 | return { 311 | url: `https://pf.moxigame.cn/jddb/duobao/joinAwardedList`, 312 | headers: headers, 313 | body: `{"id":"${$.id}","token":"${$.token}","pageSize":10,"page":1}` 314 | } 315 | } 316 | 317 | function safeGet(data) { 318 | try { 319 | if (typeof JSON.parse(data) == "object") { 320 | return true; 321 | } 322 | } catch (e) { 323 | console.log(e); 324 | console.log(`服务器访问数据为空,请检查自身设备网络情况`); 325 | return false; 326 | } 327 | } 328 | 329 | 330 | // prettier-ignore 331 | function Env(t,e){"undefined"!=typeof process&&JSON.stringify(process.env).indexOf("GITHUB")>-1&&process.exit(0);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("",`🔔${this.name}, 开始!`)}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("@"),n={url:`http://${h}/v1/scripting/evaluate`,body:{script_text:t,mock_type:"cron",timeout:r},headers:{"X-Key":o,Accept:"*/*"}};this.post(n,(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,e=null){const s=e?new Date(e):new Date;let i={"M+":s.getMonth()+1,"d+":s.getDate(),"H+":s.getHours(),"m+":s.getMinutes(),"s+":s.getSeconds(),"q+":Math.floor((s.getMonth()+3)/3),S:s.getMilliseconds()};/(y+)/.test(t)&&(t=t.replace(RegExp.$1,(s.getFullYear()+"").substr(4-RegExp.$1.length)));for(let e in i)new RegExp("("+e+")").test(t)&&(t=t.replace(RegExp.$1,1==RegExp.$1.length?i[e]:("00"+i[e]).substr((""+i[e]).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=["","==============📣系统通知📣=============="];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("",`❗️${this.name}, 错误!`,t.stack):this.log("",`❗️${this.name}, 错误!`,t)}wait(t){return new Promise(e=>setTimeout(e,t))}done(t={}){const e=(new Date).getTime(),s=(e-this.startTime)/1e3;this.log("",`🔔${this.name}, 结束! 🕛 ${s} 秒`),this.log(),(this.isSurge()||this.isQuanX()||this.isLoon())&&$done(t)}}(t,e)} 332 | -------------------------------------------------------------------------------- /jone2008_lxk_cookies.conf: -------------------------------------------------------------------------------- 1 | 2 | hostname = draw.jdfcloud.com, jdjoy.jd.com, account.huami.com, me-api.jd.com 3 | 4 | # 获取多账号京东Cookie 5 | https:\/\/me-api\.jd\.com\/user_new\/info\/GetJDUserInfoUnion url script-request-header https://raw.githubusercontent.com/Jone2008/JD/main/JD_extra_cookie.js 6 | 7 | # 宠汪汪强制为别人助力 8 | ^https:\/\/draw\.jdfcloud\.com\/\/common\/pet\/enterRoom\/h5\?invitePin=.*(&inviteSource=task_invite&shareSource=\w+&inviteTimeStamp=\d+&openId=\w+)?&reqSource=weapp|^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/pet\/helpFriend\?friendPin url script-request-header https://raw.githubusercontent.com/Jone2008/JD/main/jd_joy_help.js 9 | 10 | # 宠汪汪赛跑 11 | ^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/addUser\?code= url script-response-body https://raw.githubusercontent.com/Jone2008/JD/main/jd_joy_run.js 12 | 13 | # 宠汪汪赛跑 14 | ^https:\/\/draw\.jdfcloud\.com(\/mirror)?\/\/api\/user\/user\/detail\?openId= url script-request-header https://raw.githubusercontent.com/Jone2008/JD/main/jd_joy_run.js 15 | 16 | # 小米运动 17 | ^https:\/\/account\.huami\.com\/v2\/client\/login url script-response-body https://raw.githubusercontent.com/Jone2008/JD/main/backUp/xmSports.js 18 | -------------------------------------------------------------------------------- /jone2008_lxk_gallery.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "LXK9301 task gallery", 3 | "description": "https://gitee.com/jone2008/JD", 4 | "task": [ 5 | "5 6-18/6 * * * https://gitee.com/jone2008/JD/raw/main/jd_fruit.js, tag=东东农场 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdnc.png", 6 | "20 7-19/6 * * * https://gitee.com/jone2008/JD/raw/main/jd_pet.js, tag=东东萌宠 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdmc.png", 7 | "10 7-21/2 * * * https://gitee.com/jone2008/JD/raw/main/jd_plantBean.js, tag=京东种豆得豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzd.png", 8 | "15 1,7,9,12,18,21 * * * https://gitee.com/jone2008/JD/raw/main/jd_joy.js, tag=宠汪汪, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", 9 | "12 */1 * * * https://gitee.com/jone2008/JD/raw/main/jd_joy_feedPets.js, tag=宠汪汪喂食 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", 10 | "0 0,6 * * * https://gitee.com/jone2008/JD/raw/main/jd_joy_steal.js, tag=宠汪汪偷好友积分与狗粮 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", 11 | "1 0,8,12,16 * * * https://gitee.com/jone2008/JD/raw/main/jd_joy_reward.js , tag=宠汪汪积分兑换奖品 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", 12 | "8 */3 * * * https://gitee.com/jone2008/JD/raw/main/jd_speed.js , tag=京东天天加速 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdjs.png", 13 | "15 */5 * * * https://gitee.com/jone2008/JD/raw/main/jd_moneyTree.js , tag=京东摇钱树 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyqs.png", 14 | "5 0 * * * https://gitee.com/jone2008/JD/raw/main/jd_club_lottery.js , tag=摇京豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdyjd.png", 15 | "11 1-23/5 * * * https://gitee.com/jone2008/JD/raw/main/jd_superMarket.js , tag=京小超 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png", 16 | "0,30 0 * * * https://gitee.com/jone2008/JD/raw/main/jd_blueCoin.js , tag=京小超兑换奖品 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jxc.png", 17 | "55 23 * * * https://gitee.com/jone2008/JD/raw/main/jd_unsubscribe.js , tag=取关京东店铺商品 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", 18 | "10 0 * * * https://gitee.com/jone2008/JD/raw/main/jd_shop.js , tag=进店领豆 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_shop.png", 19 | "15 10 * * * https://gitee.com/jone2008/JD/raw/main/jd_joy_run.js , tag=宠汪汪邀请助力与赛跑助力 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdcww.png", 20 | "1 1 * * * https://gitee.com/jone2008/JD/raw/main/jd_redPacket.js , tag=京东全民开红包 , img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", 21 | "2 9 * * * https://gitee.com/jone2008/JD/raw/main/jd_bean_change.js , tag=京豆变动通知 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", 22 | "20 0,20 * * * https://gitee.com/jone2008/JD/raw/main/jd_necklace.js , tag=点点券 , img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", 23 | "10 * * * * https://gitee.com/jone2008/JD/raw/main/jd_dreamFactory.js, tag=京喜工厂, img-url=https://github.com/58xinian/icon/raw/master/jdgc.png", 24 | "13 7 * * * https://gitee.com/jone2008/JD/raw/main/jd_small_home.js, tag=东东小窝, img-url=https://github.com/58xinian/icon/raw/master/ddxw.png", 25 | "10 * * * * https://gitee.com/jone2008/JD/raw/main/jd_jdfactory.js, tag=东东工厂, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_factory.png", 26 | "0 7 * * * https://gitee.com/jone2008/JD/raw/main/jd_syj.js, tag=十元街, img-url=https://github.com/58xinian/icon/raw/master/jd_syj.png", 27 | "10 6 * * * https://gitee.com/jone2008/JD/raw/main/jd_bean_home.js, tag=领京豆额外奖励, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_bean_home.png", 28 | "0 0 * * * https://gitee.com/jone2008/JD/raw/main/jd_car.js, tag=京东汽车, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_car.png", 29 | "10 0 * * * https://gitee.com/jone2008/JD/raw/main/jd_kd.js, tag=京东快递签到, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_kd.png", 30 | "10-20/5 12 * * * https://gitee.com/jone2008/JD/raw/main/jd_live.js, tag=京东直播, img-url= https://raw.githubusercontent.com/58xinian/icon/master/jd_live_redrain.png", 31 | "14 11 * * * https://gitee.com/jone2008/JD/raw/main/jd_jdzz.js, tag=京东赚赚, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jdzz.png", 32 | "44 12 * * 6 https://gitee.com/jone2008/JD/raw/main/jd_unbind.js, tag=注销京东店铺会员卡, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_unbind.png", 33 | "30 8 * * * https://gitee.com/jone2008/JD/raw/main/jd_crazy_joy.js, tag=crazyJoy任务, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", 34 | "15 17 * * * https://gitee.com/jone2008/JD/raw/main/backUp/xmSports.js, tag=小米运动, img-url=https://raw.githubusercontent.com/58xinian/icon/master/xmyd.png", 35 | "0 0 * * * https://gitee.com/jone2008/JD/raw/main/jd_car_exchange.js, tag=京东汽车兑换, img-url=https://raw.githubusercontent.com/58xinian/icon/master/jd_redPacket.png", 36 | "0 0 * * * https://gitee.com/jone2008/JD/raw/main/jd_bookshop.js, tag=口袋书店, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", 37 | "5 0 * * * https://gitee.com/jone2008/JD/raw/main/jx_sign.js, tag=京喜签到, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", 38 | "2 0 * * * https://gitee.com/jone2008/JD/raw/main/jd_cash.js, tag=签到领现金, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png", 39 | "1 7 * * * https://gitee.com/jone2008/JD/raw/main/jd_nh.js, tag=京东年货节, img-url=https://raw.githubusercontent.com/Orz-3/task/master/jd.png" 40 | ] 41 | } 42 | -------------------------------------------------------------------------------- /mtxx.js: -------------------------------------------------------------------------------- 1 | /************************************* 2 | 3 | 项目名称:美图秀秀 解锁SVIP 4 | 下载地址:https://t.cn/AiN3YLHl 5 | 脚本作者:chxm1023 6 | 电报频道:https://t.me/chxm1023 7 | 使用声明:⚠️仅供参考,🈲转载与售卖! 8 | 9 | ************************************** 10 | 11 | [rewrite_local] 12 | ^https?:\/\/((h5|api)\.xiuxiu|api-sub|api\.posters)\.meitu\.com\/.+\/(vip|user|h\d|center|home) url script-response-body https://raw.githubusercontent.com/chxm1023/Rewrite/main/mtxx.js 13 | 14 | [mitm] 15 | hostname = *.xiuxiu.meitu.com, api.posters.meitu.com, api-sub.meitu.com 16 | 17 | *************************************/ 18 | 19 | 20 | var chxm1023 = JSON.parse($response.body); 21 | const hysj = '/vip/prompt/query.json'; 22 | const hyxx = '/vip/vip_show.json'; 23 | const user = '/user/show.json'; 24 | const hyzl = '/vip/new_sub_detail.json'; 25 | const hymb = '/vip/vip_navigation.json'; 26 | const group = '/user/vip_info_by_group.json'; 27 | const vip = '/center/user_info.json'; 28 | const sjs = '/user/info_by_entrance.json'; 29 | const sjshf = '/home/home.json'; 30 | const kta = 'https://api.posters.meitu.com/center/user_rights.json'; 31 | const ktb = 'https://api.posters.meitu.com/center/user_rights_consume.json'; 32 | 33 | 34 | if ($request.url.indexOf(hysj) != -1){ 35 | chxm1023.data = { 36 | "home_btn_prompt" : "立即查看", 37 | "if_transfer" : 0, 38 | "pay_interval" : 3000, 39 | "beautify_prompt" : "", 40 | "home_prompt" : "会员有效期至2099/09/09", 41 | "svip_bubble_text" : "粉钻SVIP:有效期至2099/09/09\n粉钻VIP:有效期至2099/09/99", 42 | "beautify_btn_prompt" : "", 43 | "request_time" : 1666666666666 44 | }; 45 | } 46 | 47 | if ($request.url.indexOf(hyxx) != -1){ 48 | chxm1023.data = { 49 | "id": "666666666666666666", 50 | "id_str": "666666666666666666", 51 | "valid_time": 4092599349, 52 | "uid" : 1666666666, 53 | "sub_type": 3, 54 | "expire_days": -66666, 55 | "screen_name": "", 56 | "avatar_url": "", 57 | "in_valid_time": 4092599349, 58 | "gid": 1234567890, 59 | "s": 1, 60 | "vip_type": 101, 61 | "platform": 2, 62 | "sub_name": "包年", 63 | "renew": 2, 64 | "is_valid_user": 1, 65 | "create_time": 1666666666, 66 | "sub_biz_type": 1, 67 | "is_expire": 0, 68 | "in_valid_time" : 4092599349 69 | }; 70 | } 71 | 72 | if ($request.url.indexOf(user) != -1){ 73 | chxm1023.data.vip_type = 101; 74 | chxm1023.data.vip_icon = "https://xximg1.meitudata.com/6948531747980333892.png"; 75 | chxm1023.data.follower_count = 999000; 76 | chxm1023.data.fan_count = 999000; 77 | chxm1023.data.be_like_count = 999000; 78 | } 79 | 80 | if ($request.url.indexOf(hyzl) != -1){ 81 | delete chxm1023.data.materials; 82 | delete chxm1023.data.prices; 83 | delete chxm1023.data.new_version_rotograms; 84 | chxm1023.data.vip_sign_info = { 85 | "sub_type" : 3, 86 | "renew_status" : 1, 87 | "show_auto_renew" : 1, 88 | "next_withhold_amount" : 16800, 89 | "withhold_currency_symbol" : "¥", 90 | "next_withhold_date" : "2099-09-09", 91 | "pay_channel" : "苹果支付", 92 | "do_pop_up" : false 93 | }; 94 | chxm1023.data.vip_power_num = 999999; 95 | chxm1023.data.new_power_num = 999999; 96 | chxm1023.data.welfare_center_num = 999999; 97 | chxm1023.data.exchange_vip = 0; 98 | chxm1023.data.platform = 2; 99 | chxm1023.data.renew = 1; 100 | chxm1023.data.is_new_vipsub = 0; 101 | chxm1023.data.s = 1; 102 | chxm1023.data.expire_days = -66666; 103 | chxm1023.data.sub_type = 3; 104 | chxm1023.data.old_vip_type = 4; 105 | chxm1023.data.valid_time = 4092599349; 106 | chxm1023.data.invalid_time = 4092599349; 107 | chxm1023.data.is_expire = 0; 108 | chxm1023.data.rights_page_vip_btn_title = "立即解锁"; 109 | chxm1023.data.rights_page_svip_btn_title = "立即解锁"; 110 | chxm1023.data.hbp_vip = { 111 | "sub_type" : 3, 112 | "valid_time" : 4092599349, 113 | "renew" : 1, 114 | "expire_days" : -66666, 115 | "is_expire" : 0, 116 | "in_valid_time" : 4092599349, 117 | "s" : 0 118 | }; 119 | chxm1023.data.sub_biz_type = 1; 120 | chxm1023.data.vip_type = 101; 121 | chxm1023.data.xx_vip = { 122 | "sub_type" : 3, 123 | "valid_time" : 4092599349, 124 | "renew" : 1, 125 | "expire_days" : -66666, 126 | "is_expire" : 0, 127 | "in_valid_time" : 4092599349, 128 | "s" : 0 129 | }; 130 | } 131 | 132 | if ($request.url.indexOf(hymb) != -1){ 133 | delete chxm1023.data.rights; 134 | delete chxm1023.data.navigation_card_list; 135 | delete chxm1023.data.config_list; 136 | delete chxm1023.data.pendant; 137 | chxm1023.data.vip_type = 101; 138 | chxm1023.data.display_vip_time = 1; 139 | chxm1023.data.display_vip_type = 2; 140 | chxm1023.data.hbp_vip = { 141 | "id" : "666666666666666666", 142 | "id_str" : "666666666666666666", 143 | "valid_time" : 4092599349, 144 | "uid" : 1666666666, 145 | "sub_type" : 3, 146 | "sub_biz_type" : 1, 147 | "avatar_url" : "", 148 | "is_expire" : 0, 149 | "expire_days" : -66666, 150 | "gid" : 1234567890, 151 | "vip_type" : 101, 152 | "platform" : 2, 153 | "sub_name" : "包年", 154 | "renew" : 2, 155 | "s" : 0, 156 | "is_valid_user" : 1, 157 | "create_time" : 1666666666, 158 | "screen_name" : "", 159 | "in_valid_time" : 4092599349 160 | }; 161 | chxm1023.data.xx_vip = { 162 | "id" : "666666666666666666", 163 | "id_str" : "666666666666666666", 164 | "valid_time" : 4092599349, 165 | "uid" : 1666666666, 166 | "sub_type" : 3, 167 | "sub_biz_type" : 1, 168 | "avatar_url" : "", 169 | "is_expire" : 0, 170 | "expire_days" : -66666, 171 | "gid" : 1234567890, 172 | "vip_type" : 101, 173 | "platform" : 2, 174 | "sub_name" : "包年", 175 | "renew" : 2, 176 | "s" : 0, 177 | "is_valid_user" : 1, 178 | "create_time" : 1666666666, 179 | "screen_name" : "", 180 | "in_valid_time" : 4092599349 181 | }; 182 | } 183 | 184 | if ($request.url.indexOf(group) != -1){ 185 | chxm1023.data = { 186 | "active_sub_type" : 2, 187 | "account_type" : 1, 188 | "sub_type_name" : "续期", 189 | "active_sub_order_id" : "666666666666666666", 190 | "trial_period_invalid_time" : "4092599349000", 191 | "current_order_invalid_time" : "4092599349000", 192 | "active_order_id" : "666666666666666666", 193 | "limit_type" : 0, 194 | "active_sub_type_name" : "续期", 195 | "use_vip" : true, 196 | "have_valid_contract" : false, 197 | "derive_type_name" : "普通会员", 198 | "derive_type" : 1, 199 | "in_trial_period" : true, 200 | "is_vip" : true, 201 | "membership" : { 202 | "id" : "7", 203 | "display_name" : "", 204 | "level" : 2, 205 | "level_name" : "高级会员" 206 | }, 207 | "active_promotion_status_list" : [ 208 | 2, 209 | 6 210 | ], 211 | "sub_type" : 3, 212 | "account_id" : "1666666666", 213 | "invalid_time" : "4092599349000", 214 | "valid_time" : "4092599349000", 215 | "active_product_id" : "0", 216 | "active_promotion_status" : 2, 217 | "show_renew_flag" : false 218 | }; 219 | } 220 | 221 | if ($request.url.indexOf(vip) != -1){ 222 | chxm1023.data.vip_end_time = 4092599349; 223 | chxm1023.data.is_vip = true; 224 | } 225 | 226 | if ($request.url.indexOf(sjs) != -1){ 227 | chxm1023.data = { 228 | "vip_info" : { 229 | "active_sub_type" : 2, 230 | "account_type" : 1, 231 | "sub_type_name" : "续期", 232 | "active_sub_order_id" : "666666666666666666", 233 | "trial_period_invalid_time" : "4092599349000", 234 | "current_order_invalid_time" : "4092599349000", 235 | "active_order_id" : "666666666666666666", 236 | "limit_type" : 0, 237 | "active_sub_type_name" : "续期", 238 | "use_vip" : true, 239 | "have_valid_contract" : false, 240 | "derive_type_name" : "普通会员", 241 | "derive_type" : 1, 242 | "in_trial_period" : true, 243 | "is_vip" : true, 244 | "membership" : { 245 | "id" : "7", 246 | "display_name" : "", 247 | "level" : 2, 248 | "level_name" : "高级会员" 249 | }, 250 | "active_promotion_status_list" : [ 251 | 2, 252 | 6 253 | ], 254 | "sub_type" : 3, 255 | "account_id" : "1666666666", 256 | "invalid_time" : "4092599349000", 257 | "valid_time" : "4092599349000", 258 | "active_product_id" : "0", 259 | "active_promotion_status" : 2, 260 | "show_renew_flag" : false 261 | }, 262 | "account_type" : 1, 263 | "account_id" : "1666666666", 264 | "rights_info" : [ 265 | { 266 | "show_tips" : "抠图剩余张数:9999999 张 >", 267 | "commodity_unit" : "2", 268 | "link_words" : "9999999 张 >", 269 | "commodity_id" : "shejishi.cutout", 270 | "commodity_count" : 9999999 271 | } 272 | ] 273 | }; 274 | } 275 | 276 | if ($request.url.indexOf(sjshf) != -1){ 277 | delete chxm1023.data.banner; 278 | } 279 | 280 | if ($request.url.indexOf(kta) != -1){ 281 | chxm1023.data = { 282 | "cutout" : { 283 | "num_left" : 9999999 284 | } 285 | }; 286 | } 287 | 288 | if ($request.url.indexOf(ktb) != -1){ 289 | chxm1023.data = { 290 | "consume_result" : true 291 | }; 292 | } 293 | 294 | $done({body : JSON.stringify(chxm1023)}); 295 | -------------------------------------------------------------------------------- /pp_parking.js: -------------------------------------------------------------------------------- 1 | /** 2 | * 脚本名称:PP 停车(修改自FoKit:https://github.com/FoKit/Scripts/blob/main/scripts/pp_parking.js) 3 | * 活动规则:每日签到可获取积分,积分有效期≤2年。 4 | * 脚本说明:添加重写打开 APP 即可获取 Token,支持多账号,兼容 NE / Node.js 环境。 5 | * 环境变量:PP_TOKEN / CODESERVER_ADDRESS、CODESERVER_FUN 6 | * BoxJs 订阅:https://raw.githubusercontent.com/FoKit/Scripts/main/boxjs/fokit.boxjs.json 7 | * 更新时间:2024-03-11 新增 3 个浏览任务,感谢 @leiyiyan 提供帮助 8 | * 更新时间:2024-03-12 新增用户昵称和积分查询,修复看视频任务二次任务 9 | * 自修改-更新时间:2025-03-12 添加当token过期则先清空旧,再抓取新的,避免新旧重叠。去除多账号支持。 10 | * 自修改-更新时间:2025-03-13 修改统一token格式,移除 WxCode 依赖,仅使用 PP_TOKEN。 11 | 12 | 13 | -------------- Quantumult X 配置 -------------- 14 | 15 | [MITM] 16 | hostname = api.660pp.com 17 | 18 | [rewrite_local] 19 | ^https:\/\/api\.660pp\.com\/rest\/[\d\.]+?\/user\/token url script-request-header https://raw.githubusercontent.com/Jone2008/QuantumultX/refs/heads/master/pp_parking.js 20 | 21 | [task_local] 22 | 17 7 * * * https://raw.githubusercontent.com/Jone2008/QuantumultX/refs/heads/master/pp_parking.js, tag=PP 停车, img-url=https://raw.githubusercontent.com/FoKit/Scripts/main/images/pp_parking.png, enabled=true 23 | */ 24 | 25 | const $ = new Env('PP 停车'); 26 | $.is_debug = ($.isNode() ? process.env['IS_DEBUG'] : $.getdata('is_debug')) || 'false'; 27 | $.token = ''; 28 | const app_id = $.appid = 'wxa204074068ad40ef'; 29 | $.messages = []; 30 | 31 | // 主函数 32 | async function main() { 33 | // 从环境变量获取 token 34 | let rawToken = $.isNode() ? process.env['PP_TOKEN'] : $.getdata('pp_token'); 35 | if (!rawToken) { 36 | throw new Error('未设置 PP_TOKEN 环境变量'); 37 | } 38 | 39 | try { 40 | // 解析 PP_TOKEN,期望格式为 ["token"] 41 | const tokenArray = JSON.parse(rawToken); 42 | if (!Array.isArray(tokenArray) || tokenArray.length === 0) { 43 | throw new Error('PP_TOKEN 格式错误,应为 ["token"]'); 44 | } 45 | $.token = 'Bearer ' + tokenArray[0]; 46 | } catch (e) { 47 | throw new Error(`PP_TOKEN 解析失败: ${e.message}`); 48 | } 49 | 50 | $.log(`✅ 成功从 PP_TOKEN 获取 Token`); 51 | 52 | // 用户信息 53 | await whoami(); 54 | 55 | if (!$.token) return; 56 | 57 | // 用户积分 58 | await balance(); 59 | 60 | // 执行任务 61 | await task(); 62 | } 63 | 64 | // 获取任务列表 65 | async function task() { 66 | let msg = ''; 67 | var params = { app_id }; 68 | let opt = { 69 | url: `https://user-api.4pyun.com/rest/2.0/bonus/reward/task/list?${serializeParams(getEncryptKeys(params))}`, 70 | headers: { 71 | 'Content-Type': `application/x-www-form-urlencoded`, 72 | 'Authorization': $.token 73 | } 74 | }; 75 | 76 | var result = await Request(opt); 77 | if (result?.code == "1001") { 78 | $.log(`任务列表获取成功 ✅`); 79 | var row = result['payload']['row']; 80 | 81 | const repeatLimit = row.reduce((max, item) => { 82 | if (item.referer_url.includes('voucher=')) { 83 | return Math.max(max, item.repeat_limit); 84 | } else { 85 | return max; 86 | } 87 | }, 0); 88 | 89 | for (let i = 0; i < repeatLimit; i++) { 90 | for (const item of row) { 91 | let purpose = item['purpose']; 92 | let taskName = i > 0 ? item['name'] + (i + 1) : item['name']; 93 | if (item['referer_url'].includes('voucher=')) { 94 | let voucher = new URLSearchParams(item['referer_url']).get('voucher'); 95 | console.log(`✈️ 执行任务: ${taskName}`); 96 | await complete(purpose, voucher) && await acquire(purpose, taskName); 97 | } else if (taskName.includes('签到')) { 98 | console.log(`✈️ 执行任务: ${taskName}`); 99 | await acquire(purpose, taskName); 100 | } 101 | } 102 | if (repeatLimit == i + 1) break; 103 | var result = await Request(opt); 104 | if (result?.code == "1001") { 105 | $.log(`更新任务列表成功 ✅`); 106 | var row = result['payload']['row']; 107 | row = row.filter(item => { 108 | return item.repeat_limit > i + 1 && item['referer_url'].includes('voucher='); 109 | }); 110 | } else { 111 | break; 112 | } 113 | } 114 | } else { 115 | msg = `任务列表获取失败 ❌`; 116 | } 117 | $.messages.push(msg) && $.log(msg); 118 | } 119 | 120 | // 执行任务 121 | async function complete(purpose, voucher) { 122 | var opt = { 123 | url: `https://user-api.4pyun.com/rest/2.0/bonus/reward/task/complete`, 124 | headers: { 125 | 'Content-Type': `application/json;charset=utf-8`, 126 | 'Authorization': $.token 127 | }, 128 | body: encryption( 129 | JSON.stringify({ 130 | purpose, 131 | voucher, 132 | app_id 133 | }) 134 | ), 135 | }; 136 | var result = await Request(opt); 137 | 138 | if (result?.code == "1001") { 139 | return true; 140 | } else { 141 | return false; 142 | } 143 | } 144 | 145 | // 领取奖励 / 签到 146 | async function acquire(purpose, taskName) { 147 | let msg = ''; 148 | var params = { purpose, app_id }; 149 | var opt = { 150 | url: `https://user-api.4pyun.com/rest/2.0/bonus/reward/acquire?${serializeParams(getEncryptKeys(params))}`, 151 | headers: { 152 | 'Content-Type': `application/x-www-form-urlencoded`, 153 | 'Authorization': $.token 154 | } 155 | }; 156 | 157 | var result = await Request(opt); 158 | 159 | if (result?.code == "1001") { 160 | msg = `${taskName} 任务完成, 获得 ${result['payload']['value']} 积分 🎉`; 161 | } else if (result?.code == "1002") { 162 | msg = `${taskName} 任务已完成 ✅`; 163 | } else { 164 | msg = `${taskName} 任务失败 ❌`; 165 | } 166 | 167 | $.messages.push(msg) && $.log(msg); 168 | } 169 | 170 | // 获取用户信息 171 | async function whoami() { 172 | let msg = ''; 173 | const options = { 174 | url: `https://user-api.4pyun.com/rest/2.0/user/whoami`, 175 | headers: { 176 | 'Content-Type': `application/x-www-form-urlencoded`, 177 | 'Authorization': $.token 178 | } 179 | }; 180 | 181 | const result = await Request(options); 182 | if (result?.code == "1001") { 183 | const { identity, mobile, nickname } = result.payload; 184 | $.identity = identity; 185 | $.mobile = mobile; 186 | $.nickname = nickname; 187 | $.log(`✅ 用户信息获取成功`); 188 | } else if (result?.code == "401") { 189 | $.log(`Token 已过期,清除旧 token`); 190 | // 清除旧 token 191 | $.setdata('', 'pp_token'); 192 | $.token = ''; 193 | msg = `❌ Token 已过期,请手动更新 PP_TOKEN`; 194 | } else { 195 | msg = `❌ 用户信息获取失败: ${$.toStr(result)}`; 196 | } 197 | $.messages.push(msg) && $.log(msg); 198 | } 199 | 200 | // 获取用户积分 201 | async function balance() { 202 | let msg = ''; 203 | var params = { 204 | user_id: $.identity, 205 | user_type: 1, 206 | identity: $.identity 207 | }; 208 | const options = { 209 | url: `https://user-api.4pyun.com/rest/2.0/reward/balance?${serializeParams(getEncryptKeys(params))}`, 210 | headers: { 211 | 'Content-Type': `application/x-www-form-urlencoded`, 212 | 'Authorization': $.token 213 | } 214 | }; 215 | 216 | const result = await Request(options); 217 | if (result?.code == "1001") { 218 | msg = `昵称: ${$.nickname} 积分: ${result.payload.balance}`; 219 | $.log(`✅ 用户积分获取成功`); 220 | } else { 221 | msg = `❌ 用户积分获取失败: ${$.toStr(result)}`; 222 | } 223 | $.messages.push(msg) && $.log(msg); 224 | } 225 | 226 | // 脚本执行入口 227 | if (typeof $request !== `undefined`) { 228 | GetCookie(); 229 | $.done(); 230 | } else { 231 | !(async () => { 232 | await main(); 233 | })() 234 | .catch((e) => $.messages.push(e.message || e) && $.logErr(e)) 235 | .finally(async () => { 236 | await sendMsg($.messages.join('\n').trimStart().trimEnd()); 237 | $.done(); 238 | }); 239 | } 240 | 241 | // 获取签到数据 242 | function GetCookie() { 243 | try { 244 | debug($request.headers); 245 | const headers = ObjectKeys2LowerCase($request.headers); 246 | const newToken = headers['rest_api_token']; 247 | if (/user\/token/.test($request.url) && newToken) { 248 | // 保存为 ["token"] 格式 249 | $.setdata(JSON.stringify([newToken]), 'pp_token'); 250 | $.msg($.name, ``, `Token 获取/更新成功。🎉`); 251 | } 252 | } catch (e) { 253 | console.log("❌ autoLogin 数据获取失败"); 254 | console.log(e); 255 | } 256 | } 257 | 258 | /** 259 | * 数据脱敏 260 | */ 261 | function hideSensitiveData(string, head_length = 2, foot_length = 2) { 262 | try { 263 | let star = ''; 264 | for (var i = 0; i < string.length - head_length - foot_length; i++) { 265 | star += '*'; 266 | } 267 | return string.substring(0, head_length) + star + string.substring(string.length - foot_length); 268 | } catch (e) { 269 | return string; 270 | } 271 | } 272 | 273 | /** 274 | * 对象属性转小写 275 | */ 276 | function ObjectKeys2LowerCase(obj) { 277 | const _lower = Object.fromEntries(Object.entries(obj).map(([k, v]) => [k.toLowerCase(), v])); 278 | return new Proxy(_lower, { 279 | get: function (target, propKey, receiver) { 280 | return Reflect.get(target, propKey.toLowerCase(), receiver); 281 | }, 282 | set: function (target, propKey, value, receiver) { 283 | return Reflect.set(target, propKey.toLowerCase(), value, receiver); 284 | } 285 | }); 286 | } 287 | 288 | /** 289 | * 请求函数二次封装 290 | */ 291 | async function Request(options) { 292 | try { 293 | options = options.url ? options : { url: options }; 294 | const _method = options?.method || ('body' in options ? 'post' : 'get'); 295 | const _respType = options?.respType || 'body'; 296 | const _timeout = options?.timeout || 15e3; 297 | const _http = [ 298 | new Promise((_, reject) => setTimeout(() => reject(`❌ 请求超时: ${options['url']}`), _timeout)), 299 | new Promise((resolve, reject) => { 300 | debug(options, '[Request]'); 301 | $[_method.toLowerCase()](options, (error, response, data) => { 302 | debug(response, '[response]'); 303 | error && $.log($.toStr(error)); 304 | if (_respType !== 'all') { 305 | resolve($.toObj(response?.[_respType], response?.[_respType])); 306 | } else { 307 | resolve(response); 308 | } 309 | }); 310 | }) 311 | ]; 312 | return await Promise.race(_http); 313 | } catch (err) { 314 | $.logErr(err); 315 | } 316 | } 317 | 318 | // 发送消息 319 | async function sendMsg(message) { 320 | if (!message) return; 321 | try { 322 | if ($.isNode()) { 323 | try { 324 | var notify = require('./sendNotify'); 325 | } catch (e) { 326 | var notify = require('./utils/sendNotify'); 327 | } 328 | await notify.sendNotify($.name, message); 329 | } else { 330 | $.msg($.name, '', message); 331 | } 332 | } catch (e) { 333 | $.log(`\n\n----- ${$.name} -----\n${message}`); 334 | } 335 | } 336 | 337 | /** 338 | * DEBUG 339 | */ 340 | function debug(content, title = "debug") { 341 | let start = `\n----- ${title} -----\n`; 342 | let end = `\n----- ${$.time('HH:mm:ss')} -----\n`; 343 | if ($.is_debug === 'true') { 344 | if (typeof content == "string") { 345 | $.log(start + content + end); 346 | } else if (typeof content == "object") { 347 | $.log(start + $.toStr(content) + end); 348 | } 349 | } 350 | } 351 | 352 | // 加密 GET 请求数据 353 | function getEncryptKeys(n) { 354 | var r = {}; 355 | if (n && Object.keys(n).length > 0) 356 | for (var t in n) { 357 | var e = n[t]; 358 | if (null != e) 359 | r[encryption(t)] = e instanceof Array ? e.map((n) => encryption(n.toString())) : encryption(e.toString()); 360 | } 361 | return r 362 | }; 363 | 364 | // 序列化字符串 365 | function serializeParams(n) { 366 | var o = []; 367 | for (var a in n) 368 | if (n.hasOwnProperty(a)) { 369 | var r = n[a]; 370 | if (null != r) 371 | if (Array.isArray(r)) { 372 | var c, t = e(r); 373 | try { 374 | for (t.s(); !(c = t.n()).done;) { 375 | var i = c.value; 376 | o.push("".concat(encodeURIComponent(a), "=").concat(encodeURIComponent(i))) 377 | } 378 | } catch (n) { t.e(n) } 379 | finally { t.f() } 380 | } else 381 | o.push("".concat(encodeURIComponent(a), "=").concat(encodeURIComponent(r))) 382 | } 383 | return o.join("&") 384 | }; 385 | 386 | // 加密函数 387 | function encryption(r) { 388 | return function (r) { 389 | for (var e, n = "", t = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", 390 | u = new Uint8Array(r), h = u.byteLength, o = h % 3, p = h - o, a = 0; 391 | a < p; a += 3) 392 | n += t[(16515072 & (e = u[a] << 16 | u[a + 1] << 8 | u[a + 2])) >> 18] + 393 | t[(258048 & e) >> 12] + t[(4032 & e) >> 6] + t[63 & e]; 394 | return 1 === o ? n += t[(252 & (e = u[p])) >> 2] + t[(3 & e) << 4] + "==" : 395 | 2 === o && (n += t[(64512 & (e = u[p] << 8 | u[p + 1])) >> 10] + 396 | t[(1008 & e) >> 4] + t[(15 & e) << 2] + "="), n 397 | }(function (r, e) { 398 | for (var n = r.length, t = new Uint8Array(n), u = 0; u < n; u++) { 399 | var h = e.charCodeAt((n - u) % 32) ^ ~("string" == typeof r ? r.charCodeAt(u) : r[u]); 400 | t[u] = h 401 | } 402 | return t 403 | }(function (r) { 404 | var e, n, t = []; 405 | e = r.length; 406 | for (var u = 0; u < e; u++) 407 | (n = r.charCodeAt(u)) >= 65536 && n <= 1114111 ? 408 | (t.push(n >> 18 & 7 | 240), t.push(n >> 12 & 63 | 128), 409 | t.push(n >> 6 & 63 | 128), t.push(63 & n | 128)) : 410 | n >= 2048 && n <= 65535 ? 411 | (t.push(n >> 12 & 15 | 224), t.push(n >> 6 & 63 | 128), 412 | t.push(63 & n | 128)) : 413 | n >= 128 && n <= 2047 ? 414 | (t.push(n >> 6 & 31 | 192), t.push(63 & n | 128)) : 415 | t.push(255 & n); 416 | return t 417 | }(r), "riegh^ee:w0fok5je5eeS{eecaes1nep")) 418 | }; 419 | 420 | // prettier-ignore 421 | function Env(t, e) { 422 | class s { 423 | constructor(t) { this.env = t } 424 | send(t, e = "GET") { 425 | t = "string" == typeof t ? { url: t } : t; 426 | let s = this.get; 427 | return "POST" === e && (s = this.post), 428 | new Promise((e, a) => { s.call(this, t, (t, s, r) => { t ? a(t) : e(s) }) }) 429 | } 430 | get(t) { return this.send.call(this.env, t) } 431 | post(t) { return this.send.call(this.env, t, "POST") } 432 | } 433 | return new class { 434 | constructor(t, e) { 435 | this.name = t, 436 | this.http = new s(this), 437 | this.data = null, 438 | this.dataFile = "box.dat", 439 | this.logs = [], 440 | this.isMute = !1, 441 | this.isNeedRewrite = !1, 442 | this.logSeparator = "\n", 443 | this.encoding = "utf-8", 444 | this.startTime = (new Date).getTime(), 445 | Object.assign(this, e), 446 | this.log("", `🔔${this.name}, 开始!`) 447 | } 448 | getEnv() { 449 | return "undefined" != typeof $environment && $environment["surge-version"] ? "Surge" : 450 | "undefined" != typeof $environment && $environment["stash-version"] ? "Stash" : 451 | "undefined" != typeof module && module.exports ? "Node.js" : 452 | "undefined" != typeof $task ? "Quantumult X" : 453 | "undefined" != typeof $loon ? "Loon" : 454 | "undefined" != typeof $rocket ? "Shadowrocket" : void 0 455 | } 456 | isNode() { return "Node.js" === this.getEnv() } 457 | isQuanX() { return "Quantumult X" === this.getEnv() } 458 | isSurge() { return "Surge" === this.getEnv() } 459 | isLoon() { return "Loon" === this.getEnv() } 460 | isShadowrocket() { return "Shadowrocket" === this.getEnv() } 461 | isStash() { return "Stash" === this.getEnv() } 462 | toObj(t, e = null) { try { return JSON.parse(t) } catch { return e } } 463 | toStr(t, e = null) { try { return JSON.stringify(t) } catch { return e } } 464 | getjson(t, e) { 465 | let s = e; 466 | const a = this.getdata(t); 467 | if (a) try { s = JSON.parse(this.getdata(t)) } catch {} 468 | return s 469 | } 470 | setjson(t, e) { try { return this.setdata(JSON.stringify(t), e) } catch { return !1 } } 471 | getScript(t) { return new Promise(e => { this.get({ url: t }, (t, s, a) => e(a)) }) } 472 | runScript(t, e) { 473 | return new Promise(s => { 474 | let a = this.getdata("@chavy_boxjs_userCfgs.httpapi"); 475 | a = a ? a.replace(/\n/g, "").trim() : a; 476 | let r = this.getdata("@chavy_boxjs_userCfgs.httpapi_timeout"); 477 | r = r ? 1 * r : 20, r = e && e.timeout ? e.timeout : r; 478 | const [i, o] = a.split("@"), 479 | n = { url: `http://${o}/v1/scripting/evaluate`, 480 | body: { script_text: t, mock_type: "cron", timeout: r }, 481 | headers: { "X-Key": i, Accept: "*/*" }, timeout: r }; 482 | this.post(n, (t, e, a) => s(a)) 483 | }).catch(t => this.logErr(t)) 484 | } 485 | loaddata() { 486 | if (!this.isNode()) return {}; 487 | { 488 | this.fs = this.fs ? this.fs : require("fs"), 489 | this.path = this.path ? this.path : require("path"); 490 | const t = this.path.resolve(this.dataFile), 491 | e = this.path.resolve(process.cwd(), this.dataFile), 492 | s = this.fs.existsSync(t), 493 | a = !s && this.fs.existsSync(e); 494 | if (!s && !a) return {}; 495 | { 496 | const a = s ? t : e; 497 | try { return JSON.parse(this.fs.readFileSync(a)) } catch (t) { return {} } 498 | } 499 | } 500 | } 501 | writedata() { 502 | if (this.isNode()) { 503 | this.fs = this.fs ? this.fs : require("fs"), 504 | this.path = this.path ? this.path : require("path"); 505 | const t = this.path.resolve(this.dataFile), 506 | e = this.path.resolve(process.cwd(), this.dataFile), 507 | s = this.fs.existsSync(t), 508 | a = !s && this.fs.existsSync(e), 509 | r = JSON.stringify(this.data); 510 | s ? this.fs.writeFileSync(t, r) : 511 | a ? this.fs.writeFileSync(e, r) : 512 | this.fs.writeFileSync(t, r) 513 | } 514 | } 515 | lodash_get(t, e, s) { 516 | const a = e.replace(/\[(\d+)\]/g, ".$1").split("."); 517 | let r = t; 518 | for (const t of a) if (r = Object(r)[t], void 0 === r) return s; 519 | return r 520 | } 521 | lodash_set(t, e, s) { 522 | return Object(t) !== t ? t : 523 | (Array.isArray(e) || (e = e.toString().match(/[^.[\]]+/g) || []), 524 | e.slice(0, -1).reduce((t, s, a) => 525 | Object(t[s]) === t[s] ? t[s] : t[s] = Math.abs(e[a + 1]) >> 0 == +e[a + 1] ? [] : {}, t)[e[e.length - 1]] = s, t) 526 | } 527 | getdata(t) { 528 | let e = this.getval(t); 529 | if (/^@/.test(t)) { 530 | const [, s, a] = /^@(.*?)\.(.*?)$/.exec(t), 531 | r = s ? this.getval(s) : ""; 532 | if (r) try { 533 | const t = JSON.parse(r); 534 | e = t ? this.lodash_get(t, a, "") : e 535 | } catch (t) { e = "" } 536 | } 537 | return e 538 | } 539 | setdata(t, e) { 540 | let s = !1; 541 | if (/^@/.test(e)) { 542 | const [, a, r] = /^@(.*?)\.(.*?)$/.exec(e), 543 | i = this.getval(a), 544 | o = a ? "null" === i ? null : i || "{}" : "{}"; 545 | try { 546 | const e = JSON.parse(o); 547 | this.lodash_set(e, r, t), 548 | s = this.setval(JSON.stringify(e), a) 549 | } catch (e) { 550 | const i = {}; 551 | this.lodash_set(i, r, t), 552 | s = this.setval(JSON.stringify(i), a) 553 | } 554 | } else s = this.setval(t, e); 555 | return s 556 | } 557 | getval(t) { 558 | switch (this.getEnv()) { 559 | case "Surge": case "Loon": case "Stash": case "Shadowrocket": 560 | return $persistentStore.read(t); 561 | case "Quantumult X": 562 | return $prefs.valueForKey(t); 563 | case "Node.js": 564 | return this.data = this.loaddata(), this.data[t]; 565 | default: 566 | return this.data && this.data[t] || null 567 | } 568 | } 569 | setval(t, e) { 570 | switch (this.getEnv()) { 571 | case "Surge": case "Loon": case "Stash": case "Shadowrocket": 572 | return $persistentStore.write(t, e); 573 | case "Quantumult X": 574 | return $prefs.setValueForKey(t, e); 575 | case "Node.js": 576 | return this.data = this.loaddata(), this.data[e] = t, this.writedata(), !0; 577 | default: 578 | return this.data && this.data[t] || null 579 | } 580 | } 581 | initGotEnv(t) { 582 | this.got = this.got ? this.got : require("got"), 583 | this.cktough = this.cktough ? this.cktough : require("tough-cookie"), 584 | this.ckjar = this.ckjar ? this.ckjar : new this.cktough.CookieJar, 585 | t && (t.headers = t.headers ? t.headers : {}, 586 | void 0 === t.headers.Cookie && void 0 === t.cookieJar && (t.cookieJar = this.ckjar)) 587 | } 588 | get(t, e = (() => {})) { 589 | switch (t.headers && (delete t.headers["Content-Type"], delete t.headers["Content-Length"], 590 | delete t.headers["content-type"], delete t.headers["content-length"]), 591 | t.params && (t.url += "?" + this.queryStr(t.params)), this.getEnv()) { 592 | case "Surge": case "Loon": case "Stash": case "Shadowrocket": default: 593 | this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, 594 | Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), 595 | $httpClient.get(t, (t, s, a) => { 596 | !t && s && (s.body = a, s.statusCode = s.status ? s.status : s.statusCode, s.status = s.statusCode), 597 | e(t, s, a) 598 | }); 599 | break; 600 | case "Quantumult X": 601 | this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), 602 | $task.fetch(t).then(t => { 603 | const { statusCode: s, statusCode: a, headers: r, body: i, bodyBytes: o } = t; 604 | e(null, { status: s, statusCode: a, headers: r, body: i, bodyBytes: o }, i, o) 605 | }, t => e(t && t.error || "UndefinedError")); 606 | break; 607 | case "Node.js": 608 | let s = require("iconv-lite"); 609 | this.initGotEnv(t), 610 | this.got(t).on("redirect", (t, e) => { 611 | try { 612 | if (t.headers["set-cookie"]) { 613 | const s = t.headers["set-cookie"].map(this.cktough.Cookie.parse).toString(); 614 | s && this.ckjar.setCookieSync(s, null), e.cookieJar = this.ckjar 615 | } 616 | } catch (t) { this.logErr(t) } 617 | }).then(t => { 618 | const { statusCode: a, statusCode: r, headers: i, rawBody: o } = t, 619 | n = s.decode(o, this.encoding); 620 | e(null, { status: a, statusCode: r, headers: i, rawBody: o, body: n }, n) 621 | }, t => { 622 | const { message: a, response: r } = t; 623 | e(a, r, r && s.decode(r.rawBody, this.encoding)) 624 | }) 625 | } 626 | } 627 | post(t, e = (() => {})) { 628 | const s = t.method ? t.method.toLocaleLowerCase() : "post"; 629 | switch (t.body && t.headers && !t.headers["Content-Type"] && !t.headers["content-type"] && 630 | (t.headers["content-type"] = "application/x-www-form-urlencoded"), 631 | t.headers && (delete t.headers["Content-Length"], delete t.headers["content-length"]), 632 | this.getEnv()) { 633 | case "Surge": case "Loon": case "Stash": case "Shadowrocket": default: 634 | this.isSurge() && this.isNeedRewrite && (t.headers = t.headers || {}, 635 | Object.assign(t.headers, { "X-Surge-Skip-Scripting": !1 })), 636 | $httpClient[s](t, (t, s, a) => { 637 | !t && s && (s.body = a, s.statusCode = s.status ? s.status : s.statusCode, s.status = s.statusCode), 638 | e(t, s, a) 639 | }); 640 | break; 641 | case "Quantumult X": 642 | t.method = s, 643 | this.isNeedRewrite && (t.opts = t.opts || {}, Object.assign(t.opts, { hints: !1 })), 644 | $task.fetch(t).then(t => { 645 | const { statusCode: s, statusCode: a, headers: r, body: i, bodyBytes: o } = t; 646 | e(null, { status: s, statusCode: a, headers: r, body: i, bodyBytes: o }, i, o) 647 | }, t => e(t && t.error || "UndefinedError")); 648 | break; 649 | case "Node.js": 650 | let a = require("iconv-lite"); 651 | this.initGotEnv(t); 652 | const { url: r, ...i } = t; 653 | this.got[s](r, i).then(t => { 654 | const { statusCode: s, statusCode: r, headers: i, rawBody: o } = t, 655 | n = a.decode(o, this.encoding); 656 | e(null, { status: s, statusCode: r, headers: i, rawBody: o, body: n }, n) 657 | }, t => { 658 | const { message: s, response: r } = t; 659 | e(s, r, r && a.decode(r.rawBody, this.encoding)) 660 | }) 661 | } 662 | } 663 | time(t, e = null) { 664 | const s = e ? new Date(e) : new Date; 665 | let a = { 666 | "M+": s.getMonth() + 1, 667 | "d+": s.getDate(), 668 | "H+": s.getHours(), 669 | "m+": s.getMinutes(), 670 | "s+": s.getSeconds(), 671 | "q+": Math.floor((s.getMonth() + 3) / 3), 672 | S: s.getMilliseconds() 673 | }; 674 | /(y+)/.test(t) && (t = t.replace(RegExp.$1, (s.getFullYear() + "").substr(4 - RegExp.$1.length))); 675 | for (let e in a) 676 | new RegExp("(" + e + ")").test(t) && 677 | (t = t.replace(RegExp.$1, 1 == RegExp.$1.length ? a[e] : ("00" + a[e]).substr(("" + a[e]).length))); 678 | return t 679 | } 680 | queryStr(t) { 681 | let e = ""; 682 | for (const s in t) { 683 | let a = t[s]; 684 | null != a && "" !== a && ("object" == typeof a && (a = JSON.stringify(a)), e += `${s}=${a}&`) 685 | } 686 | return e = e.substring(0, e.length - 1), e 687 | } 688 | msg(e = t, s = "", a = "", r) { 689 | const i = t => { 690 | switch (typeof t) { 691 | case void 0: return t; 692 | case "string": 693 | switch (this.getEnv()) { 694 | case "Surge": case "Stash": default: return { url: t }; 695 | case "Loon": case "Shadowrocket": return t; 696 | case "Quantumult X": return { "open-url": t }; 697 | case "Node.js": return 698 | } 699 | case "object": 700 | switch (this.getEnv()) { 701 | case "Surge": case "Stash": case "Shadowrocket": default: 702 | { let e = t.url || t.openUrl || t["open-url"]; return { url: e } } 703 | case "Loon": 704 | { let e = t.openUrl || t.url || t["open-url"], s = t.mediaUrl || t["media-url"]; return { openUrl: e, mediaUrl: s } } 705 | case "Quantumult X": 706 | { let e = t["open-url"] || t.url || t.openUrl, s = t["media-url"] || t.mediaUrl, 707 | a = t["update-pasteboard"] || t.updatePasteboard; return { "open-url": e, "media-url": s, "update-pasteboard": a } } 708 | case "Node.js": return 709 | } 710 | default: return 711 | } 712 | }; 713 | if (!this.isMute) 714 | switch (this.getEnv()) { 715 | case "Surge": case "Loon": case "Stash": case "Shadowrocket": default: 716 | $notification.post(e, s, a, i(r)); break; 717 | case "Quantumult X": 718 | $notify(e, s, a, i(r)); break; 719 | case "Node.js": 720 | } 721 | if (!this.isMuteLog) { 722 | let t = ["", "==============📣系统通知📣=============="]; 723 | t.push(e), s && t.push(s), a && t.push(a), 724 | console.log(t.join("\n")), 725 | this.logs = this.logs.concat(t) 726 | } 727 | } 728 | log(...t) { 729 | t.length > 0 && (this.logs = [...this.logs, ...t]), 730 | console.log(t.join(this.logSeparator)) 731 | } 732 | logErr(t, e) { 733 | switch (this.getEnv()) { 734 | case "Surge": case "Loon": case "Stash": case "Shadowrocket": case "Quantumult X": default: 735 | this.log("", `❗️${this.name}, 错误!`, t); break; 736 | case "Node.js": 737 | this.log("", `❗️${this.name}, 错误!`, t.stack) 738 | } 739 | } 740 | wait(t) { return new Promise(e => setTimeout(e, t)) } 741 | done(t = {}) { 742 | const e = (new Date).getTime(), 743 | s = (e - this.startTime) / 1e3; 744 | switch (this.log("", `🔔${this.name}, 结束! 🕛 ${s} 秒`), this.log(), this.getEnv()) { 745 | case "Surge": case "Loon": case "Stash": case "Shadowrocket": case "Quantumult X": default: 746 | $done(t); break; 747 | case "Node.js": 748 | process.exit(1) 749 | } 750 | } 751 | }(t, e) 752 | } 753 | -------------------------------------------------------------------------------- /rewrite.conf: -------------------------------------------------------------------------------- 1 | hostname = api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, mp.weixin.qq.com, www.zhihu.com, api.zhihu.com, link.zhihu.com, aweme*.snssdk.com, *.kuwo.cn, *.xiaoxiao*.com, *.amemv.com, p.du.163.com, getuserinfo.321mh.com, getuserinfo-globalapi.zymk.cn, ios.fuliapps.com, vsco.co, api.vnision.com, *.my10api.com, apple.fuliapps.com, newdrugs.dxy.cn, app101.avictown.cc, api.hlo.xyz, api.ijo.xyz, www.luqijianggushi.com, account.wps.cn, u.kanghuayun.com, api1.dobenge.cn, api.mvmtv.com, mitaoapp.yeduapp.com, origin-prod-phoenix.jibjab.com, www.3ivf.com, pay.guoing.com, api.bjxkhc.com, viva.v21xy.com, biz.caiyunapp.com, ap*.intsig.net, mp.bybutter.com, api.vuevideo.net, api.picsart.c*, api.meiease.c*, ios.xiangjiaoapps.com, apple.xiangjiaoapps.com, *.xiangxiangapps.com, trade-acs.m.taobao.com, api.m.jd.com, ios.prod.ftl.netflix.com, api.gamer.com.tw,greasyfork.org, openuserjs.org, trade-acs.m.taobao.com, *.*apps.com, bea.sportq.com, api.meiyan.com, *.gao1gps.cn, avoscloud.com, app.flashdown365.com, m.samh.xndm.tech, mob2015.kekenet.com, api.m.jd.com, ios.prod.ftl.netflix.com, vipapi.jxedt.com, api.interpreter.caiyunai.com, pocketlists.com, dida365.com, ticktick.com, book.haitunwallet.com, mubu.com, app.xunjiepdf.com, miaow.yiyongcad.com, api.lennou.com, api.gkocr.com, vira.llsapp.com, commerce-.*api.faceu.mobi, commerce-api.faceu.mobi, pan.baidu.com, api.revenuecat.com, api.rr.tv, editorapi.115.com, api.lakecoloring.com, ctrl.playcvn.com, dict.eudic.net, m.client.10010.com, api.wakamoment.ga, *.bh3.com, api.diyidan.net, api.flexibits.com, api.jiaonizuocai.com, api.sololearn.com, tncj.hortorgames.com, bkcd.b-cdn.net, souhu.mett.me, ayk.tmdidi.com, m.pearkin.com, www.baidu.com2.club, claritywallpaper.com, bookapi.ihuman.com, rest.zhibo.tv, note.youdao.com, billing.peakcloud.org, api.ithome.com, www.xmind.cn, *.arten.cn, api.weiqire.com, api.shimo.im, pay.wecut.com, *.videostarapp.com, app.api.versa-ai.com, *.bjxkhc.com, api.591master.com, jdytv.cn, user.shywck.com, *.xunjie*.com, api.psy-1.com, snailsleep.net, api.weibo.cn, mapi.weibo.com, *.uve.weibo.com, mp.weixin.qq.com, api.zhihu.com, link.zhihu.com, aweme*.snssdk.com, *.kuwo.cn, vip1.kuwo.cn,*.xiao*.com, *.xiaoxiao*.com, *.tiktokv.com, *.musical.ly, *.amemv.com, p.du.163.com, getuserinfo.321mh.com, getuserinfo-globalapi.zymk.cn, ios.fuliapps.com,api.vnision.com, *.my10api.com, sp.kaola.com, r.inews.qq.com, apple.fuliapps.com, newdrugs.dxy.cn, app101.avictown.cc, api.hlo.xyz, api.ijo.xyz, www.luqijianggushi.com, account.wps.*, u.kanghuayun.com, api.gyrosco.pe, api1.dobenge.cn, api.mvmtv.com, mitaoapp.yeduapp.com, origin-prod-phoenix.jibjab.com, www.3ivf.com, pay.guoing.com, api.termius.com, api.bjxkhc.com, viva.v21xy.com, biz.caiyunapp.com, api.gotokeep.com, ap*.intsig.net, mp.bybutter.com, api.vuevideo.net, api.picsart.c*, api.meiease.c*, splice.oracle.*.com, api.gamer.com.tw, ios.xiangjiaoapps.com, apple.xiangjiaoapps.com, *.lagoapps.com, api.gamer.com.tw, *.xiangxiangapps.com, avatar-nct.nixcdn.com, spclient.wg.spotify.com, oa.zalo.me, origin-prod-phoenix.jibjab.com, api.meiease.c*, api.unfold.app, viva-asia1.vvbrd.com, graph.nhaccuatui.com, api.memrise.com , api.sync.me, pool.elsanow.io, lambda.us-east-1.amazonaws.com, api.mondlylanguages.com, api.busuu.com, owa.videoshowiosglobalserver.com:0, accounts.elevateapp.net, purchases.ws.pho.to, api-intl.mr.meitu.com, bmall.camera360.com, api.tv.zing.vn, api.calm.com, www.calm.com, api.global.mp3.zing.vn, apimboom2.globaldelight.net, photos.adobe.io, license.pdfexpert.com, subs.platforms.team, apic.musixmatch.com, api.getmimo.com, api.revenuecat.com, engbright.com, api.lingokids.com, www.peacefulsoundsapp.com, duolingo-leaderboards-prod.duolingo.com, mobile-api.adguard.com, api.blinkist.com, api-kinemaster-assetstore.*, api.pushover.net, ap*.intsig.net, api.overhq.com, receipt-validator.herewetest.com, lcs-mobile-cops.adobe.io, education.github.com, backend.getdrafts.com, ssl-api.itranslateapp.com, sk.ulysses.app, dayone.me, license.enpass.io, mp.bybutter.com, *.grammarly.com, splice.oracle.*.com, api.keepkeep.com, planner5d.com, secure.istreamer.com, www.api.monkeyuni.net, api.textnow.me,api.cognitive.microsofttranslator.com,offline.microsofttranslator.com,sf*ttcdn-tos.pstatp.com,oset-api.open-adx.com,qidian.qpic.cn,www.icourse163.org,ulogs.umeng.com,ulogs.umengcloud.com,alogs.umeng.com,alogs.umeng.co,*.byteoversea.com,*.cnbetacdn.com,101.201.62.22,113.105.222.132,113.96.109.*,118.178.214.118,121.14.89.216,121.9.212.178,14.21.76.30,183.232.237.194,183.232.246.225,183.60.159.227,59.37.96.220,789.kakamobi.cn,aarkissltrial.secure2.footprint.net,activity2.api.ofo.com,adm.10jqka.com.cn,adproxy.autohome.com.cn,afd.baidu.com,api.app.vhall.com,api.fengshows.com,api.k.sohu.com,api.laifeng.com,api.m.mi.com,api.mddcloud.com.cn,api-mifit.huami.com,api-mifit-cn.huami.com,app.10086.cn,app.m.zj.chinamobile.com,app2.autoimg.cn,appsdk.soku.com,atrace.chelaile.net.cn,capi.douyucdn.cn,cdn.kuaidi100.com,classbox2.kechenggezi.com,connect.facebook.net,creatives.ftimg.net,d.1qianbao.com,dapis.mting.info,dl.app.gtja.com,dongfeng.alicdn.com,dsp-impr2.youdao.com,erebor.douban.com,fm.fenqile.com,fuss10.elemecdn.com,g1.163.com,gorgon.youdao.com,hm.xiaomi.com,hui.sohu.com,i1.hoopchina.com.cn,iface2.iqiyi.com,img.zuoyebang.cc,img1.126.net,impservice.dictapp.youdao.com,impservice.youdao.com,kano.guahao.cn,lf.snssdk.com,lives.l.qq.com,m.aty.sohu.com,m5.amap.com,ma.ofo.com,mage.if.qidian.com,mapi.appvipshop.com,mbl.56.com,mimg.127.net,mmg.aty.sohu.com,mmgr.gtimg.com,nex.163.com,oimagea4.ydstatic.com,oimagec2.ydstatic.com,p.kuaidi100.com,p1.music.126.net,pic.k.sohu.com,pic1.chelaile.net.cn,ress.dxpmedia.com,rm.aarki.net,sso.ifanr.com,static.api.m.panda.tv,staticlive.douyucdn.cn,storage.wax.weibo.com,supportda.ofo.com,ups.youku.com,wapwenku.baidu.com,wenku.baidu.com,www.facebook.com,www.ft.com,www.oschina.net,api-mifit.huami.com,api-163.biliapi.net,pan-api.bitqiu.com,api.feng.com,m.tuniu.com,img.meituan.net,sdkapp.uve.weibo.com,ptmpcap.caocaokeji.cn,creditcardapp.bankcomm.com,newapp.szsmk.com,client.qunar.com,mpcs.suning.com,api2.helper.qq.com,cdnfile1.msstatic.com,res.xiaojukeji.com,cube.elemecdn.com,dimg04.c-ctrip.com,prom.mobile.gome.com.cn,y.gtimg.cn,du.hupucdn.com,interfac*.music.163.com,yxyapi2.drcuiyutao.com,api.vistopia.com.cn,capis-clb.didapinche.com,api.jxedt.com,mi.gdt.qq.com,richmanapi.jxedt.com,nfmovies.com, emdcadvertise.eastmoney.com,101.201.175.228,182.92.251.113,accounts.elevateapp.net, apimboom2.globaldelight.net, apic.musixmatch.com, vsco.co, ap*.intsig.net, api.vuevideo.net, api.m.jd.com, ios.prod.ftl.netflix.com, trade-acs.m.taobao.com, m.client.10010.com, billing.peakcloud.org, app.bilibili.com, api.bilibili.com, api.live.bilibili.com, ai.ablesky.com, api.weibo.com, mapi.weibo.com, mobile.ablesky.com, www.ablesky.com, mobilebj.cn, 10086.online-cmcc.cn, sapi.beingfine.cn, 121.43.19.216,h5.youzan.com, glados.rocks, mapi.weibo.com, 10086.online-cmcc.cn, 121.43.19.216, sapi.beingfine.cn, mobilebj.cn, api.gotokeep.com,homepage-api.smzdm.com,haojia-api.smzdm.com,article-api.smzdm.com, jdjoy.jd.com, article-api.smzdm.com,haojia.m.smzdm.com,app-api.smzdm.com,s-api.smzdm.com,m.xiaomiyoupin.com,*.bilibili.com, api.vc.bilibili.com,www.zhihu.com,api.zhihu.com,appcloud2.zhihu.com,zhuanlan.zhihu.com, baike-api.smzdm.com, zhiyou.m.smzdm.com, mp.weixin.qq.com, hostname = ap*.intsig.net 2 | 3 | # 好价详情页去广告 4 | ^https?:\/\/haojia\.m\.smzdm\.com\/detail_modul\/other_modul url reject 5 | # 好价详情页红包小助手 6 | ^https?:\/\/haojia\.m\.smzdm\.com\/detail_modul\/user_related_modul url reject 7 | # Wiki(618晒物活动推广,将来可能不是广告) 8 | ^https?:\/\/haojia\.m\.smzdm\.com\/detail_modul\/wiki_related_modul url reject 9 | 10 | # 开屏去广告 11 | ^https?:\/\/app-api\.smzdm\.com\/util\/loading url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 12 | # 首页去广告 13 | ^https?:\/\/homepage-api\.smzdm\.com\/v3\/home url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 14 | # 好价去广告 15 | ^https?:\/\/haojia-api\.smzdm\.com\/home\/list url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 16 | # 好价详情页去广告 17 | ^https?:\/\/haojia\.m\.smzdm\.com\/detail_modul\/article_releated_modul url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 18 | # 百科去广告 19 | ^https?:\/\/baike-api\.smzdm\.com\/home_v3\/list url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 20 | # 搜索结果去广告 21 | ^https?:\/\/s-api\.smzdm\.com\/sou\/list_v10 url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 22 | # 搜索标签去广告 23 | ^https?:\/\/s-api\.smzdm\.com\/sou\/filter\/tags\/hot_tags url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 24 | # 值会员权益中心banner广告 25 | ^https?:\/\/zhiyou\.m\.smzdm\.com\/user\/vip\/ajax_get_banner url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/smzdm/smzdm_remove_ads.js 26 | 27 | 28 | 29 | # 去微博应用内广告 (By yichahucha) 30 | ^https?://(sdk|wb)app.uve.weibo.com(/interface/sdk/sdkad.php|/wbapplua/wbpullad.lua) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_launch.js 31 | ^https?://m?api.weibo.c(n|om)/2/(statuses/(unread|extend|positives/get|(friends|video)(/|_)(mix)?timeline)|stories/(video_stream|home_list)|(groups|fangle)/timeline|profile/statuses|comments/build_comments|photo/recommend_list|service/picfeed|searchall|cardlist|page|!/photos/pic_recommend_status|video/tiny_stream_video_list) url script-response-body https://raw.githubusercontent.com/yichahucha/surge/master/wb_ad.js 32 | 33 | # 去微信公众号广告 (By NobyDa) 34 | ^https?:\/\/mp\.weixin\.qq\.com\/mp\/getappmsgad url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/QuantumultX/File/Wechat.js 35 | 36 | # 知乎去广告 (By onewayticket255&blackmatrix7) 37 | # 知乎处理用户信息 38 | ^https?:\/\/api\.zhihu\.com\/people\/ url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 39 | # 知乎信息流去广告 40 | ^https?:\/\/api\.zhihu\.com\/(moments|topstory)(\/|\?)?(recommend|action=|feed_type=)(?!\/people) url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 41 | # 知乎回答列表去广告 42 | ^https?:\/\/api\.zhihu\.com\/v4\/questions url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 43 | # 知乎获取黑名单 44 | ^https?:\/\/api\.zhihu\.com\/settings\/blocked_users url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 45 | # 知乎官方消息去广告 46 | ^https?:\/\/api\.zhihu\.com\/notifications\/v3\/(message\?|timeline\/entry\/system_message) url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 47 | # 知乎预置关键词去广告 48 | ^https?:\/\/api\.zhihu\.com\/search\/preset_words\? url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 49 | # 优化软件配置 50 | ^https?:\/\/appcloud2\.zhihu\.com\/v\d+\/config url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 51 | # 知乎热搜去广告 52 | ^https?:\/\/api\.zhihu\.com\/search\/top_search\/tabs\/hot\/items url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 53 | # 知乎热榜去广告 54 | ^https?:\/\/api\.zhihu\.com\/topstory\/hot-lists?(\?|\/) url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 55 | # 知乎评论去广告 56 | ^https?:\/\/api\.zhihu\.com\/(comment_v5\/)?(answers|comments?|articles|pins)\/\d+\/(root_|child_)?comments? url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 57 | # 知乎回答内容优化 58 | ^https?:\/\/www\.zhihu\.com\/appview\/v2\/answer\/.*(entry=(?!(preload-topstory|preload-search|preload-subscription)))? url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 59 | # 知乎屏蔽关键词解锁 60 | ^https?:\/\/api\.zhihu\.com\/feed-root\/block url script-analyze-echo-response https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/zhihu/zhihu_plus.js 61 | # 知乎去除最常访问 62 | ^https?:\/\/api\.zhihu\.com\/moments\/recent url reject-dict 63 | # 知乎去除回答下的广告 64 | ^https?:\/\/www\.zhihu\.com\/api\/v4\/answers\/\d+\/recommendations url reject-dict 65 | # 知乎其他广告拦截 66 | ^https?:\/\/api\.zhihu\.com\/(notifications\/v3\/count|v3\/package|me\/guides|drama\/living-info|ad|fringe|commercial|market\/popovers|.*featured-comment-ad) url reject-dict 67 | # 知乎拦截部分预加载 68 | # ^https?:\/\/www\.zhihu\.com\/appview\/(p|v2\/answer|zvideo)\/.*entry=(preload-topstory|preload-search|preload-subscription) url reject-dict 69 | # 知乎网页版去广告 70 | ^https?:\/\/www\.zhihu\.com\/api\/v4/(questions|anwsers)\/\d+/related-readings url reject-dict 71 | ^https?:\/\/www\.zhihu\.com\/api\/v4\/hot_recommendation url reject-dict 72 | ^https?:\/\/www\.zhihu\.com\/commercial_api\/banners_v3\/mobile_banner url reject-dict 73 | ^https?:\/\/zhuanlan\.zhihu\.com\/api\/articles\/\d+\/recommendation url reject-dict 74 | # 知乎品牌提问广告 75 | ^https?:\/\/api\.zhihu\.com\/brand\/question\/\d+/card\? url reject-dict 76 | ^https?:\/\/www\.zhihu\.com\/api\/v\d+\/brand\/question/\d+/card\? url reject-dict 77 | # 屏蔽消息页面上拉的用户精选 78 | ^https?:\/\/api\.zhihu\.com/moments/hybrid\? url reject-dict 79 | # 知乎下发的配置,如皮肤等,目前已知会导致Tab页管理功能失效 80 | ^https?:\/\/api\.zhihu\.com\/ab\/api\/v1\/products\/zhihu\/platforms\/ios\/config url reject-200 81 | 82 | # 知乎网页版去广告 83 | ^https?:\/\/www\.zhihu\.com\/api\/v4/(questions|anwsers)\/\d+/related-readings url reject-200 84 | ^https?:\/\/www\.zhihu\.com\/api\/v4\/hot_recommendation url reject-200 85 | ^https?:\/\/www\.zhihu\.com\/commercial_api\/banners_v3\/mobile_banner url reject-200 86 | ^https?:\/\/zhuanlan\.zhihu\.com\/api\/articles\/\d+\/recommendation url reject-200 87 | https://api.zhihu.com/(ad|drama|fringe|commercial|market/popover|search/(top|preset|tab)|.*featured-comment-ad) url reject-200 88 | https://api.zhihu.com/people/ url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20people.js 89 | https://api.zhihu.com/moments/recommend url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20feed.js 90 | https://api.zhihu.com/topstory/recommend url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20recommend.js 91 | https://api.zhihu.com/v4/questions url script-response-body https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20answer.js 92 | https?://link.zhihu.com/\?target= url script-request-header https://raw.githubusercontent.com/onewayticket255/Surge-Script/master/surge%20zhihu%20link.js 93 | 94 | # 哔哩哔哩动画去广告 (By onewayticket255&blackmatrix7) 95 | # 去除动态中的话题 96 | ^https?:\/\/api\.vc\.bilibili\.com\/topic_svr\/v1\/topic_svr url reject-dict 97 | # 去除动态中的最常访问 98 | ^https?:\/\/api\.vc\.bilibili\.com\/dynamic_svr\/v1\/dynamic_svr\/mix_uplist url reject-dict 99 | # 可能的一些推广(beta) 100 | ^https?:\/\/api\.bilibili\.com\/pgc\/season\/app\/related\/recommend\? url reject-dict 101 | # 推荐去广告 102 | ^https?:\/\/app\.bilibili\.com\/x\/v2\/feed\/index url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/bilibili/bilibili_plus.js 103 | # 追番去广告 104 | ^https?:\/\/api\.bilibili\.com\/pgc\/page\/bangumi url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/bilibili/bilibili_plus.js 105 | # 直播去广告 106 | ^https?:\/\/api\.live\.bilibili\.com\/xlive\/app-room\/v1\/index\/getInfoByRoom url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/bilibili/bilibili_plus.js 107 | # 动态去广告 108 | ^https?:\/\/api\.vc\.bilibili\.com\/dynamic_svr\/v1\/dynamic_svr\/dynamic_(history|new)\? url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/bilibili/bilibili_plus.js 109 | # 开屏去广告 110 | ^https?:\/\/app\.bilibili\.com\/x\/v2\/splash\/list url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/bilibili/bilibili_plus.js 111 | # 标签页处理 112 | ^https?:\/\/app\.bilibili\.com\/x\/resource\/show\/tab url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/bilibili/bilibili_plus.js 113 | # 我的页面处理 114 | ^https?:\/\/app\.bilibili\.com\/x\/v2\/account\/mine url script-response-body https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/bilibili/bilibili_plus.js 115 | # 漫画去广告 116 | ^https?:\/\/manga\.bilibili\.com\/twirp\/comic\.v\d\.Comic\/Flash url reject-dict 117 | ^https?:\/\/manga\.bilibili\.com\/twirp\/comic\.v\d\.Comic\/ListFlash url reject-dict 118 | 119 | 120 | # 扫描全能王 pro 121 | ^https:\/\/(api|api-cs)\.intsig\.net\/purchase\/cs\/query_property\? url script-response-body https://raw.githubusercontent.com/NobyDa/Script/master/Surge/JS/CamScanner.js 122 | 123 | #联通营业厅 去轮播广告 (By Wangsc1) 124 | ^https?://m.client.10010.com/uniAdmsInterface/getHomePageAd url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/china_unicom.js 125 | 126 | #菜谱大全解锁vip (By @photonmang) 127 | https?:\/\/api\.jiaonizuocai\.com url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/cpdq.js 128 | 129 | # 有道云笔记VIP (ByAlex0510) 130 | https://note.youdao.com/yws/(mapi/payment|api/self) url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/ydybj.js 131 | 132 | # IT之家 去新闻列表广告 133 | ^https?:\/\/api\.ithome\.com\/json\/slide\/index url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/ITHome.js 134 | ^https?:\/\/api\.ithome\.com\/json\/(newslist|listpage)\/news url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/ITHome.js 135 | 136 | # 美颜相机一次性解锁内购(by黑黑酱) 137 | ^https:\/\/api\.meiyan\.com\/iap\/verify\.json url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/myxj.js 138 | 139 | # Fit健身会员 (by黑黑酱) 140 | ^https:\/\/bea\.sportq\.com\/SFitWeb\/sfit\/getUserBaseInfo url script-response-body https://raw.githubusercontent.com/nzw9314/QuantumultX/master/Script/fit.js 141 | 142 | # 油猴转换器 (by Peng-YM) 143 | https:\/\/greasyfork\.org\/scripts\/.*\.user\.js url script-response-body https://raw.githubusercontent.com/Peng-YM/QuanX/master/Rewrites/GreasyFork/greasy-fork.js 144 | 145 | # evilbutcher 146 | #微博去广告 147 | https:\/\/api\.weibo\.com\/oauth2\/getaid url reject 148 | 149 | #keep 150 | https:\/\/api\.gotokeep\.com\/ads\/v1\/ads\?spotIds url reject 151 | 152 | #10086去开屏广告 153 | https:\/\/10086\.online\-cmcc\.cn\:20010\/gfms\/front\/hn\/busi3\!getAdvert url script-response-body https://raw.githubusercontent.com/evilbutcher/Quantumult_X/master/remove_ad/10086.js 154 | -------------------------------------------------------------------------------- /shareCode-auto.js: -------------------------------------------------------------------------------- 1 | const $ = new Env("互助码"); 2 | const shareCodes = [ 3 | { 4 | zd: $.getdata("zd_shareCode1") || "z4fy6eswungwmslapj7g2kwrwlnwdefazsazssi", 5 | nc: $.getdata("nc_shareCode1") || "01f568f61e494fae9e32854df77ce6e7", 6 | mc: $.getdata("mc_shareCode1") || "MTAxODc2NTEzOTAwMDAwMDAzMzU4NzU2OQ==", 7 | //ddgc: $.getdata("dd_shareCode1") || "P04z54XCjVWnYaS5jYNDWX72HlXltIRy4Jot-E", 8 | jxgc: $.getdata("jx_shareCode1") || "wuvqpko2F3tj8Yvrdbft0A==", 9 | jdzz: $.getdata("jd_shareCode1") || "Svfh2RR0c8EnUJR3znfQJdA", 10 | jcj: $.getdata("jc_shareCode1") || "f14yCI8QvHeosK7_3kWvOat9zd5YaBeE", 11 | }, 12 | { 13 | zd: $.getdata("zd_shareCode2") || "4npkonnsy7xi3pzaezezc7plx2o32nlk4ih2jna", 14 | nc: $.getdata("nc_shareCode2") || "5a1b6cd9cc62446cb5ec05e3ef3d7821", 15 | mc: $.getdata("mc_shareCode2") || "MTE1NDQ5OTUwMDAwMDAwNDI1OTMxNDE=", 16 | //ddgc: $.getdata("dd_shareCode2") || "P04z54XCjVWnYaS5m9cZ2f5231LknLSN7iRCqE", 17 | jxgc: $.getdata("jx_shareCode2") || "UdXIG7xaeRenKkCRnXA4bA==", 18 | jdzz: $.getdata("jd_shareCode2") || "S5KkcRx8f9FXQJRiikP9YJg", 19 | jcj: $.getdata("jc_shareCode2") || "zCx4mMEE_YXS3Bv8bX2reqt9zd5YaBeE", 20 | }, 21 | ]; 22 | $.result = []; 23 | $.random = Math.floor(Math.random() * 60); 24 | 25 | !(async () => { 26 | console.log(`\n此脚本延迟${$.random}秒执行\n`); 27 | for (let i = 0; i < shareCodes.length; i++) { 28 | const { jdzz,jcj,zd,nc,mc,jxgc } = shareCodes[i]; 29 | await $.wait($.random); 30 | jdzz && 31 | (await create( 32 | `https://code.chiang.fun/api/v1/jd/jdzz/create/${jdzz}/`, 33 | "京东赚赚" 34 | )); 35 | await $.wait($.random); 36 | jcj && 37 | (await create( 38 | `https://code.chiang.fun/api/v1/jd/jdcrazyjoy/create/${jcj}/`, 39 | "京东carzy joy" 40 | )); 41 | await $.wait($.random); 42 | zd && 43 | (await create( 44 | `http://api.turinglabs.net/api/v1/jd/bean/create/${zd}/`, 45 | "种豆得豆" 46 | )); 47 | await $.wait($.random); 48 | nc && 49 | (await create( 50 | `http://api.turinglabs.net/api/v1/jd/farm/create/${nc}/`, 51 | "东东农场" 52 | )); 53 | await $.wait($.random); 54 | mc && 55 | (await create( 56 | `http://api.turinglabs.net/api/v1/jd/pet/create/${mc}/`, 57 | "东东萌宠" 58 | )); 59 | //await $.wait($.random); 60 | //ddgc && 61 | //(await create( 62 | //`http://api.turinglabs.net/api/v1/jd/ddfactory/create/${ddgc}/`, 63 | //"东东工厂" 64 | //)); 65 | await $.wait($.random); 66 | jxgc && 67 | (await create( 68 | `http://api.turinglabs.net/api/v1/jd/jxfactory/create/${jxgc}/`, 69 | "京喜工厂" 70 | )); 71 | } 72 | await showMsg(); 73 | })() 74 | .catch((e) => $.logErr(e)) 75 | .finally(() => $.done()); 76 | 77 | function create(path, name) { 78 | return new Promise((resolve) => { 79 | const url = { url: path }; 80 | $.get(url, async (err, resp, data) => { 81 | if (err) { 82 | $.log(JSON.stringify(err)); 83 | resolve(err); 84 | return; 85 | } 86 | try { 87 | const needAgain = await checkWhetherNeedAgain(resp, create, path, name); 88 | if (needAgain) return; 89 | const { message } = JSON.parse(data); 90 | const { msg } = JSON.parse(data); 91 | $.log(`\n${message}\n${data}`); 92 | $.result.push(`${name}: ${message}`); 93 | } catch (e) { 94 | $.logErr(e, resp); 95 | } finally { 96 | resolve(); 97 | } 98 | }); 99 | }); 100 | } 101 | 102 | function checkWhetherNeedAgain(resp, fun, url, name) { 103 | return new Promise(async (resolve) => { 104 | if ((resp && resp.statusCode !== 200) || !resp.body) { 105 | await $.wait($.random); 106 | await fun(url, name); 107 | resolve(true); 108 | } else { 109 | resolve(false); 110 | } 111 | }); 112 | } 113 | 114 | function showMsg() { 115 | return new Promise((resolve) => { 116 | $.msg($.name, "", $.result.join("\n")); 117 | resolve(); 118 | }); 119 | } 120 | 121 | // prettier-ignore 122 | 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)} 123 | -------------------------------------------------------------------------------- /shareCode-backup.js: -------------------------------------------------------------------------------- 1 | const $ = new Env("互助码"); 2 | const shareCodes = [ 3 | { 4 | zd: $.getdata("zd_shareCode1") || "z4fy6eswungwmslapj7g2kwrwlnwdefazsazssi", 5 | nc: $.getdata("nc_shareCode1") || "01f568f61e494fae9e32854df77ce6e7", 6 | mc: $.getdata("mc_shareCode1") || "MTAxODc2NTEzOTAwMDAwMDAzMzU4NzU2OQ==", 7 | ddgc: $.getdata("dd_shareCode1") || "P04z54XCjVWnYaS5jYNDWX72HlXltIRy4Jot-E", 8 | jxgc: $.getdata("jx_shareCode1") || "wuvqpko2F3tj8Yvrdbft0A==", 9 | }, 10 | { 11 | zd: $.getdata("zd_shareCode2") || "4npkonnsy7xi3pzaezezc7plx2o32nlk4ih2jna", 12 | nc: $.getdata("nc_shareCode2") || "5a1b6cd9cc62446cb5ec05e3ef3d7821", 13 | mc: $.getdata("mc_shareCode2") || "MTE1NDQ5OTUwMDAwMDAwNDI1OTMxNDE=", 14 | ddgc: $.getdata("dd_shareCode2") || "P04z54XCjVWnYaS5m9cZ2f5231LknLSN7iRCqE", 15 | jxgc: $.getdata("jx_shareCode2") || "UdXIG7xaeRenKkCRnXA4bA==", 16 | }, 17 | ]; 18 | $.result = []; 19 | $.random = Math.floor(Math.random() * 60); 20 | 21 | !(async () => { 22 | console.log(`\n此脚本延迟${$.random}秒执行\n`); 23 | for (let i = 0; i < shareCodes.length; i++) { 24 | const { zd, nc, mc, ddgc, jxgc } = shareCodes[i]; 25 | await $.wait($.random); 26 | zd && 27 | (await create( 28 | `http://api.turinglabs.net/api/v1/jd/bean/create/${zd}/`, 29 | "种豆得豆" 30 | )); 31 | await $.wait($.random); 32 | nc && 33 | (await create( 34 | `http://api.turinglabs.net/api/v1/jd/farm/create/${nc}/`, 35 | "东东农场" 36 | )); 37 | await $.wait($.random); 38 | mc && 39 | (await create( 40 | `http://api.turinglabs.net/api/v1/jd/pet/create/${mc}/`, 41 | "东东萌宠" 42 | )); 43 | await $.wait($.random); 44 | ddgc && 45 | (await create( 46 | `http://api.turinglabs.net/api/v1/jd/ddfactory/create/${ddgc}/`, 47 | "东东工厂" 48 | )); 49 | await $.wait($.random); 50 | jxgc && 51 | (await create( 52 | `http://api.turinglabs.net/api/v1/jd/jxfactory/create/${jxgc}/`, 53 | "京喜工厂" 54 | )); 55 | } 56 | await showMsg(); 57 | })() 58 | .catch((e) => $.logErr(e)) 59 | .finally(() => $.done()); 60 | 61 | function create(path, name) { 62 | return new Promise((resolve) => { 63 | const url = { url: path }; 64 | $.get(url, async (err, resp, data) => { 65 | if (err) { 66 | $.log(JSON.stringify(err)); 67 | resolve(err); 68 | return; 69 | } 70 | try { 71 | const needAgain = await checkWhetherNeedAgain(resp, create, path, name); 72 | if (needAgain) return; 73 | const { message } = JSON.parse(data); 74 | $.log(`\n${message}\n${data}`); 75 | $.result.push(`${name}: ${message}`); 76 | } catch (e) { 77 | $.logErr(e, resp); 78 | } finally { 79 | resolve(); 80 | } 81 | }); 82 | }); 83 | } 84 | 85 | function checkWhetherNeedAgain(resp, fun, url, name) { 86 | return new Promise(async (resolve) => { 87 | if ((resp && resp.statusCode !== 200) || !resp.body) { 88 | await $.wait($.random); 89 | await fun(url, name); 90 | resolve(true); 91 | } else { 92 | resolve(false); 93 | } 94 | }); 95 | } 96 | 97 | function showMsg() { 98 | return new Promise((resolve) => { 99 | $.msg($.name, "", $.result.join("\n")); 100 | resolve(); 101 | }); 102 | } 103 | 104 | // prettier-ignore 105 | 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)} 106 | -------------------------------------------------------------------------------- /wxgetcookie.js: -------------------------------------------------------------------------------- 1 | /* 2 | # 监听签到请求以提取 mallId 和 token 3 | [rewrite_local] 4 | ^https://m\.mallcoo\.cn/api/user/User/CheckinV2 url script-request-body https://raw.githubusercontent.com/Jone2008/QuantumultX/refs/heads/master/wxgetcookie.js 5 | 6 | # MITM 配置 7 | [mitm] 8 | hostname = m.mallcoo.cn 9 | */ 10 | 11 | // Quantumult X 脚本:自动获取 mallId 和 token 并打印 12 | const urlPattern = "https://m.mallcoo.cn/api/user/User/CheckinV2"; 13 | 14 | // 检查是否是目标请求 15 | if ($request.url.indexOf(urlPattern) !== -1 && $request.method === "POST") { 16 | try { 17 | // 检查请求体是否存在 18 | if (!$request.body) { 19 | throw new Error("请求体为空"); 20 | } 21 | 22 | let mallId, token; 23 | 24 | // 解析 JSON 格式(根据抓包确认是 application/json) 25 | const requestBody = JSON.parse($request.body); 26 | if (requestBody && typeof requestBody === 'object') { 27 | // 支持 MallId 和 MallID(大小写不敏感) 28 | mallId = requestBody.MallId !== undefined ? requestBody.MallId : requestBody.MallID; 29 | // 检查 Header 是否存在,并支持 Token 的变体 30 | token = requestBody.Header && (requestBody.Header.Token || requestBody.Header.token); 31 | 32 | // 检查 mallId 是否有效 33 | if (mallId === undefined || mallId === null) { 34 | throw new Error("mallId 未定义或为空"); 35 | } 36 | // 检查 token 是否有效 37 | if (token === undefined || token === null) { 38 | throw new Error("token 未定义或为空"); 39 | } 40 | } else { 41 | throw new Error("请求体不是有效的 JSON 对象"); 42 | } 43 | 44 | // 存储 mallId 和 token 到持久化存储 45 | $prefs.setValueForKey(mallId.toString(), "mallId_" + mallId); 46 | $prefs.setValueForKey(token, "token_" + mallId); 47 | 48 | // 打印获取的数据 49 | const message = `捕获成功:\nmallId: ${mallId}\ntoken: ${token}`; 50 | console.log(message); // 输出到 Quantumult X 日志 51 | $notify("参数捕获成功", "", message); // 发送通知 52 | } catch (e) { 53 | const errorMessage = `捕获失败: ${e.message}\n请求体: ${$request.body}`; 54 | console.log(errorMessage); 55 | $notify("参数捕获失败", "", errorMessage); 56 | } 57 | } 58 | 59 | $done(); 60 | --------------------------------------------------------------------------------