Compare commits
78 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9f32bc990d | ||
|
|
3a981f24e3 | ||
|
|
a626283b54 | ||
|
|
12eaf89f48 | ||
|
|
5e1331bad0 | ||
|
|
e44418d381 | ||
|
|
c86f1e509b | ||
|
|
f7f2421843 | ||
|
|
014486e558 | ||
|
|
ce4a40d860 | ||
|
|
36847aeaa2 | ||
|
|
43adf55a4b | ||
|
|
838dc01ebc | ||
|
|
641055ab74 | ||
|
|
5c19b6a6e1 | ||
|
|
af2570f15d | ||
|
|
df77f397aa | ||
|
|
d6dee813c5 | ||
|
|
d20f576908 | ||
|
|
17dd927719 | ||
|
|
bff49cd2b9 | ||
|
|
49090f1b97 | ||
|
|
15324d0840 | ||
|
|
8b632fe4f9 | ||
|
|
11ff23bf94 | ||
|
|
332765a72e | ||
|
|
38869e8681 | ||
|
|
85cd1dc594 | ||
|
|
55f7ee0c8c | ||
|
|
d24be4da0b | ||
|
|
ae36155545 | ||
|
|
dc5560f8fd | ||
|
|
18985cb57d | ||
|
|
830d62ead8 | ||
|
|
5c8d9d6096 | ||
|
|
22d26079e4 | ||
|
|
c564ea0ab8 | ||
|
|
ec7bf0f2b9 | ||
|
|
be241ab6bd | ||
|
|
4b2985b4ef | ||
|
|
d4afb57f9f | ||
|
|
230a59bbb3 | ||
|
|
f4a5cf8306 | ||
|
|
b606fe02ff | ||
|
|
3375356143 | ||
|
|
d9255ecbca | ||
|
|
6ad6f6b4b3 | ||
|
|
a8caea3b6d | ||
|
|
1a49e18200 | ||
|
|
c223d7a476 | ||
|
|
eaa51358a8 | ||
|
|
00827b3b15 | ||
|
|
ccddaf4386 | ||
|
|
0f0ba46989 | ||
|
|
f83db38a6b | ||
|
|
ba5582ab4c | ||
|
|
fb4e1d9b31 | ||
|
|
2dea6e382b | ||
|
|
fa8eada97b | ||
|
|
c102f66234 | ||
|
|
68a50fdb4a | ||
|
|
aac83acb8f | ||
|
|
4be4d5e9ef | ||
|
|
1f925b307f | ||
|
|
49afe032d6 | ||
|
|
f0f054c8cd | ||
|
|
699e9ca31a | ||
|
|
76cace4ff6 | ||
|
|
9f3218ab7f | ||
|
|
8a61f518f5 | ||
|
|
e9d5023263 | ||
|
|
05b1e21bba | ||
|
|
4a496fdab3 | ||
|
|
8ae3a6534d | ||
|
|
3269376c94 | ||
|
|
7a92de4d62 | ||
|
|
5fbc1e3fb3 | ||
|
|
d73c3154f9 |
4
.github/workflows/daily_keywords.yml
vendored
4
.github/workflows/daily_keywords.yml
vendored
@@ -2,8 +2,8 @@ name: Daily Data Factory
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# 每天 UTC 18:00 (北京时间凌晨 02:00) 执行,赶在节点凌晨3点更新前造好子弹
|
||||
- cron: '0 18 * * *'
|
||||
# 每天 UTC 03:00 执行,为各节点全天随机拉取准备好弹药
|
||||
- cron: '0 3 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
|
||||
4
.github/workflows/ua_factory.yml
vendored
4
.github/workflows/ua_factory.yml
vendored
@@ -2,8 +2,8 @@ name: Automated Massive UA Factory
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# 每个月 1 号凌晨 00:00 执行
|
||||
- cron: '0 0 1 * *'
|
||||
# 每个月 1 号凌晨 04:00 执行
|
||||
- cron: '0 4 1 * *'
|
||||
workflow_dispatch: # 允许手动点击运行
|
||||
|
||||
jobs:
|
||||
|
||||
28
README.md
28
README.md
@@ -12,18 +12,18 @@
|
||||
|
||||
## ✨ 核心极客特性 (Core Architecture)
|
||||
|
||||
- 📊 **深海声呐全维探针 (Deep Sea Sonar v4.0)**:内嵌强效正则清洗的 JSON 提取引擎,异步生成情报级 IP 质量战报。聚合 Scamalytics、AbuseIPDB 等五大权威防欺诈库,精准嗅探代理/VPN特征、25端口封堵情况及原生流媒体(Netflix/Disney+/TikTok等)解锁状态,并自带 Google “送中”高危预警与基于 SQLite 的历史污染趋势追踪图谱。
|
||||
- ⚡ **无损高并发引擎 (WAL Concurrency)**:司令部 SQLite 数据库全面激活 `WAL` (Write-Ahead Logging) 模式与毫秒级排队削峰算法。即使您同时对 500 台边缘节点发起全军总攻,也能完美规避 `database is locked` 与 Telegram `429` 频率拦截,实现 100% 战报送达。
|
||||
- 🪶 **抽脂级极简部署 (Zero-Bloat Native)**:全栈剔除 `pip`、`flask` 等臃肿第三方依赖,完全基于 Python3 原生标准库运行。安装底层强制注入 `--no-install-recommends` 防捆绑参数。无论是 128MB 内存的极简 NAT 小鸡,还是 Alpine/Arch Linux 特种系统,均可如丝般顺滑运行。
|
||||
- 🎛️ **扁平化指挥矩阵 (Flat Command Matrix)**:[v3.6.1 重构] 引入扁平化 L0-L3 四级战区降维视图与双轨身份制。深度定制 Inline Keyboard 逃生舱交互,支持在统一哨兵终端进行原位丝滑重绘 (In-place UI Edit),实现毫秒级模块热启停与日志抓取,彻底告别刷屏烦恼。
|
||||
- 🔄 **全栈零信任 OTA 引擎 (Zero-Trust OTA Upgrade)**:首创双端物理熔断机制。长官可通过私有中枢,一键向全舰队下发静默热重载指令;更支持**「司令部金蝉脱壳」**,中枢大脑可在此面板自我抛出幽灵进程进行免交互直装覆盖,实现真正的全栈去 SSH 化运维。
|
||||
- 🛡️ **SSOT 溯源与热更新装甲 (Smooth Upgrade Engine)**:全系脚本彻底消灭硬编码,部署时动态抓取云端版本信标。自带状态机嗅探逻辑与防撞甲探测,即使是手动在终端运行安装,也仅需回车瞬间完成配置继承、数据同步与无损换代。
|
||||
- 🗺️ **全球拓扑矩阵与活体词库 (Global Nexus)**:守护版图横跨亚欧美三大洲。接入 GitHub Actions 云端流水线,每日静默同步全球各大区当日 Google 真实热搜榜单与高权重本土站点,让伪装行为永远贴合当地网络脉搏。
|
||||
- 👻 **资产持久化与错峰调度 (Hash-Seeded Persona)**:摒弃随机抽取指纹,基于节点物理 IP 哈希永久锁定 3 个绝对专属设备,完美构建高权重真实家庭内网画像。叠加按需智能分频与随机防并发休眠,化解“惊群效应”。
|
||||
- 🖧 **底层路由死锁与高精度探针 (Hard-Bind Routing)**:底层探测引擎强力接管 curl 核心参数 (`--interface`),将发出的每一滴伪装流量死死绑定在物理网卡或隧道 IP 上。配合多级 ISP 容灾链路,彻底杜绝双栈环境下的流量溢出与 API 误判。
|
||||
- 📊 **深海声呐全维探针 (Deep Sea Sonar v4.0.4)**:内嵌强效正则去污的 JSON 提取引擎,无损展现免掩码的真实 IP 情报。聚合 Scamalytics、AbuseIPDB 等五大权威防欺诈库,精准嗅探代理/VPN特征、25端口及流媒体原生解锁状态,并自带 Google “送中”高危预警与污染趋势图谱。
|
||||
- ⚡ **无损高并发引擎 (WAL Concurrency)**:司令部 SQLite 数据库全面激活 `WAL` (Write-Ahead Logging) 模式与毫秒级排队算法。即使对 500 台边缘节点发起全军总攻,也能完美规避 `database is locked` 与 Telegram `429` 拦截。
|
||||
- 🪶 **抽脂级极简部署 (Zero-Bloat Native)**:全栈剔除第三方依赖,基于 Python3 原生标准库运行。安装强制注入 `--no-install-recommends` 防捆绑参数。无论是 128MB 内存的极简 NAT,还是 Alpine 游击队容器,均可如丝般顺滑运行。
|
||||
- 🎛️ **扁平化指挥矩阵 (Flat Command Matrix)**:引入扁平化四级战区降维视图与双轨身份制。深度定制 Inline Keyboard 逃生舱交互,支持原位丝滑重绘 (In-place UI Edit),实现毫秒级模块热启停与跨地域深海声呐投放。
|
||||
- 🔄 **全栈零信任 OTA 引擎 (Zero-Trust OTA Upgrade)**:首创双端物理熔断机制。长官可通过私有中枢,一键向全舰队下发静默热重载指令;更支持**「司令部金蝉脱壳」**,实现真正的全栈去 SSH 化运维。
|
||||
- 🛡️ **SSOT 溯源与热更新装甲 (Smooth Upgrade Engine)**:全系脚本彻底消灭硬编码,动态抓取云端版本信标。自带状态机嗅探逻辑,即便是手动在老节点执行安装,也仅需回车瞬间完成配置继承与无损换代。
|
||||
- 🗺️ **全球拓扑矩阵与活体词库 (Global Nexus)**:接入 GitHub Actions 云端兵工厂,每日静默同步全球各大区真实热搜榜单与高权重本土站点,让伪装行为永远贴合当地网络脉搏。
|
||||
- 👻 **绝对时空对齐与高频错峰 (UTC-Seeded Scheduling)**:摒弃传统随机轮询,全栈强制接管底层时钟为**绝对 UTC 时间**。全舰队以 **20 分钟 (每日 72 次)** 的极高密度进行养护巡逻,叠加基于部署锚点的天然削峰与随机防并发休眠,完美化解十万级集群的“惊群效应”与 API 熔断。
|
||||
- 🖧 **极速预检与三级容灾架构 (Fail-Fast & Fallback)**:底层引擎强力接管发包参数 (`--interface`) 的同时,创新引入 **4 秒极速预检 (Fail-Fast)** 雷达与**三级阶梯脱壳**机制。无论是纯 IPv6 孤岛、WARP 劫持死锁还是复杂 NAT 嵌套,系统均能瞬间避开网络黑洞,彻底杜绝探针假死与流量溢出。
|
||||
|
||||
**—— 💎 骨干基建特征 ——**
|
||||
- 🏭 **自动化指纹兵工厂**:依托 GitHub Actions CI/CD 流水线,每月 1 日无人值守锻造 4000+ 带绝对物理分区的真实终端设备数据。
|
||||
- 🏭 **全自动云端军工厂 (CI/CD Data Factory)**:依托 GitHub Actions 构建双轨无人值守流水线。**每月 1 日**批量锻造 4000+ 带有绝对物理分区的原生终端指纹库;**每日凌晨 (UTC)** 实时抓取全球各战区 Google 真实热搜榜单与本土骨干新闻 RSS。为前线舰队源源不断地输送最鲜活的伪装弹药。
|
||||
- 🔒 **叹息之墙 (Zero-Trust HMAC)**:底层通讯引入 时间戳 + HMAC-SHA256 军用级动态签名。指令有效期仅 60 秒(阅后即焚),未授权请求直接触发系统级 403 物理熔断,彻底免疫中间人抓包与重放攻击。
|
||||
- ☁️ **云端中枢 (Public Master)**:官方公共机器人 [@OmniBeacon_bot](https://t.me/OmniBeacon_bot) ,新手免自建,一键接入极速入伍!同时支持硬核极客私有化 SQLite 分布式部署。
|
||||
- 👁️🗨️ **玻璃房透明遥测 (Glasshouse)**:基于 Cloudflare Workers 的全透明计数中枢,绝对零隐私收集,仅作原子累加,底层网关源码全开源。
|
||||
@@ -57,11 +57,12 @@
|
||||
> ☢️ **核按钮系统已就绪**:采用私有部署,您将解锁 **OTA 远程静默升级** 权限!所有私有前线节点均可通过您的 TG 面板实现一键全网代码热重载换代!
|
||||
|
||||
- **部署 Master (中枢大脑)**:找一台 VPS 作为司令部(仅需部署一台),执行:
|
||||
- [官方部署教程](https://blog.iot-architect.com/engineering-practice/ip-sentinel-master-deployment-guide/)
|
||||
```bash
|
||||
curl -fsSL https://raw.githubusercontent.com/hotyue/IP-Sentinel/main/master/install_master.sh -o /tmp/ins_master.sh && sudo bash /tmp/ins_master.sh
|
||||
```
|
||||
- 部署 Agent (边缘哨兵):在需要养护的机器上执行 Agent 脚本,安装时选择私有独立中枢,并分别输入您自建机器人的 [Token](https://blog.iot-architect.com/engineering-practice/create-private-telegram-bot-via-botfather) 以及您的个人 [Chat ID](https://blog.iot-architect.com/engineering-practice/get-telegram-personal-id-via-userinfobot) :
|
||||
|
||||
- [官方部署教程](https://blog.iot-architect.com/engineering-practice/ip-sentinel-installation-and-upgrade-guide/)
|
||||
```Bash
|
||||
curl -fsSL https://raw.githubusercontent.com/hotyue/IP-Sentinel/main/core/install.sh -o /tmp/ins_agent.sh && sudo bash /tmp/ins_agent.sh
|
||||
```
|
||||
@@ -73,7 +74,7 @@ curl -fsSL https://raw.githubusercontent.com/hotyue/IP-Sentinel/main/core/instal
|
||||
- 关注机器人:在 TG 中关注官方安全网关 [@OmniBeacon_bot](https://t.me/OmniBeacon_bot) 并发送 /start。
|
||||
|
||||
- 部署 Agent:在目标 VPS 上执行以下指令,安装过程中选择官方公共网关,并输入您的 Chat ID:
|
||||
|
||||
- [官方部署教程](https://blog.iot-architect.com/engineering-practice/ip-sentinel-installation-and-upgrade-guide/)
|
||||
```Bash
|
||||
curl -fsSL https://raw.githubusercontent.com/hotyue/IP-Sentinel/main/core/install.sh -o /tmp/ins_agent.sh && sudo bash /tmp/ins_agent.sh
|
||||
```
|
||||
@@ -128,6 +129,9 @@ bash <(curl -sL https://raw.githubusercontent.com/hotyue/IP-Sentinel/legacy/core
|
||||
|
||||
如果你想为项目增加新的节点区域(例如德国、英国、大洋洲等),或者提供更丰富的本土化搜索词库,非常欢迎提交 Pull Request!
|
||||
|
||||
|
||||
> - 感谢 @xykt 本项目IP质量检测采用[xykt/IPQuality](https://github.com/xykt/IPQuality) 脚本!
|
||||
|
||||
**💡 全球节点贡献规范:**
|
||||
1. 在 `data/regions/国家代码/省州代码/` 目录下新增对应城市的配置 `.json`。
|
||||
2. 在 `data/keywords/` 目录下新增或完善配套国家的词库 `kw_XX.txt`。
|
||||
|
||||
@@ -40,24 +40,15 @@ else
|
||||
fi
|
||||
|
||||
if [ -n "$AGENT_IP" ]; then
|
||||
# --- [重点升级 2: 智能防打扰注册机制] ---
|
||||
LAST_IP=""
|
||||
[ -f "$IP_CACHE" ] && LAST_IP=$(cat "$IP_CACHE" | tr -d '[:space:]')
|
||||
|
||||
# 只有当这是第一次运行,或者公网 IP 发生变动时,才发送 Telegram 申请
|
||||
if [ "$AGENT_IP" != "$LAST_IP" ]; then
|
||||
# [v3.6.0 核心修复] 携带 7 字段身份发起注册申请 (追加 ENABLE_OTA,防止 IP 变动重新注册时丢失 OTA 权限)
|
||||
REG_MSG="👋 **[边缘节点接入申请]**%0A大区: \`${REGION_CODE}\`%0A节点: \`${NODE_ALIAS}\`%0A地址: \`${AGENT_IP}:${AGENT_PORT}\`%0A%0A⚠️ **安全验证**: 为防止非法节点接入,请长按复制下方代码,并**发送给我**以完成最终授权录入:%0A%0A\`#REGISTER#|${REGION_CODE}|${NODE_NAME}|${AGENT_IP}|${AGENT_PORT}|${NODE_ALIAS}|${ENABLE_OTA:-false}\`"
|
||||
|
||||
curl -s -m 5 -X POST "${TG_API_URL}" \
|
||||
-d "chat_id=${CHAT_ID}" \
|
||||
-d "text=${REG_MSG}" \
|
||||
-d "parse_mode=Markdown" > /dev/null
|
||||
|
||||
echo "✅ [Agent] 已向司令部发送接入申请,请在 Telegram 手机端完成授权!"
|
||||
# [静音手术] 仅在本地静默更新 IP 缓存,彻底切除重复的 TG 发信逻辑,做沉默的守夜人
|
||||
echo "$AGENT_IP" > "$IP_CACHE"
|
||||
echo "ℹ️ [Agent] 发现本地 IP 变动,已静默更新缓存: $AGENT_IP"
|
||||
else
|
||||
echo "ℹ️ [Agent] IP 未变动 ($AGENT_IP),跳过重复注册申请。"
|
||||
echo "ℹ️ [Agent] IP 未变动 ($AGENT_IP),继续后台静默监听。"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -244,17 +235,27 @@ class AgentHandler(http.server.BaseHTTPRequestHandler):
|
||||
|
||||
text_msg = f"📄 <b>[{node_alias}] 实时日志 (v{local_ver}):</b>\n<pre><code>{log_data}</code></pre>"
|
||||
|
||||
data = urllib.parse.urlencode({
|
||||
# [v4.0.3 体验升级] 引入 json 模块并改用 JSON Payload,挂载返回控制台按钮
|
||||
import json
|
||||
node_name_cb = config.get('NODE_NAME', 'Unknown')
|
||||
payload = {
|
||||
'chat_id': config.get('CHAT_ID', ''),
|
||||
'text': text_msg,
|
||||
'parse_mode': 'HTML'
|
||||
}).encode('utf-8')
|
||||
'parse_mode': 'HTML',
|
||||
'reply_markup': {
|
||||
'inline_keyboard': [[{'text': '⚙️ 调出该节点控制台', 'callback_data': f'manage:{node_name_cb}'}]]
|
||||
}
|
||||
}
|
||||
data = json.dumps(payload).encode('utf-8')
|
||||
|
||||
req = urllib.request.Request(
|
||||
config.get('TG_API_URL', ''),
|
||||
data=data,
|
||||
# [动态化] 彻底消灭硬编码,使用运行态版本号
|
||||
headers={'User-Agent': f'IP-Sentinel-Agent/{local_ver}'}
|
||||
# [动态化] 彻底消灭硬编码,使用运行态版本号,并声明 JSON 头
|
||||
headers={
|
||||
'User-Agent': f'IP-Sentinel-Agent/{local_ver}',
|
||||
'Content-Type': 'application/json'
|
||||
}
|
||||
)
|
||||
urllib.request.urlopen(req, timeout=10)
|
||||
|
||||
|
||||
304
core/install.sh
304
core/install.sh
@@ -14,10 +14,14 @@ if [ "$EUID" -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 🟢 [防劫持沙盒] 创建具备随机哈希且仅 root 可见的专属安全工作区
|
||||
SECURE_TMP=$(mktemp -d /tmp/ips_install.XXXXXX)
|
||||
# 确保脚本退出、异常中断或被强杀时,自动销毁沙盒,不留痕迹
|
||||
trap 'rm -rf "$SECURE_TMP"' EXIT HUP INT QUIT TERM
|
||||
|
||||
# 你的 GitHub 仓库 Raw 数据直链前缀
|
||||
REPO_RAW_URL="https://raw.githubusercontent.com/hotyue/IP-Sentinel/main"
|
||||
# 临时改为开发地址用于测试
|
||||
# REPO_RAW_URL="https://raw.githubusercontent.com/hotyue/IP-Sentinel/v3.6.2-rc"
|
||||
|
||||
INSTALL_DIR="/opt/ip_sentinel"
|
||||
CONFIG_FILE="${INSTALL_DIR}/config.conf"
|
||||
|
||||
@@ -110,9 +114,8 @@ echo -e "\033[32m✅ 基础环境检测通过。\033[0m"
|
||||
|
||||
# 2. 交互式引导与动态地图解析 (v3.0 全球网络)
|
||||
echo -e "\n[2/7] 正在连线云端,拉取全球节点地图..."
|
||||
curl -sL "${REPO_RAW_URL}/data/map.json" -o "/tmp/map.json"
|
||||
|
||||
if [ ! -s "/tmp/map.json" ]; then
|
||||
curl -sL "${REPO_RAW_URL}/data/map.json" -o "${SECURE_TMP}/map.json"
|
||||
if [ ! -s "${SECURE_TMP}/map.json" ]; then
|
||||
echo -e "\033[31m❌ 拉取全球地图失败!请检查网络或 GitHub 仓库地址。\033[0m"
|
||||
exit 1
|
||||
fi
|
||||
@@ -137,10 +140,10 @@ else
|
||||
|
||||
if [ "$ACTION_CHOICE" == "2" ]; then
|
||||
echo -e "\n⏳ 正在拉取卸载程序..."
|
||||
curl -sL "${REPO_RAW_URL}/core/uninstall.sh" -o "/tmp/ip_uninstall.sh"
|
||||
chmod +x "/tmp/ip_uninstall.sh"
|
||||
bash "/tmp/ip_uninstall.sh"
|
||||
rm -f "/tmp/ip_uninstall.sh"
|
||||
curl -sL "${REPO_RAW_URL}/core/uninstall.sh" -o "${SECURE_TMP}/ip_uninstall.sh"
|
||||
chmod +x "${SECURE_TMP}/ip_uninstall.sh"
|
||||
bash "${SECURE_TMP}/ip_uninstall.sh"
|
||||
rm -f "${SECURE_TMP}/ip_uninstall.sh"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
@@ -169,21 +172,26 @@ else
|
||||
fi
|
||||
|
||||
# ================== [v3.1.1/v3.2.2 优化: 安装前环境纯净度清理] ==================
|
||||
echo -e "\n⏳ 正在清理旧版守护进程与冗余任务..."
|
||||
# [新增] 优雅停止 Systemd 服务,防止代码替换时引发无限复活风暴
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
systemctl stop ip-sentinel-runner.timer ip-sentinel-updater.timer ip-sentinel-report.timer ip-sentinel-agent-daemon.service >/dev/null 2>&1 || true
|
||||
fi
|
||||
echo -e "\n⏳ 正在清理系统定时任务中的旧版条目..."
|
||||
|
||||
# 1. 强制超度可能存活的 Webhook 及各类看门狗进程,释放端口
|
||||
pkill -9 -f "webhook.py" >/dev/null 2>&1 || true
|
||||
pkill -9 -f "agent_daemon.sh" >/dev/null 2>&1 || true
|
||||
pkill -9 -f "runner.sh" >/dev/null 2>&1 || true
|
||||
# 1. 清除系统定时任务 (Cron) 中的旧版条目 (安全容错版)
|
||||
crontab -l 2>/dev/null | grep -v "ip_sentinel" > "${SECURE_TMP}/cron_clean" || true
|
||||
# [追加 >/dev/null 2>&1 堵死 Alpine 的脏话输出]
|
||||
[ -f "${SECURE_TMP}/cron_clean" ] && crontab "${SECURE_TMP}/cron_clean" >/dev/null 2>&1
|
||||
rm -f "${SECURE_TMP}/cron_clean"
|
||||
|
||||
# 2. 清除系统定时任务 (Cron) 中的旧版条目 (安全容错版)
|
||||
crontab -l 2>/dev/null | grep -v "ip_sentinel" > /tmp/cron_clean || true
|
||||
[ -f /tmp/cron_clean ] && crontab /tmp/cron_clean 2>/dev/null
|
||||
rm -f /tmp/cron_clean
|
||||
# ==========================================
|
||||
# 🛑 [物理抹除] 彻底扫除 Alpine 系统的底层残留与双路径文件
|
||||
# ==========================================
|
||||
for CRON_FILE in "/var/spool/cron/crontabs/root" "/etc/crontabs/root"; do
|
||||
if [ -f "$CRON_FILE" ]; then
|
||||
grep -v "ip_sentinel" "$CRON_FILE" > "${CRON_FILE}.tmp" 2>/dev/null || true
|
||||
cat "${CRON_FILE}.tmp" > "$CRON_FILE" 2>/dev/null || true
|
||||
rm -f "${CRON_FILE}.tmp" 2>/dev/null
|
||||
fi
|
||||
done
|
||||
# 清理 OpenRC 开机启动项
|
||||
rm -f /etc/local.d/ip_sentinel.start 2>/dev/null
|
||||
|
||||
# 3. 抹除旧版核心代码,杜绝代码冲突 (根据模式分流)
|
||||
if [ "$UPGRADE_MODE" == "true" ]; then
|
||||
@@ -210,13 +218,13 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
|
||||
# 📍 动态零级菜单:战区(大洲)选择
|
||||
echo -e "\n\033[36m📍 【第零级】请选择目标战区 (Continent):\033[0m"
|
||||
jq -r '.continents[] | "\(.id)|\(.name)"' /tmp/map.json > /tmp/continents.txt
|
||||
jq -r '.continents[] | "\(.id)|\(.name)"' "${SECURE_TMP}/map.json" > "${SECURE_TMP}/continents.txt"
|
||||
i=1; CONT_MAP=()
|
||||
while IFS="|" read -r cont_id cont_name; do
|
||||
echo " $i) $cont_name"
|
||||
CONT_MAP[$i]="$cont_id"
|
||||
((i++))
|
||||
done < /tmp/continents.txt
|
||||
done < "${SECURE_TMP}/continents.txt"
|
||||
|
||||
read -p "请输入选择 [1-$((i-1))] (默认1): " CONT_SEL
|
||||
CONT_SEL=${CONT_SEL:-1}
|
||||
@@ -224,14 +232,14 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
|
||||
# 📍 动态一级菜单:国家选择 (基于选中战区)
|
||||
echo -e "\n\033[36m📍 【第一级】正在检索 [$CONT_ID] 战区下的国家/地区...\033[0m"
|
||||
jq -r ".continents[] | select(.id==\"$CONT_ID\") | .countries[] | \"\(.id)|\(.name)|\(.keyword_file)\"" /tmp/map.json > /tmp/countries.txt
|
||||
jq -r ".continents[] | select(.id==\"$CONT_ID\") | .countries[] | \"\(.id)|\(.name)|\(.keyword_file)\"" "${SECURE_TMP}/map.json" > "${SECURE_TMP}/countries.txt"
|
||||
i=1; COUNTRY_MAP=(); KEYWORD_MAP=()
|
||||
while IFS="|" read -r c_id c_name k_file; do
|
||||
echo " $i) $c_name"
|
||||
COUNTRY_MAP[$i]="$c_id"
|
||||
KEYWORD_MAP[$i]="$k_file"
|
||||
((i++))
|
||||
done < /tmp/countries.txt
|
||||
done < "${SECURE_TMP}/countries.txt"
|
||||
|
||||
read -p "请输入选择 [1-$((i-1))] (默认1): " C_SEL
|
||||
C_SEL=${C_SEL:-1}
|
||||
@@ -241,11 +249,11 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
|
||||
# 📍 动态二级菜单:省/州选择 (基于选中战区和国家)
|
||||
echo -e "\n\033[36m📍 【第二级】正在检索 [$COUNTRY_ID] 的行政区数据...\033[0m"
|
||||
jq -r ".continents[] | select(.id==\"$CONT_ID\") | .countries[] | select(.id==\"$COUNTRY_ID\") | .states[] | \"\(.id)|\(.name)\"" /tmp/map.json > /tmp/states.txt
|
||||
STATE_COUNT=$(wc -l < /tmp/states.txt)
|
||||
jq -r ".continents[] | select(.id==\"$CONT_ID\") | .countries[] | select(.id==\"$COUNTRY_ID\") | .states[] | \"\(.id)|\(.name)\"" "${SECURE_TMP}/map.json" > "${SECURE_TMP}/states.txt"
|
||||
STATE_COUNT=$(wc -l < "${SECURE_TMP}/states.txt")
|
||||
|
||||
if [ "$STATE_COUNT" -eq 1 ]; then
|
||||
IFS="|" read -r STATE_ID STATE_NAME < /tmp/states.txt
|
||||
IFS="|" read -r STATE_ID STATE_NAME < "${SECURE_TMP}/states.txt"
|
||||
echo -e "\033[32m💡 该国家下仅有单一配置 [$STATE_NAME],已自动跃迁。\033[0m"
|
||||
else
|
||||
i=1; STATE_MAP=()
|
||||
@@ -253,7 +261,7 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
echo " $i) $s_name"
|
||||
STATE_MAP[$i]="$s_id"
|
||||
((i++))
|
||||
done < /tmp/states.txt
|
||||
done < "${SECURE_TMP}/states.txt"
|
||||
read -p "请输入选择 [1-$((i-1))] (默认1): " S_SEL
|
||||
S_SEL=${S_SEL:-1}
|
||||
STATE_ID="${STATE_MAP[$S_SEL]}"
|
||||
@@ -261,11 +269,11 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
|
||||
# 📍 动态三级菜单:城市选择 (基于战区、国家、州三层过滤)
|
||||
echo -e "\n\033[36m📍 【第三级】请锁定具体城市节点:\033[0m"
|
||||
jq -r ".continents[] | select(.id==\"$CONT_ID\") | .countries[] | select(.id==\"$COUNTRY_ID\") | .states[] | select(.id==\"$STATE_ID\") | .cities[] | \"\(.id)|\(.name)\"" /tmp/map.json > /tmp/cities.txt
|
||||
CITY_COUNT=$(wc -l < /tmp/cities.txt)
|
||||
jq -r ".continents[] | select(.id==\"$CONT_ID\") | .countries[] | select(.id==\"$COUNTRY_ID\") | .states[] | select(.id==\"$STATE_ID\") | .cities[] | \"\(.id)|\(.name)\"" "${SECURE_TMP}/map.json" > "${SECURE_TMP}/cities.txt"
|
||||
CITY_COUNT=$(wc -l < "${SECURE_TMP}/cities.txt")
|
||||
|
||||
if [ "$CITY_COUNT" -eq 1 ]; then
|
||||
IFS="|" read -r CITY_ID CITY_NAME < /tmp/cities.txt
|
||||
IFS="|" read -r CITY_ID CITY_NAME < "${SECURE_TMP}/cities.txt"
|
||||
echo -e "\033[32m💡 该区域下仅有单一城市 [$CITY_NAME],已自动锁定。\033[0m"
|
||||
else
|
||||
i=1; CITY_MAP=(); CITY_NAME_MAP=()
|
||||
@@ -274,7 +282,7 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
CITY_MAP[$i]="$c_id"
|
||||
CITY_NAME_MAP[$i]="$c_name"
|
||||
((i++))
|
||||
done < /tmp/cities.txt
|
||||
done < "${SECURE_TMP}/cities.txt"
|
||||
read -p "请输入选择 [1-$((i-1))] (默认1): " CI_SEL
|
||||
CI_SEL=${CI_SEL:-1}
|
||||
CITY_ID="${CITY_MAP[$CI_SEL]}"
|
||||
@@ -282,7 +290,7 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
fi
|
||||
|
||||
# 清理临时文件 (增加清理 continents.txt)
|
||||
rm -f /tmp/map.json /tmp/continents.txt /tmp/countries.txt /tmp/states.txt /tmp/cities.txt
|
||||
rm -f "${SECURE_TMP}/map.json" "${SECURE_TMP}/continents.txt" "${SECURE_TMP}/countries.txt" "${SECURE_TMP}/states.txt" "${SECURE_TMP}/cities.txt"
|
||||
|
||||
# 本地工作目录初始化 (支持 v3.0 的深度层级)
|
||||
mkdir -p "${INSTALL_DIR}/core"
|
||||
@@ -322,11 +330,12 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
# [v3.6.0 优化] 使用 OSC 8 终端超链接协议,实现“点击即打开”的极客交互
|
||||
echo -e "\n\033[36m📘 私有 Bot 创建教程: \033[4m\033]8;;https://blog.iot-architect.com/engineering-practice/create-private-telegram-bot-via-botfather/\033\\👉 [点击此处直接在浏览器中打开] 👈\033]8;;\033\\\033[0m"
|
||||
echo -e "\033[90m (若您的终端较老不支持点击,请手动复制: https://blog.iot-architect.com/engineering-practice/create-private-telegram-bot-via-botfather/ )\033[0m"
|
||||
read -p "请输入您的私有 Telegram Bot Token: " USER_TOKEN
|
||||
|
||||
read -p "请输入您的私有 Telegram Bot Token: " RAW_TOKEN
|
||||
USER_TOKEN=$(echo "$RAW_TOKEN" | tr -cd 'a-zA-Z0-9_:-')
|
||||
# 🛡️ 核心防误触修复:拦截空回车或粘贴换行导致的跳过 Bug
|
||||
while [ -z "$USER_TOKEN" ]; do
|
||||
read -p "⚠️ Token 不能为空,请重新输入您的 Bot Token: " USER_TOKEN
|
||||
read -p "⚠️ Token 不能为空或包含非法字符,请重新输入: " RAW_TOKEN
|
||||
USER_TOKEN=$(echo "$RAW_TOKEN" | tr -cd 'a-zA-Z0-9_:-')
|
||||
done
|
||||
|
||||
TG_TOKEN="$USER_TOKEN"
|
||||
@@ -349,7 +358,9 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
echo -e "\n\033[33m💡 提示:如果您不知道下方自己的 Chat ID 是什么,可以关注 @userinfobot 获取。\033[0m"
|
||||
echo -e "\033[36m📘 查看图文教程: \033[4m\033]8;;https://blog.iot-architect.com/engineering-practice/get-telegram-personal-id-via-userinfobot/\033\\👉 [点击此处直接在浏览器中打开] 👈\033]8;;\033\\\033[0m"
|
||||
echo -e "\033[90m (若您的终端较老不支持点击,请手动复制: https://blog.iot-architect.com/engineering-practice/get-telegram-personal-id-via-userinfobot/ )\033[0m"
|
||||
read -p "请输入你的 Chat ID (必须准确,否则无法联控): " CHAT_ID
|
||||
read -p "请输入你的 Chat ID (必须准确,否则无法联控): " RAW_CHAT_ID
|
||||
# 强制只保留数字和负号,封死注入
|
||||
CHAT_ID=$(echo "$RAW_CHAT_ID" | tr -cd '0-9-')
|
||||
|
||||
# ================== [v3.0.3 变更: 智能随机高位端口生成系统] ==================
|
||||
echo -e "\n\033[36m[4.2/7] 正在构建 Webhook 安全通信隧道...\033[0m"
|
||||
@@ -407,7 +418,8 @@ if [ "$UPGRADE_MODE" == "false" ]; then
|
||||
|
||||
if [ ${#IP_OPTIONS[@]} -eq 0 ]; then
|
||||
echo -e "\033[33m⚠️ 雷达受阻:未能自动探测到公网 IP,请手动指定。\033[0m"
|
||||
read -p "请输入您要绑定的公网 IP (v4 或 v6): " PUBLIC_IP
|
||||
read -p "请输入您要绑定的公网 IP (v4 或 v6): " RAW_PUBLIC_IP
|
||||
PUBLIC_IP=$(echo "$RAW_PUBLIC_IP" | tr -cd 'a-fA-F0-9.:[]')
|
||||
[[ "$PUBLIC_IP" == *":"* ]] && IP_PREF="6" || IP_PREF="4"
|
||||
else
|
||||
echo "📍 发现可用出口 IP,请选择要注册与养护的锚点:"
|
||||
@@ -581,7 +593,8 @@ if [ "$UPGRADE_MODE" == "true" ]; then
|
||||
BIND_IP="$NEW_BIND_IP"
|
||||
else
|
||||
# 如果是未来再升级,配置文件已是最新,直接提取变量供安装脚本尾部使用
|
||||
SAFE_PUBLIC_IP=$(grep "^PUBLIC_IP=" "$CONFIG_FILE" | cut -d'"' -f2)
|
||||
# [修复] 避免 cut 提取无引号变量失败,直接复用已 source 的原生变量
|
||||
SAFE_PUBLIC_IP="${PUBLIC_IP}"
|
||||
fi
|
||||
|
||||
# [v3.5.2 热修复] 兼容老版本没有 NODE_NAME 和 NODE_ALIAS 的情况,无损补齐
|
||||
@@ -615,7 +628,7 @@ echo -e "\n[6/7] 正在部署核心引擎与热数据..."
|
||||
mkdir -p "${INSTALL_DIR}/data/keywords"
|
||||
|
||||
# [核心修复] 开辟临时下载区,确保下载 100% 成功后再替换旧核心
|
||||
TMP_CORE="/tmp/ip_sentinel_core_$$"
|
||||
TMP_CORE="${SECURE_TMP}/core_update"
|
||||
mkdir -p "$TMP_CORE"
|
||||
|
||||
# 拉取核心代码至临时区
|
||||
@@ -636,7 +649,21 @@ if [ ! -s "${TMP_CORE}/runner.sh" ] || [ ! -s "${TMP_CORE}/agent_daemon.sh" ]; t
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 校验完美通过,执行原子化交接
|
||||
# 🟢 [原子化交接核心]: 校验完美通过,新代码已在本地备妥!
|
||||
# 此时再以雷霆手段镇压旧进程,杜绝遗言陷阱与断网变砖的可能!
|
||||
echo "⏳ 新引擎校验通过,正在抹杀旧版守护进程..."
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
systemctl kill --signal=SIGKILL ip-sentinel-agent-daemon.service >/dev/null 2>&1 || true
|
||||
systemctl stop ip-sentinel-runner.timer ip-sentinel-updater.timer ip-sentinel-report.timer ip-sentinel-agent-daemon.service >/dev/null 2>&1 || true
|
||||
fi
|
||||
pkill -9 -f "webhook.py" >/dev/null 2>&1 || true
|
||||
pkill -9 -f "agent_daemon.sh" >/dev/null 2>&1 || true
|
||||
pkill -9 -f "runner.sh" >/dev/null 2>&1 || true
|
||||
pkill -9 -f "tg_report.sh" >/dev/null 2>&1 || true
|
||||
pkill -9 -f "updater.sh" >/dev/null 2>&1 || true
|
||||
pkill -9 -f "sentinel_scheduler.sh" >/dev/null 2>&1 || true
|
||||
|
||||
# 执行代码目录的物理替换
|
||||
rm -rf "${INSTALL_DIR}/core" 2>/dev/null
|
||||
mv "$TMP_CORE" "${INSTALL_DIR}/core"
|
||||
chmod +x ${INSTALL_DIR}/core/*.sh
|
||||
@@ -653,8 +680,12 @@ fi
|
||||
# 7. 配置系统定时任务 (高频调度与看门狗)
|
||||
echo -e "\n[7/7] 正在注入系统守护进程与调度器..."
|
||||
|
||||
# [v3.3.0 新增] 初始化 UA 指纹库更新时间戳,确立 30 天滚动周期的计算锚点
|
||||
echo $(date +%s) > "${INSTALL_DIR}/core/.ua_last_update"
|
||||
# [时钟同步核心] 获取部署时的绝对 UTC 时间锚点,用于打散全球节点的云端拉取并发
|
||||
DEPLOY_UTC_HOUR=$(date -u +%H)
|
||||
DEPLOY_UTC_MIN=$(date -u +%M)
|
||||
|
||||
# [v3.3.0 新增] 初始化 UA 指纹库更新时间戳,确立 30 天滚动周期的计算锚点 (强制 UTC)
|
||||
echo $(date -u +%s) > "${INSTALL_DIR}/core/.ua_last_update"
|
||||
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
echo "💡 检测到 Systemd 环境,正在部署原生守护服务..."
|
||||
@@ -678,8 +709,8 @@ EOF
|
||||
[Unit]
|
||||
Description=Timer for IP-Sentinel Runner Service
|
||||
[Timer]
|
||||
OnActiveSec=10s
|
||||
OnUnitActiveSec=30min
|
||||
# [频率优化] 改用严格的 20 分钟步进,杜绝 OTA 瞬间的并发走火!
|
||||
OnCalendar=*:0/20
|
||||
RandomizedDelaySec=180
|
||||
Persistent=true
|
||||
Unit=ip-sentinel-runner.service
|
||||
@@ -706,7 +737,8 @@ EOF
|
||||
[Unit]
|
||||
Description=Timer for IP-Sentinel Updater Service
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 03:00:00
|
||||
# [绝对 UTC 锚点] 每天精确在部署的时刻触发,实现全球请求的天然削峰
|
||||
OnCalendar=*-*-* ${DEPLOY_UTC_HOUR}:${DEPLOY_UTC_MIN}:00 UTC
|
||||
Persistent=true
|
||||
Unit=ip-sentinel-updater.service
|
||||
[Install]
|
||||
@@ -736,7 +768,8 @@ EOF
|
||||
[Unit]
|
||||
Description=Timer for IP-Sentinel Telegram Report Service
|
||||
[Timer]
|
||||
OnCalendar=*-*-* 08:00:00
|
||||
# [绝对 UTC 锚点] 全球统一:每天 UTC 16:00 准时向司令部发送战报
|
||||
OnCalendar=*-*-* 16:00:00 UTC
|
||||
Unit=ip-sentinel-report.service
|
||||
[Install]
|
||||
WantedBy=timers.target
|
||||
@@ -762,28 +795,131 @@ WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# [修复竞态]: 提前写入公网 IP 缓存,阻断重复推送
|
||||
echo "$SAFE_PUBLIC_IP" > "${INSTALL_DIR}/core/.last_ip"
|
||||
# 强制使用无参数 curl 裸奔探测,对齐 agent_daemon 的认知,防止双栈机型 IPv4/v6 认知错乱导致重启误报
|
||||
DAEMON_IP=$( (curl -s -m 5 api.ip.sb/ip || curl -s -m 5 ifconfig.me) 2>/dev/null | tr -d '[:space:]' )
|
||||
[ -n "$DAEMON_IP" ] && echo "$DAEMON_IP" > "${INSTALL_DIR}/core/.last_ip" || echo "$(echo "$SAFE_PUBLIC_IP" | tr -d '[]')" > "${INSTALL_DIR}/core/.last_ip"
|
||||
|
||||
systemctl daemon-reload
|
||||
systemctl enable --now ip-sentinel-report.timer
|
||||
systemctl enable --now ip-sentinel-agent-daemon.service
|
||||
fi
|
||||
else
|
||||
echo "💡 未检测到 Systemd (可能是 Alpine Linux),回退到 Cron 调度模式..."
|
||||
crontab -l 2>/dev/null | grep -v "ip_sentinel" > /tmp/cron_backup || true
|
||||
echo "*/30 * * * * ${INSTALL_DIR}/core/runner.sh >/dev/null 2>&1" >> /tmp/cron_backup
|
||||
echo "0 3 * * * ${INSTALL_DIR}/core/updater.sh >/dev/null 2>&1" >> /tmp/cron_backup
|
||||
|
||||
if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
||||
echo "0 8 * * * ${INSTALL_DIR}/core/tg_report.sh >/dev/null 2>&1" >> /tmp/cron_backup
|
||||
echo "$SAFE_PUBLIC_IP" > "${INSTALL_DIR}/core/.last_ip"
|
||||
echo "@reboot nohup bash ${INSTALL_DIR}/core/agent_daemon.sh >/dev/null 2>&1 &" >> /tmp/cron_backup
|
||||
echo "* * * * * nohup bash ${INSTALL_DIR}/core/agent_daemon.sh >/dev/null 2>&1 &" >> /tmp/cron_backup
|
||||
nohup bash "${INSTALL_DIR}/core/agent_daemon.sh" >/dev/null 2>&1 &
|
||||
else
|
||||
echo "💡 未检测到 Systemd,正在配置备用调度器 (兼容 Alpine/OpenRC)..."
|
||||
|
||||
# ==========================================
|
||||
# 🛑 智能环境嗅探: 判定是否为受限的 Alpine 容器环境
|
||||
# ==========================================
|
||||
IS_RESTRICTED_ALPINE="false"
|
||||
if [ -f /etc/alpine-release ]; then
|
||||
# 探测虚拟化类型:/proc/vz(OpenVZ), environ包含lxc(LXC), /.dockerenv(Docker)
|
||||
if [ -d /proc/vz ] || grep -qa container=lxc /proc/1/environ 2>/dev/null || [ -f /.dockerenv ]; then
|
||||
IS_RESTRICTED_ALPINE="true"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$IS_RESTRICTED_ALPINE" == "true" ]; then
|
||||
echo -e "⚠️ 探测到受限的 LXC/OpenVZ Alpine 环境,系统自带 Cron 极易假死。"
|
||||
echo -e "🔧 自动降维打击:启用 [自定义高可用死循环调度器] 接管全局任务..."
|
||||
|
||||
# 1. 禁用原有的 Cron 大管家 (防止冲突)
|
||||
rc-update del crond default >/dev/null 2>&1 || true
|
||||
rc-service crond stop >/dev/null 2>&1 || true
|
||||
pkill -9 crond >/dev/null 2>&1 || true
|
||||
crontab -l 2>/dev/null | grep -v "ip_sentinel" > "${SECURE_TMP}/cron_clean" || true
|
||||
[ -f "${SECURE_TMP}/cron_clean" ] && crontab "${SECURE_TMP}/cron_clean" >/dev/null 2>&1
|
||||
rm -f "${SECURE_TMP}/cron_clean"
|
||||
|
||||
# 2. 写入我们的死循环守护进程
|
||||
# [极客修复] 将 << 'EOF' 变为 << EOF,以允许在安装时将部署时刻的 DEPLOY_UTC 变量作为硬编码注入脚本中
|
||||
cat > ${INSTALL_DIR}/core/sentinel_scheduler.sh << EOF
|
||||
#!/bin/bash
|
||||
while true; do
|
||||
# 强制获取绝对 UTC 时分,免疫系统错误时区
|
||||
MIN=\$(date -u +%M)
|
||||
HOUR=\$(date -u +%H)
|
||||
# [频率优化] 匹配 20 分钟步进 (00, 20, 40)
|
||||
if [ "\$MIN" == "00" ] || [ "\$MIN" == "20" ] || [ "\$MIN" == "40" ]; then
|
||||
/bin/bash /opt/ip_sentinel/core/runner.sh >/dev/null 2>&1
|
||||
fi
|
||||
# [绝对 UTC 锚点] 基于部署时刻的锚点触发热数据更新,天然并发削峰
|
||||
if [ "\$HOUR" == "${DEPLOY_UTC_HOUR}" ] && [ "\$MIN" == "${DEPLOY_UTC_MIN}" ]; then
|
||||
/bin/bash /opt/ip_sentinel/core/updater.sh >/dev/null 2>&1
|
||||
fi
|
||||
# [绝对 UTC 锚点] 统一 UTC 16:00 发送战报
|
||||
if [ "\$HOUR" == "16" ] && [ "\$MIN" == "00" ]; then
|
||||
/bin/bash /opt/ip_sentinel/core/tg_report.sh >/dev/null 2>&1
|
||||
fi
|
||||
if ! pgrep -f 'webhook.py' >/dev/null; then
|
||||
/bin/bash /opt/ip_sentinel/core/agent_daemon.sh >/dev/null 2>&1 &
|
||||
fi
|
||||
sleep 60
|
||||
done
|
||||
EOF
|
||||
chmod +x ${INSTALL_DIR}/core/sentinel_scheduler.sh
|
||||
|
||||
# 3. 写入 OpenRC 开机自启
|
||||
if command -v rc-update >/dev/null 2>&1 && [ -d "/etc/local.d" ]; then
|
||||
echo "nohup bash ${INSTALL_DIR}/core/sentinel_scheduler.sh >/dev/null 2>&1 &" > /etc/local.d/ip_sentinel_scheduler.start
|
||||
chmod +x /etc/local.d/ip_sentinel_scheduler.start
|
||||
rc-update add local default >/dev/null 2>&1
|
||||
else
|
||||
# 连 OpenRC 都没有的极端环境,写入 profile 兜底
|
||||
grep -q "sentinel_scheduler" /etc/profile || echo "nohup bash ${INSTALL_DIR}/core/sentinel_scheduler.sh >/dev/null 2>&1 &" >> /etc/profile
|
||||
fi
|
||||
|
||||
# 4. 立即后台启动
|
||||
[ -n "$PUBLIC_IP" ] && echo "$PUBLIC_IP" > "${INSTALL_DIR}/core/.last_ip"
|
||||
nohup bash ${INSTALL_DIR}/core/sentinel_scheduler.sh >/dev/null 2>&1 &
|
||||
|
||||
else
|
||||
# ==========================================
|
||||
# 🟢 走常规调度路线 (正常的 Linux 或 KVM 型 Alpine)
|
||||
# ==========================================
|
||||
crontab -l 2>/dev/null | grep -v "ip_sentinel" > "${SECURE_TMP}/cron_backup" || true
|
||||
# [频率优化] 调整为 */20
|
||||
echo "*/20 * * * * ${INSTALL_DIR}/core/runner.sh >/dev/null 2>&1" >> "${SECURE_TMP}/cron_backup"
|
||||
# [绝对 UTC 锚点] 每天精确在部署的 UTC 时刻触发
|
||||
echo "${DEPLOY_UTC_MIN} ${DEPLOY_UTC_HOUR} * * * ${INSTALL_DIR}/core/updater.sh >/dev/null 2>&1" >> "${SECURE_TMP}/cron_backup"
|
||||
|
||||
if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
||||
# [绝对 UTC 锚点] 统一 UTC 16:00
|
||||
echo "0 16 * * * ${INSTALL_DIR}/core/tg_report.sh >/dev/null 2>&1" >> "${SECURE_TMP}/cron_backup"
|
||||
echo "$SAFE_PUBLIC_IP" > "${INSTALL_DIR}/core/.last_ip"
|
||||
# [修复竞态]: 提前写入公网 IP 缓存,阻断重复推送
|
||||
# 强制使用无参数 curl 裸奔探测,对齐 agent_daemon 的认知,防止双栈机型 IPv4/v6 认知错乱导致重启误报
|
||||
DAEMON_IP=$( (curl -s -m 5 api.ip.sb/ip || curl -s -m 5 ifconfig.me) 2>/dev/null | tr -d '[:space:]' )
|
||||
[ -n "$DAEMON_IP" ] && echo "$DAEMON_IP" > "${INSTALL_DIR}/core/.last_ip" || echo "$(echo "$SAFE_PUBLIC_IP" | tr -d '[]')" > "${INSTALL_DIR}/core/.last_ip"
|
||||
|
||||
if command -v rc-update >/dev/null 2>&1 && [ -d "/etc/local.d" ]; then
|
||||
echo "nohup bash ${INSTALL_DIR}/core/agent_daemon.sh >/dev/null 2>&1 &" > /etc/local.d/ip_sentinel.start
|
||||
chmod +x /etc/local.d/ip_sentinel.start
|
||||
rc-update add local default >/dev/null 2>&1
|
||||
else
|
||||
echo "@reboot nohup bash ${INSTALL_DIR}/core/agent_daemon.sh >/dev/null 2>&1 &" >> "${SECURE_TMP}/cron_backup"
|
||||
fi
|
||||
|
||||
echo "* * * * * pgrep -f 'webhook.py' >/dev/null || nohup bash ${INSTALL_DIR}/core/agent_daemon.sh >/dev/null 2>&1 &" >> "${SECURE_TMP}/cron_backup"
|
||||
|
||||
nohup bash "${INSTALL_DIR}/core/agent_daemon.sh" >/dev/null 2>&1 &
|
||||
fi
|
||||
|
||||
[ -f "${SECURE_TMP}/cron_backup" ] && crontab "${SECURE_TMP}/cron_backup" >/dev/null 2>&1
|
||||
|
||||
if [ -d "/etc/crontabs" ] && [ -f "/var/spool/cron/crontabs/root" ]; then
|
||||
cp -f /var/spool/cron/crontabs/root /etc/crontabs/root 2>/dev/null || true
|
||||
chmod 600 /etc/crontabs/root 2>/dev/null || true
|
||||
fi
|
||||
|
||||
if command -v rc-service >/dev/null 2>&1; then
|
||||
rc-service crond restart >/dev/null 2>&1 || crond -b >/dev/null 2>&1
|
||||
else
|
||||
pkill -9 crond 2>/dev/null || true
|
||||
crond -b >/dev/null 2>&1 || true
|
||||
fi
|
||||
|
||||
rm -f "${SECURE_TMP}/cron_backup"
|
||||
fi
|
||||
fi
|
||||
[ -f /tmp/cron_backup ] && crontab /tmp/cron_backup 2>/dev/null
|
||||
rm -f /tmp/cron_backup
|
||||
fi
|
||||
|
||||
# ================== [v3.4.0 核心: 状态机驱动的热更新路由] ==================
|
||||
if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
||||
@@ -797,31 +933,34 @@ if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
||||
[ -z "$OLD_VERSION" ] && OLD_VERSION="3.3.1"
|
||||
|
||||
# [路由表 1]: 跨代兼容 (老版本 < v3.3.2)
|
||||
# 必须强制下发带有 #REGISTER# 的警告,引导长官重新同步哈希身份
|
||||
if version_lt "$OLD_VERSION" "3.3.2"; then
|
||||
echo -e "\n📡 [路由枢纽] 正在执行跨代架构重组 (v${OLD_VERSION} -> v${TARGET_VERSION})..."
|
||||
curl -s -X POST "${TG_API_URL}" \
|
||||
-d "chat_id=${CHAT_ID}" \
|
||||
-d "parse_mode=Markdown" \
|
||||
-d "text=✨ *IP-Sentinel 引擎热更新完成!*
|
||||
TEXT_MSG="✨ *IP-Sentinel 引擎热更新完成!*
|
||||
📍 节点:\`${NODE_ALIAS}\`
|
||||
🌐 IP:\`${SAFE_PUBLIC_IP}\`
|
||||
🚀 状态:v${TARGET_VERSION} OTA 动态活体引擎已部署
|
||||
|
||||
⚠️ *战区架构已重组,请务必点击下方指令并发送,以同步新的防撞档案:*
|
||||
\`${REG_MSG}\`" >/dev/null 2>&1
|
||||
\`${REG_MSG}\`"
|
||||
|
||||
# [v4.0.3 体验升级] 注入交互式控制台按钮
|
||||
JSON_PAYLOAD=$(jq -n --arg cid "$CHAT_ID" --arg txt "$TEXT_MSG" --arg cb "manage:${NODE_NAME}" '{chat_id: $cid, text: $txt, parse_mode: "Markdown", reply_markup: {inline_keyboard: [[{text: "⚙️ 调出该节点控制台", callback_data: $cb}]]}}')
|
||||
curl -s -X POST "${TG_API_URL}" -H "Content-Type: application/json" -d "$JSON_PAYLOAD" >/dev/null 2>&1
|
||||
|
||||
echo -e "\033[32m✅ 升级通知已推送!请前往 TG 点击注册指令完成身份同步!\033[0m"
|
||||
|
||||
# [路由表 2]: 现代静默升级 (老版本 >= v3.3.2)
|
||||
else
|
||||
echo -e "\n📡 [路由枢纽] 正在执行静默平滑升级 (v${OLD_VERSION} -> v${TARGET_VERSION})..."
|
||||
curl -s -X POST "${TG_API_URL}" \
|
||||
-d "chat_id=${CHAT_ID}" \
|
||||
-d "parse_mode=Markdown" \
|
||||
-d "text=✨ *IP-Sentinel 引擎热更新完成!*
|
||||
TEXT_MSG="✨ *IP-Sentinel 引擎热更新完成!*
|
||||
📍 节点:\`${NODE_ALIAS}\`
|
||||
🌐 IP:\`${SAFE_PUBLIC_IP}\`
|
||||
🚀 状态:v${TARGET_VERSION} OTA 动态活体引擎已部署" >/dev/null 2>&1
|
||||
🚀 状态:v${TARGET_VERSION} OTA 动态活体引擎已部署"
|
||||
|
||||
# [v4.0.3 体验升级] 注入交互式控制台按钮
|
||||
JSON_PAYLOAD=$(jq -n --arg cid "$CHAT_ID" --arg txt "$TEXT_MSG" --arg cb "manage:${NODE_NAME}" '{chat_id: $cid, text: $txt, parse_mode: "Markdown", reply_markup: {inline_keyboard: [[{text: "⚙️ 调出该节点控制台", callback_data: $cb}]]}}')
|
||||
curl -s -X POST "${TG_API_URL}" -H "Content-Type: application/json" -d "$JSON_PAYLOAD" >/dev/null 2>&1
|
||||
|
||||
echo -e "\033[32m✅ 升级成功通知已推送到您的 Telegram!\033[0m"
|
||||
fi
|
||||
|
||||
@@ -836,16 +975,17 @@ if [[ -n "$TG_TOKEN" ]] && [[ -n "$CHAT_ID" ]]; then
|
||||
else
|
||||
# [全新安装路由]
|
||||
echo -e "\n📡 正在向指挥部发送注册暗号..."
|
||||
PUSH_RESULT=$(curl -s -X POST "${TG_API_URL}" \
|
||||
-d "chat_id=${CHAT_ID}" \
|
||||
-d "parse_mode=Markdown" \
|
||||
-d "text=✨ *IP-Sentinel 部署成功!*
|
||||
TEXT_MSG="✨ *IP-Sentinel 部署成功!*
|
||||
📍 区域:${REGION_NAME}
|
||||
🌐 IP:${SAFE_PUBLIC_IP}
|
||||
🔌 端口:${AGENT_PORT}
|
||||
|
||||
🔑 *请点击下方指令复制并回复给机器人:*
|
||||
\`${REG_MSG}\`")
|
||||
\`${REG_MSG}\`"
|
||||
|
||||
# [v4.0.3 体验升级] 注入交互式控制台按钮
|
||||
JSON_PAYLOAD=$(jq -n --arg cid "$CHAT_ID" --arg txt "$TEXT_MSG" --arg cb "manage:${NODE_NAME}" '{chat_id: $cid, text: $txt, parse_mode: "Markdown", reply_markup: {inline_keyboard: [[{text: "⚙️ 调出该节点控制台", callback_data: $cb}]]}}')
|
||||
PUSH_RESULT=$(curl -s -X POST "${TG_API_URL}" -H "Content-Type: application/json" -d "$JSON_PAYLOAD")
|
||||
|
||||
if echo "$PUSH_RESULT" | grep -q '"ok":true'; then
|
||||
echo -e "\033[32m✅ 注册信息已推送到您的 Telegram,请按指令完成最终激活!\033[0m"
|
||||
@@ -863,7 +1003,7 @@ else
|
||||
echo "🎉 边缘节点 (Agent) 部署流程彻底完成!"
|
||||
fi
|
||||
echo "📍 你的本地守护区域已锁定为: $REGION_NAME"
|
||||
echo "⚙️ 哨兵现已开启 [每30分钟] 的高频高拟真养护循环。"
|
||||
echo "⚙️ 哨兵现已开启 [每20分钟] 的高频高拟真养护循环。"
|
||||
if [[ -n "$TG_TOKEN" ]]; then
|
||||
echo "📡 Webhook 监听已启动 (端口: $AGENT_PORT) 并向中枢发送了注册请求。"
|
||||
|
||||
|
||||
@@ -27,7 +27,8 @@ if ! type log >/dev/null 2>&1; then
|
||||
|
||||
# 日志格式注入 [版本号] 追踪标识
|
||||
local core_msg=$(printf "[v%-5s] [%-5s] [%-7s] [%s] %s" "$local_ver" "$2" "$1" "$REGION_CODE" "$3")
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $core_msg" >> "${INSTALL_DIR}/logs/sentinel.log"
|
||||
# [时区对齐] 强制无视本地时区,以绝对 UTC 时间写入日志
|
||||
echo "[$(date -u '+%Y-%m-%d %H:%M:%S UTC')] $core_msg" >> "${INSTALL_DIR}/logs/sentinel.log"
|
||||
|
||||
# 强制推送到 Systemd Journal (如果系统支持)
|
||||
if command -v logger >/dev/null 2>&1; then
|
||||
@@ -161,53 +162,133 @@ for ((i=1; i<=TOTAL_ACTIONS; i++)); do
|
||||
|
||||
log "$MODULE_NAME" "EXEC " "动作[$i/$TOTAL_ACTIONS]完成 | HTTP状态: $CODE | 抖动坐标: $ACTION_LAT, $ACTION_LON"
|
||||
|
||||
# 【核心升级】行为拉伸:每次动作后强制休眠 90 - 150 秒
|
||||
# 结合动作总数,总耗时将稳定在 10 分钟 到 25 分钟之间
|
||||
# 【核心升级】行为拉伸:每次动作后强制休眠 90 - 120 秒
|
||||
# 结合动作总数,总耗时将稳定在 10 分钟 到 20 分钟之间
|
||||
if [ $i -lt $TOTAL_ACTIONS ]; then
|
||||
SLEEP_TIME=$((90 + RANDOM % 61))
|
||||
SLEEP_TIME=$((90 + RANDOM % 31))
|
||||
log "$MODULE_NAME" "WAIT " "阅读当前页面内容,模拟停留 $SLEEP_TIME 秒..."
|
||||
sleep $SLEEP_TIME
|
||||
fi
|
||||
done
|
||||
|
||||
# --- [结果纠偏自检 (V3.2.1 高精度容错版)] ---
|
||||
# [V3.2.1 热修复] 探针同样应用 $DYNAMIC_IP_PREF 协议自适应
|
||||
PROBE_RESULT=$(curl $CURL_BIND_OPT $DYNAMIC_IP_PREF -m 15 -s -L -o /dev/null -w "%{http_code}|%{url_effective}" https://www.google.com)
|
||||
# --- [结果纠偏自检 (V4.0.9 终极三核雷达: URL跳转 + Premium + Music)] ---
|
||||
# 战术揭秘:汲取开源社区顶级探针的精髓!
|
||||
# 1. 传统 URL 跳转探测:捕捉 www.google.com 底层 302 重定向域名的真实归属。
|
||||
# 2. YT Premium 深度探测:提取核心 contentRegion 变量,并强匹配 www.google.cn 送中特征。
|
||||
# 3. 严格一致性校验:任何一端出现非预期偏移,立即判定为漂移,彻底消除虚假“成功”。
|
||||
|
||||
# 分离状态码与 URL
|
||||
PROBE_CODE=$(echo "$PROBE_RESULT" | cut -d'|' -f1)
|
||||
FINAL_URL=$(echo "$PROBE_RESULT" | cut -d'|' -f2)
|
||||
log "$MODULE_NAME" "INFO " "启动三核交叉验证 (URL跳转 + YT Premium + YT Music) 穿透获取 GeoIP..."
|
||||
|
||||
# 0. 致命拦截:网络断开、DNS 解析失败或严重超时
|
||||
if [ "$PROBE_CODE" == "000" ] || [ -z "$FINAL_URL" ]; then
|
||||
STATUS="🚨 探针失效 (网络阻断或底层路由异常)"
|
||||
# 核心 1: 传统 URL 跳转探测 (请求 www 才能触发准确跳转)
|
||||
JUMP_HDR=$(curl $CURL_BIND_OPT $DYNAMIC_IP_PREF -m 10 -sI "http://www.google.com/")
|
||||
JUMP_LOC=$(echo "$JUMP_HDR" | grep -i "^location:" | tr -d '\r\n')
|
||||
JUMP_GL=""
|
||||
|
||||
if [ -z "$JUMP_LOC" ]; then
|
||||
# 无跳转 (HTTP 200) 通常意味着原生被定位于 US
|
||||
JUMP_GL="US"
|
||||
elif [[ "$JUMP_LOC" == *".google.cn"* ]] || [[ "$JUMP_LOC" == *"gl=CN"* ]]; then
|
||||
JUMP_GL="CN"
|
||||
elif [[ "$JUMP_LOC" == *"gl="* ]]; then
|
||||
JUMP_GL=$(echo "$JUMP_LOC" | grep -o 'gl=[A-Za-z]\{2\}' | head -n 1 | cut -d'=' -f2 | tr 'a-z' 'A-Z')
|
||||
else
|
||||
# 核心战术:精准提取最终 URL 的域名部分
|
||||
ACTUAL_DOMAIN=$(echo "$FINAL_URL" | awk -F/ '{print $3}')
|
||||
|
||||
# [V3.2.1 优化] 使用通配符 * 剔除任意前缀 (无论是 www.google. 还是 ipv4.google.)
|
||||
ACTUAL_SUFFIX=${ACTUAL_DOMAIN#*google.}
|
||||
# 从域名中提取区域后缀 (如 .co.jp -> JP, .com.hk -> HK, .de -> DE)
|
||||
JUMP_DOMAIN=$(echo "$JUMP_LOC" | grep -o 'google\.[a-z\.]*' | head -n 1 | sed 's/google\.//')
|
||||
case "$JUMP_DOMAIN" in
|
||||
"com") JUMP_GL="US" ;;
|
||||
"com.hk") JUMP_GL="HK" ;;
|
||||
"com.tw") JUMP_GL="TW" ;;
|
||||
"co.jp") JUMP_GL="JP" ;;
|
||||
"co.uk") JUMP_GL="GB" ;;
|
||||
"co.kr") JUMP_GL="KR" ;;
|
||||
"co.in") JUMP_GL="IN" ;;
|
||||
"co.id") JUMP_GL="ID" ;;
|
||||
"co.th") JUMP_GL="TH" ;;
|
||||
"com.sg") JUMP_GL="SG" ;;
|
||||
"com.my") JUMP_GL="MY" ;;
|
||||
"com.au") JUMP_GL="AU" ;;
|
||||
"com.br") JUMP_GL="BR" ;;
|
||||
"com.mx") JUMP_GL="MX" ;;
|
||||
"com.ar") JUMP_GL="AR" ;;
|
||||
"co.za") JUMP_GL="ZA" ;;
|
||||
"cn") JUMP_GL="CN" ;;
|
||||
"") JUMP_GL="" ;;
|
||||
*)
|
||||
# 提取标准两字母后缀 (.de, .fr, .nl)
|
||||
LAST_EXT=$(echo "$JUMP_DOMAIN" | awk -F'.' '{print $NF}' | tr 'a-z' 'A-Z')
|
||||
if [ ${#LAST_EXT} -eq 2 ]; then
|
||||
JUMP_GL="$LAST_EXT"
|
||||
else
|
||||
JUMP_GL="US"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# 1. 优先验证:绝对匹配目标后缀 (彻底杜绝 com 包含于 com.hk 的陷阱)
|
||||
if [ "$ACTUAL_SUFFIX" == "$VALID_URL_SUFFIX" ]; then
|
||||
STATUS="✅ 目标区域达成 ($ACTUAL_SUFFIX)"
|
||||
# 核心 2: YouTube Premium 探测
|
||||
YT_PR_GL=""
|
||||
# [修复] 必须带上本轮循环的专属 UA (-A "$SESSION_UA"),防止被 Google CDN 丢进无状态爬虫兜底页
|
||||
YT_PR_HTML=$(curl $CURL_BIND_OPT $DYNAMIC_IP_PREF -m 10 -s -L -A "$SESSION_UA" "https://www.youtube.com/premium")
|
||||
if echo "$YT_PR_HTML" | grep -q 'www.google.cn'; then
|
||||
YT_PR_GL="CN"
|
||||
else
|
||||
# 穷举风控变量提取
|
||||
YT_PR_GL=$(echo "$YT_PR_HTML" | grep -o '"contentRegion":"[A-Za-z]\{2\}"' | head -n 1 | cut -d'"' -f4 | tr 'a-z' 'A-Z')
|
||||
[ -z "$YT_PR_GL" ] && YT_PR_GL=$(echo "$YT_PR_HTML" | grep -o '"countryCode":"[A-Za-z]\{2\}"' | head -n 1 | cut -d'"' -f4 | tr 'a-z' 'A-Z')
|
||||
[ -z "$YT_PR_GL" ] && YT_PR_GL=$(echo "$YT_PR_HTML" | grep -o '"INNERTUBE_CONTEXT_GL":"[A-Za-z]\{2\}"' | head -n 1 | cut -d'"' -f4 | tr 'a-z' 'A-Z')
|
||||
fi
|
||||
|
||||
# 2. 核心拦截:精准捕捉送中特征 (com.hk)
|
||||
elif [ "$ACTUAL_SUFFIX" == "com.hk" ]; then
|
||||
if [ "$REGION_CODE" == "HK" ]; then
|
||||
STATUS="✅ 目标区域达成 (HK 专属 com.hk)"
|
||||
# 核心 3: YouTube Music 探测
|
||||
YT_MU_GL=""
|
||||
# [修复] 同样加持 UA 装甲,强行唤出完整版前端框架
|
||||
YT_MU_HTML=$(curl $CURL_BIND_OPT $DYNAMIC_IP_PREF -m 10 -s -L -A "$SESSION_UA" "https://music.youtube.com/")
|
||||
if echo "$YT_MU_HTML" | grep -q 'www.google.cn'; then
|
||||
YT_MU_GL="CN"
|
||||
else
|
||||
# [修复] Music 的核心配置变量是 INNERTUBE_CONTEXT_GL
|
||||
YT_MU_GL=$(echo "$YT_MU_HTML" | grep -o '"INNERTUBE_CONTEXT_GL":"[A-Za-z]\{2\}"' | head -n 1 | cut -d'"' -f4 | tr 'a-z' 'A-Z')
|
||||
[ -z "$YT_MU_GL" ] && YT_MU_GL=$(echo "$YT_MU_HTML" | grep -o '"countryCode":"[A-Za-z]\{2\}"' | head -n 1 | cut -d'"' -f4 | tr 'a-z' 'A-Z')
|
||||
[ -z "$YT_MU_GL" ] && YT_MU_GL=$(echo "$YT_MU_HTML" | grep -o '"GL":"[A-Za-z]\{2\}"' | head -n 1 | cut -d'"' -f4 | tr 'a-z' 'A-Z')
|
||||
fi
|
||||
|
||||
# [基准对齐] 提取配置大区 (兼容州级穿透),并修正英国的 ISO 代码
|
||||
TARGET_CC="${REGION_CODE%%-*}"
|
||||
[ "$TARGET_CC" == "UK" ] && TARGET_CC="GB"
|
||||
|
||||
# --- 终极审判逻辑 (以 YouTube 核心业务为主导,兼顾底层雷达权重) ---
|
||||
IS_CN=0
|
||||
VALID_PROBES=0
|
||||
|
||||
# 1. 扫描所有探针,统计有效性并执行“送中”一票否决
|
||||
for val in "$JUMP_GL" "$YT_PR_GL" "$YT_MU_GL"; do
|
||||
if [ -n "$val" ]; then
|
||||
((VALID_PROBES++))
|
||||
[ "$val" == "CN" ] && IS_CN=1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ $VALID_PROBES -eq 0 ]; then
|
||||
STATUS="🚨 探针失效 (三核全部熔断,可能遭严重风控拦截)"
|
||||
elif [ $IS_CN -eq 1 ]; then
|
||||
STATUS="❌ 严重高危!三核雷达判定 IP 已被中国大陆锁定 (送中)!"
|
||||
else
|
||||
# 2. 评估核心流媒体业务是否达标 (只要 YT_PR 或 YT_MU 其一达标,即视为成功)
|
||||
YT_MATCH=0
|
||||
[ "$YT_PR_GL" == "$TARGET_CC" ] && YT_MATCH=1
|
||||
[ "$YT_MU_GL" == "$TARGET_CC" ] && YT_MATCH=1
|
||||
|
||||
if [ $YT_MATCH -eq 1 ]; then
|
||||
# 3. 核心业务达标,进一步评估底层路由权重
|
||||
if [ -n "$JUMP_GL" ] && [ "$JUMP_GL" != "$TARGET_CC" ]; then
|
||||
# YT 解锁了,但基础跳转 IP 库漂移了 (降级为 ✅,但备注底层漂移)
|
||||
STATUS="✅ 目标区域达成 (YT主导成功, Jump副雷达漂移至 ${JUMP_GL}) | Prem: ${YT_PR_GL:-无} | Music: ${YT_MU_GL:-无}"
|
||||
else
|
||||
STATUS="❌ 严重漂移!判定为送中区 (实际跳往 $ACTUAL_SUFFIX)"
|
||||
# 完美达成
|
||||
STATUS="✅ 目标区域达成 (Jump: ${JUMP_GL:-无} | Prem: ${YT_PR_GL:-无} | Music: ${YT_MU_GL:-无})"
|
||||
fi
|
||||
|
||||
# 3. 宽容处理:遵守 Google 无跳转新规 (严格限定必须是纯粹的 com)
|
||||
# [视觉优化] 留在 .com 代表 IP 极度纯净未被区域沙盒锁定,计入成功战绩!
|
||||
elif [ "$ACTUAL_SUFFIX" == "com" ]; then
|
||||
STATUS="✅ 目标区域达成 (免签停留 .com 通用主站)"
|
||||
|
||||
# 4. 跨区漂移:所有预判之外的后缀,全部视为异常
|
||||
else
|
||||
STATUS="⚠️ 跨区跳板漂移 (当前实际归属: $ACTUAL_SUFFIX)"
|
||||
# YouTube 流媒体核心未能解锁目标区域,宣判漂移
|
||||
STATUS="⚠️ 区域发生漂移!目标 $TARGET_CC,实际 (Jump: ${JUMP_GL:-无} | Prem: ${YT_PR_GL:-无} | Music: ${YT_MU_GL:-无})"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -5,24 +5,102 @@
|
||||
|
||||
source /opt/ip_sentinel/config.conf
|
||||
|
||||
TARGET_IP=$(echo "${BIND_IP:-$PUBLIC_IP}" | tr -d '[]')
|
||||
IP_PROTO="${IP_PREF:-4}"
|
||||
# ==========================================
|
||||
# 1. 动态网络锚定与协议自适应 (专为多 IP / NAT 架构打造)
|
||||
# ==========================================
|
||||
DYNAMIC_IP_PREF="${IP_PREF:-4}"
|
||||
PROBE_ARGS=("-y" "-j" "-f") # 默认注入: 自动确认、JSON格式、明文无掩码IP
|
||||
|
||||
# 1. 静默拉取原始数据 (消除短链接 RCE 劫持风险,收编为本地固化执行)
|
||||
# 强壮正则:支持 V4, V6 以及带有 [] 护甲的 V6 (兼容多 IP 站群机)
|
||||
if [[ -n "$BIND_IP" && "$BIND_IP" =~ ^[0-9a-fA-F:\[\]\.]+$ ]]; then
|
||||
RAW_BIND_IP=$(echo "$BIND_IP" | tr -d '[]')
|
||||
# 严格探测物理网卡/虚拟 IP 存活状态,防止 IP 漂移导致探针彻底报错
|
||||
if ip addr show 2>/dev/null | grep -qw "$RAW_BIND_IP"; then
|
||||
# 恢复使用官方原生参数 -i,不再进行徒劳的底层劫持
|
||||
PROBE_ARGS+=("-i" "$RAW_BIND_IP")
|
||||
|
||||
# 智能识别 V4 / V6,强制覆盖系统默认的 IP_PREF
|
||||
if [[ "$RAW_BIND_IP" == *":"* ]]; then
|
||||
DYNAMIC_IP_PREF="6"
|
||||
elif [[ "$RAW_BIND_IP" == *"."* ]]; then
|
||||
DYNAMIC_IP_PREF="4"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# 补齐协议版本参数 (-4 或 -6)
|
||||
PROBE_ARGS+=("-${DYNAMIC_IP_PREF}")
|
||||
|
||||
# 2. 智能拉取引擎 (官方主干优先防 RCE,双栈 CDN 保底,外加文件防伪强校验)
|
||||
PROBE_SCRIPT="/opt/ip_sentinel/core/ip_probe.sh"
|
||||
if [ ! -x "$PROBE_SCRIPT" ]; then
|
||||
# 若本地探针尚未就绪,直接从 GitHub 官方主干拉取底层源码,绕过未知域名
|
||||
curl -sL "https://raw.githubusercontent.com/xykt/IPQuality/main/ip.sh" -o "$PROBE_SCRIPT" 2>/dev/null
|
||||
|
||||
# [校验 1] 验证本地残留脚本是否损坏 (防止之前被墙或拦截返回了 HTML 报错页)
|
||||
if [ -f "$PROBE_SCRIPT" ] && ! grep -q "xykt" "$PROBE_SCRIPT" 2>/dev/null; then
|
||||
rm -f "$PROBE_SCRIPT"
|
||||
fi
|
||||
|
||||
if [ ! -s "$PROBE_SCRIPT" ]; then
|
||||
# 🛡️ 首选防线: 严格遵守从 GitHub 官方主干拉取,捍卫纯净底线
|
||||
curl -sL -m 10 "https://raw.githubusercontent.com/xykt/IPQuality/main/ip.sh" -o "$PROBE_SCRIPT" 2>/dev/null
|
||||
|
||||
# 🚑 文件防伪校验: 如果纯 V6 无法解析 GitHub 返回了 HTML 报错页,剔除它!
|
||||
if ! grep -q "xykt" "$PROBE_SCRIPT" 2>/dev/null; then
|
||||
rm -f "$PROBE_SCRIPT" 2>/dev/null
|
||||
# 降级到双栈 CDN 节点兜底 (仅在 GitHub 彻底失效时启用)
|
||||
curl -sL -m 15 "https://IP.Check.Place" -o "$PROBE_SCRIPT" 2>/dev/null
|
||||
fi
|
||||
chmod +x "$PROBE_SCRIPT" 2>/dev/null
|
||||
fi
|
||||
|
||||
# 采用本地执行,彻底封死运行时的外部投毒通道
|
||||
RAW_OUTPUT=$(timeout 180 bash "$PROBE_SCRIPT" -y -j -${IP_PROTO} -i "${TARGET_IP}" 2>/dev/null)
|
||||
# ==========================================
|
||||
# 3. 极速预检与容灾打靶系统
|
||||
# ==========================================
|
||||
|
||||
# 2. 极致截取 JSON (无视开头的赞助商广告与不可见字符,精准提取)
|
||||
# 封装链路预检函数 (4秒极速探路,拒绝死等)
|
||||
preflight_check() {
|
||||
local curl_args=("-s" "-m" "4")
|
||||
# 提取网卡和协议约束
|
||||
for ((i=1; i<=$#; i++)); do
|
||||
if [[ "${!i}" == "-i" ]]; then
|
||||
local next=$((i+1))
|
||||
curl_args+=("--interface" "${!next}")
|
||||
elif [[ "${!i}" == "-4" ]]; then
|
||||
curl_args+=("-4")
|
||||
elif [[ "${!i}" == "-6" ]]; then
|
||||
curl_args+=("-6")
|
||||
fi
|
||||
done
|
||||
# 验证该路由设置是否能成功连通外部网络
|
||||
curl "${curl_args[@]}" "https://www.cloudflare.com/cdn-cgi/trace" >/dev/null 2>&1
|
||||
return $?
|
||||
}
|
||||
|
||||
# 📡 寻路雷达:测定哪一组参数可以走通
|
||||
FINAL_ARGS=()
|
||||
if preflight_check "${PROBE_ARGS[@]}"; then
|
||||
# 阶梯 0: 原定参数 (带 BIND_IP 和协议) 通畅
|
||||
FINAL_ARGS=("${PROBE_ARGS[@]}")
|
||||
else
|
||||
# 阶梯 1: 剥离物理网卡限制,只保留协议限制
|
||||
FALLBACK_ARGS=("-y" "-j" "-${DYNAMIC_IP_PREF}")
|
||||
if preflight_check "${FALLBACK_ARGS[@]}"; then
|
||||
FINAL_ARGS=("${FALLBACK_ARGS[@]}")
|
||||
else
|
||||
# 阶梯 2: 终极裸跑 (不限网卡,不限协议)
|
||||
FINAL_ARGS=("-y" "-j")
|
||||
fi
|
||||
fi
|
||||
|
||||
# ==========================================
|
||||
# 4. 终极实弹打靶
|
||||
# ==========================================
|
||||
|
||||
# 此时 FINAL_ARGS 已经被证实是连通的,我们只执行 1 次 ip.sh
|
||||
# 将超时放宽至 300 秒,给第三方 API (如 ipregistry) 充足的响应时间
|
||||
RAW_OUTPUT=$(timeout 300 bash "$PROBE_SCRIPT" "${FINAL_ARGS[@]}" 2>/dev/null)
|
||||
JSON_DATA="{${RAW_OUTPUT#*\{}"
|
||||
|
||||
# 2. 提取基础物理定位与身份特征 (兼作合法性校验)
|
||||
ESC=$(printf '\033')
|
||||
JSON_DATA=$(printf "%s" "$JSON_DATA" | sed -e "s/${ESC}\[[0-9;]*[a-zA-Z]//g" -e "s/${ESC}[0-9;]*[a-zA-Z]//g" -e "s/x1b\\[[0-9;]*[a-zA-Z]//g" -e "s/x1b[0-9;]*[a-zA-Z]//g")
|
||||
IP_ADDR=$(echo "$JSON_DATA" | jq -r '.Head.IP // empty' 2>/dev/null)
|
||||
|
||||
if [ -z "$IP_ADDR" ]; then
|
||||
@@ -36,7 +114,6 @@ if [ -z "$IP_ADDR" ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
[ -z "$IP_ADDR" ] && IP_ADDR="$PUBLIC_IP"
|
||||
ASN=$(echo "$JSON_DATA" | jq -r '.Info.ASN // "Unknown"' 2>/dev/null)
|
||||
ORG=$(echo "$JSON_DATA" | jq -r '.Info.Organization // "Unknown"' 2>/dev/null)
|
||||
CITY=$(echo "$JSON_DATA" | jq -r '.Info.City.Name // "Unknown"' 2>/dev/null)
|
||||
@@ -51,6 +128,13 @@ IPQS_SCORE=$(echo "$JSON_DATA" | jq -r '.Score.IPQS // "0"' 2>/dev/null)
|
||||
IP2L_SCORE=$(echo "$JSON_DATA" | jq -r '.Score.IP2LOCATION // "0"' 2>/dev/null)
|
||||
FRAUD_RISK=$(echo "$JSON_DATA" | jq -r '.Score.ipapi // "0%"' 2>/dev/null)
|
||||
|
||||
# [修复] 清洗 API 阻断返回的 null 值,保障面板整洁
|
||||
[ "$SCAM_SCORE" == "null" ] || [ -z "$SCAM_SCORE" ] && SCAM_SCORE="N/A"
|
||||
[ "$ABUSE_SCORE" == "null" ] || [ -z "$ABUSE_SCORE" ] && ABUSE_SCORE="N/A"
|
||||
[ "$IPQS_SCORE" == "null" ] || [ -z "$IPQS_SCORE" ] && IPQS_SCORE="N/A"
|
||||
[ "$IP2L_SCORE" == "null" ] || [ -z "$IP2L_SCORE" ] && IP2L_SCORE="N/A"
|
||||
[ "$FRAUD_RISK" == "null" ] || [ -z "$FRAUD_RISK" ] && FRAUD_RISK="N/A"
|
||||
|
||||
# 代理/VPN 特征探针 (只要有一家认为是代理,就亮黄灯)
|
||||
IS_PROXY="🟢 干净"
|
||||
if echo "$JSON_DATA" | jq -e '.Factor.Proxy | to_entries | any(.value == true)' >/dev/null 2>&1 || \
|
||||
@@ -65,11 +149,15 @@ parse_media() {
|
||||
local type=$(echo "$JSON_DATA" | jq -r ".Media.$1.Type // \"\"" 2>/dev/null)
|
||||
|
||||
if [[ "$status" == *"解锁"* ]]; then
|
||||
echo "🟢 $reg ($type)"
|
||||
elif [[ "$status" == *"屏蔽"* ]] || [[ "$status" == *"失败"* ]]; then
|
||||
echo "🔴 屏蔽"
|
||||
echo "🟢 ${reg} (${type})"
|
||||
elif [[ "$status" == *"仅"* ]] || [[ "$status" == *"机房"* ]] || [[ "$status" == *"待支持"* ]]; then
|
||||
# 捕捉 Netflix "仅自制"、ChatGPT "仅网页"、TikTok "机房" 等半残状态
|
||||
echo "🟡 ${status} ${reg}"
|
||||
elif [[ "$status" == *"屏蔽"* ]] || [[ "$status" == *"失败"* ]] || [[ "$status" == *"中国"* ]] || [[ "$status" == *"禁"* ]]; then
|
||||
# 捕捉 "屏蔽"、"失败"、"禁会员"、"中国"(送中)
|
||||
echo "🔴 ${status}"
|
||||
else
|
||||
echo "⚪ $status"
|
||||
echo "⚪ ${status}"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -93,11 +181,20 @@ DNS_MARK=$(echo "$JSON_DATA" | jq -r '.Mail.DNSBlacklist.Marked // "0"' 2>/dev/n
|
||||
|
||||
# 6. “送中” 逻辑判定
|
||||
WARNING_MSG=""
|
||||
if [[ "$RAW_YT_REG" == *"[CN]"* ]] || [[ "$RAW_YT_STAT" == *"China"* ]]; then
|
||||
WARNING_MSG="%0A🚨 **[高危] 该节点已被 Google 判定为中国大陆 (送中)!**%0A"
|
||||
# [修复] 官方 JSON 已经去除了方括号,直接匹配 CN 或者状态包含中国
|
||||
if [[ "$RAW_YT_REG" == "CN" ]] || [[ "$RAW_YT_STAT" == *"中国"* ]]; then
|
||||
# [修复] 采用 Bash 扩展转义 ($'...'),彻底解决直接打印 \n 字符的问题
|
||||
WARNING_MSG=$'\n🚨 **[高危] 该节点已被 Google 判定为中国大陆 (送中)!**\n'
|
||||
fi
|
||||
|
||||
# 7. 组装情报级 Markdown 战报
|
||||
# 提取本地运行态版本与生成时间戳
|
||||
LOCAL_VER="${AGENT_VERSION:-未知}"
|
||||
# [时区对齐] 深海声呐战报落款强制采用绝对 UTC 时间
|
||||
CURRENT_TIME=$(date -u "+%Y-%m-%d %H:%M:%S UTC")
|
||||
# [体验修复] 探针返回的 IP 带有星号掩码,强制使用中枢下发的真实 IP 拼接,以防直达链接失效!
|
||||
LINK_IP=$(echo "$PUBLIC_IP" | tr -d '[]')
|
||||
|
||||
REPORT="🎯 *IP-Sentinel 深海声呐报告*
|
||||
📍 节点:\`${NODE_ALIAS}\`
|
||||
🌐 地址:\`${IP_ADDR}\`${WARNING_MSG}
|
||||
@@ -111,7 +208,7 @@ REPORT="🎯 *IP-Sentinel 深海声呐报告*
|
||||
*🛡️ 欺诈雷达 (0为最优)*
|
||||
• **Scamalytics:** \`${SCAM_SCORE}/100\`
|
||||
• **AbuseIPDB:** \`${ABUSE_SCORE}/100\`
|
||||
• **IPQuality:** \`${IPQS_SCORE}/100\`
|
||||
• **IPQS:** \`${IPQS_SCORE}/100\`
|
||||
• **IP2Location:** \`${IP2L_SCORE}/100\`
|
||||
• **IPAPI 风险率:** \`${FRAUD_RISK}\`
|
||||
|
||||
@@ -127,13 +224,43 @@ REPORT="🎯 *IP-Sentinel 深海声呐报告*
|
||||
• **25 端口出站:** ${P25_TEXT}
|
||||
• **DNS 污染库:** 严重 \`${DNS_BLACK}\` | 轻微 \`${DNS_MARK}\`
|
||||
|
||||
_👉 [🔍 详细信用图谱直达 (Scamalytics)](https://scamalytics.com/ip/${TARGET_IP})_
|
||||
_👉 [🔍 详细信用图谱直达 (Scamalytics)](https://scamalytics.com/ip/${LINK_IP})_
|
||||
|
||||
\`[SYSTEM_REPORT]|QUALITY|${NODE_NAME}|${SCAM_SCORE}|${RAW_NF_STAT}\`"
|
||||
⏱️ \`${CURRENT_TIME}\` | ⚙️ \`v${LOCAL_VER}\`"
|
||||
|
||||
# 8. 直送指挥部
|
||||
curl -s -X POST "${TG_API_URL}" \
|
||||
-d "chat_id=${CHAT_ID}" \
|
||||
-d "parse_mode=Markdown" \
|
||||
-d "disable_web_page_preview=true" \
|
||||
-d "text=${REPORT}" >/dev/null
|
||||
# [修复] 剥离显示层的 N/A,确保传给 Master 趋势数据库的是纯数字 (无效则记为0)
|
||||
SAFE_SCAM_SCORE=$(echo "$SCAM_SCORE" | tr -cd '0-9')
|
||||
[ -z "$SAFE_SCAM_SCORE" ] && SAFE_SCAM_SCORE="0"
|
||||
|
||||
# [v4.0.2 扩容] 提取 Google(基于YouTube) 和 ChatGPT 的原生状态
|
||||
RAW_GOOG_STAT="${RAW_YT_REG:-$RAW_YT_STAT}"
|
||||
[ -z "$RAW_GOOG_STAT" ] && RAW_GOOG_STAT="未知"
|
||||
RAW_GPT_STAT=$(echo "$JSON_DATA" | jq -r '.Media.ChatGPT.Status // "未知"' 2>/dev/null)
|
||||
|
||||
# [修复] 废除会导致中文 UTF-8 字节被劈裂(产生乱码 )的 awk 暴力截断。
|
||||
# 原始状态文本极短(如"解锁"、"屏蔽"、"US"),只需洗掉隐形换行符即可安全传输。
|
||||
S_GOOG=$(echo "$RAW_GOOG_STAT" | tr -d '\n\r ')
|
||||
S_NF=$(echo "$RAW_NF_STAT" | tr -d '\n\r ')
|
||||
S_GPT=$(echo "$RAW_GPT_STAT" | tr -d '\n\r ')
|
||||
CB_DATA="svq|${NODE_NAME}|${SAFE_SCAM_SCORE}|${S_GOOG}|${S_NF}|${S_GPT}"
|
||||
|
||||
# 8. 挂载内联键盘并直送指挥部
|
||||
JSON_PAYLOAD=$(jq -n \
|
||||
--arg cid "$CHAT_ID" \
|
||||
--arg txt "$REPORT" \
|
||||
--arg cb "$CB_DATA" \
|
||||
--arg cb_manage "manage:${NODE_NAME}" \
|
||||
'{
|
||||
chat_id: $cid,
|
||||
text: $txt,
|
||||
parse_mode: "Markdown",
|
||||
disable_web_page_preview: true,
|
||||
reply_markup: {
|
||||
inline_keyboard: [
|
||||
[{text: "📥 将本次体检录入趋势库", callback_data: $cb}],
|
||||
[{text: "⚙️ 调出该节点控制台", callback_data: $cb_manage}]
|
||||
]
|
||||
}
|
||||
}')
|
||||
|
||||
curl -s -X POST "${TG_API_URL}" -H "Content-Type: application/json" -d "$JSON_PAYLOAD" >/dev/null
|
||||
@@ -45,7 +45,8 @@ fi
|
||||
log_msg() {
|
||||
local TYPE=$1
|
||||
local MSG=$2
|
||||
local TIME=$(date "+%Y-%m-%d %H:%M:%S")
|
||||
# [时区对齐] 强制无视本地时区,以绝对 UTC 时间生成日志时间戳
|
||||
local TIME=$(date -u "+%Y-%m-%d %H:%M:%S UTC")
|
||||
# [v3.4.0 核心] 提取当前配置中的版本锚点
|
||||
local local_ver="${AGENT_VERSION:-未知}"
|
||||
|
||||
|
||||
@@ -36,7 +36,7 @@ log() {
|
||||
|
||||
# 日志格式注入 [版本号] 追踪标识
|
||||
local core_msg=$(printf "[v%-5s] [%-5s] [%-7s] [%s] %s" "$local_ver" "$level" "$module" "$REGION_CODE" "$msg")
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $core_msg" >> "$LOG_FILE"
|
||||
echo "[$(date -u '+%Y-%m-%d %H:%M:%S UTC')] $core_msg" >> "$LOG_FILE"
|
||||
|
||||
# 强制推送到 Systemd Journal (如果系统支持)
|
||||
if command -v logger >/dev/null 2>&1; then
|
||||
@@ -50,7 +50,7 @@ export -f log
|
||||
export CONFIG_FILE INSTALL_DIR
|
||||
|
||||
# 3. 防僵尸网络特征 (Cron Jitter) - 核心隐蔽逻辑
|
||||
# 配合每 30 分钟的调度周期,将随机休眠控制在 0 到 180 秒内,彻底打散全球并发请求
|
||||
# 配合每 20 分钟的调度周期,将随机休眠控制在 0 到 180 秒内,彻底打散全球并发请求
|
||||
if [ -t 1 ]; then
|
||||
log "SYSTEM" "INFO " "💻 检测到人工终端干预,跳过静默休眠,立即执行任务!"
|
||||
else
|
||||
|
||||
@@ -18,6 +18,22 @@ if [ -z "$TG_TOKEN" ] || [ -z "$CHAT_ID" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# ================== [v4.0.8 核心: 防并发风暴与 60 秒冷却机制] ==================
|
||||
LOCK_FILE="${INSTALL_DIR}/core/.report_lock"
|
||||
if [ -f "$LOCK_FILE" ]; then
|
||||
LAST_RUN=$(cat "$LOCK_FILE" 2>/dev/null)
|
||||
NOW=$(date +%s)
|
||||
# 校验 LAST_RUN 是否为有效数字,并比对 60 秒冷却期
|
||||
if [[ "$LAST_RUN" =~ ^[0-9]+$ ]]; then
|
||||
if [ $((NOW - LAST_RUN)) -lt 60 ]; then
|
||||
echo "[$(date -u '+%Y-%m-%d %H:%M:%S UTC')] [v${AGENT_VERSION:-未知}] [WARN ] [Report ] [SYSTEM] ⚠️ 战报请求过于频繁,触发 60 秒防并发风暴拦截。" >> "${INSTALL_DIR}/logs/sentinel.log"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
echo $(date +%s) > "$LOCK_FILE"
|
||||
# ==============================================================================
|
||||
|
||||
# 2. 节点元数据抓取 (v3.2.2 协议自适应与多级容灾版)
|
||||
# [v3.5.2 核心: 引入双轨身份架构]
|
||||
if [ -z "$NODE_NAME" ]; then
|
||||
@@ -96,7 +112,7 @@ case "$REGION_CODE" in
|
||||
*) FLAG="🌐" ;;
|
||||
esac
|
||||
|
||||
# 3. 截取过去 24 小时的日志 (每天48次轮询,保留最新 1000 行足以覆盖单日战报)
|
||||
# 3. 截取过去 24 小时的日志 (每天72次轮询,保留最新 1000 行足以覆盖单日战报)
|
||||
LOG_CONTENT=$(tail -n 1000 "$LOG_FILE" 2>/dev/null)
|
||||
|
||||
if [ -z "$LOG_CONTENT" ]; then
|
||||
@@ -164,7 +180,7 @@ else
|
||||
MSG="$MSG
|
||||
|
||||
🕒 **最近执行快照 [${LAST_MOD:-"System"}]:**
|
||||
时间: ${LAST_TIME:-"暂无数据"}
|
||||
时间: ${LAST_TIME:-"暂无数据"} (节点本地)
|
||||
结论: ${LAST_SCORE:-"暂无数据"}"
|
||||
|
||||
fi
|
||||
@@ -174,6 +190,8 @@ fi
|
||||
# ==========================================
|
||||
# 从配置文件提取当前本地版本,若无则默认为未知
|
||||
LOCAL_VER="${AGENT_VERSION:-未知}"
|
||||
# [时区对齐] 强制获取当前绝对 UTC 时间,作为全局统一的战报落款
|
||||
REPORT_UTC_TIME=$(date -u "+%Y-%m-%d %H:%M:%S UTC")
|
||||
|
||||
# 极轻量级探针: 抓取 GitHub 云端的 version.txt (超时 3 秒,KV解析法)
|
||||
REPO_RAW_URL="https://raw.githubusercontent.com/hotyue/IP-Sentinel/main"
|
||||
@@ -183,6 +201,7 @@ REMOTE_VER=$(curl -s -m 3 "${REPO_RAW_URL}/version.txt" | grep "^AGENT_VERSION="
|
||||
MSG="$MSG
|
||||
----------------------------
|
||||
🛡️ **系统引擎状态**
|
||||
⏱️ 战报生成: \`${REPORT_UTC_TIME}\`
|
||||
当前运行版本: \`v${LOCAL_VER}\`"
|
||||
|
||||
# 比对逻辑:如果成功抓到了远端版本,且和本地不一样
|
||||
@@ -200,11 +219,24 @@ else
|
||||
💡 *哨兵正在后台默默守护您的资产。*"
|
||||
fi
|
||||
|
||||
# 5. 调用 API 推送 (接入安全网关)
|
||||
# 5. 调用 API 推送 (接入安全网关,挂载交互式控制台按钮)
|
||||
JSON_PAYLOAD=$(jq -n \
|
||||
--arg cid "$CHAT_ID" \
|
||||
--arg txt "$MSG" \
|
||||
--arg cb "manage:${NODE_NAME}" \
|
||||
'{
|
||||
chat_id: $cid,
|
||||
text: $txt,
|
||||
parse_mode: "Markdown",
|
||||
disable_web_page_preview: true,
|
||||
reply_markup: {
|
||||
inline_keyboard: [[{text: "⚙️ 调出该节点控制台", callback_data: $cb}]]
|
||||
}
|
||||
}')
|
||||
|
||||
RESPONSE=$(curl -s -m 10 -X POST "${TG_API_URL}" \
|
||||
-d "chat_id=${CHAT_ID}" \
|
||||
-d "text=${MSG}" \
|
||||
-d "parse_mode=Markdown")
|
||||
-H "Content-Type: application/json" \
|
||||
-d "$JSON_PAYLOAD")
|
||||
|
||||
if [[ "$RESPONSE" != *"\"ok\":true"* ]]; then
|
||||
echo "❌ 战报发送失败!API 响应: $RESPONSE" >> "${INSTALL_DIR}/logs/error.log"
|
||||
|
||||
@@ -30,6 +30,8 @@ echo "========================================================"
|
||||
echo "[1/4] 正在停止并删除 Systemd 服务..."
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
echo "💡 检测到 Systemd 环境,正在抹除 Systemd 服务单元..."
|
||||
# [防死锁与走火修复] 先发送 SIGKILL 瞬间抹杀常驻守护进程,防止卡死或触发遗言
|
||||
systemctl kill --signal=SIGKILL ip-sentinel-agent-daemon.service >/dev/null 2>&1 || true
|
||||
systemctl disable --now ip-sentinel-runner.service ip-sentinel-runner.timer \
|
||||
ip-sentinel-updater.service ip-sentinel-updater.timer \
|
||||
ip-sentinel-report.service ip-sentinel-report.timer \
|
||||
@@ -58,13 +60,30 @@ pkill -9 -f "updater.sh" >/dev/null 2>&1
|
||||
pkill -9 -f "tg_report.sh" >/dev/null 2>&1
|
||||
pkill -9 -f "mod_google.sh" >/dev/null 2>&1
|
||||
pkill -9 -f "mod_trust.sh" >/dev/null 2>&1
|
||||
pkill -9 -f "sentinel_scheduler.sh" >/dev/null 2>&1
|
||||
|
||||
# 3. 清除系统定时任务 (Cron)
|
||||
echo "[3/4] 正在清理系统定时任务 (Cron)..."
|
||||
if crontab -l >/dev/null 2>&1; then
|
||||
crontab -l | grep -v "ip_sentinel" > /tmp/cron_backup
|
||||
crontab /tmp/cron_backup
|
||||
rm -f /tmp/cron_backup
|
||||
# [终极安全防御] 直接使用管道流过滤并覆盖,不产生任何 /tmp 落地文件,杜绝劫持提权
|
||||
crontab -l 2>/dev/null | grep -v "ip_sentinel" | crontab - >/dev/null 2>&1 || true
|
||||
|
||||
# ==========================================
|
||||
# 🛑 [物理抹除] 彻底扫除 Alpine 系统的底层残留与双路径文件
|
||||
# ==========================================
|
||||
for CRON_FILE in "/var/spool/cron/crontabs/root" "/etc/crontabs/root"; do
|
||||
if [ -f "$CRON_FILE" ]; then
|
||||
grep -v "ip_sentinel" "$CRON_FILE" > "${CRON_FILE}.tmp" 2>/dev/null || true
|
||||
cat "${CRON_FILE}.tmp" > "$CRON_FILE" 2>/dev/null || true
|
||||
rm -f "${CRON_FILE}.tmp" 2>/dev/null
|
||||
fi
|
||||
done
|
||||
# 清理 OpenRC 开机启动项
|
||||
rm -f /etc/local.d/ip_sentinel.start 2>/dev/null
|
||||
rm -f /etc/local.d/ip_sentinel_scheduler.start 2>/dev/null
|
||||
|
||||
# 清理极端环境写在 /etc/profile 里的兜底启动项
|
||||
if grep -q "sentinel_scheduler.sh" /etc/profile 2>/dev/null; then
|
||||
sed -i '/sentinel_scheduler\.sh/d' /etc/profile 2>/dev/null || true
|
||||
fi
|
||||
|
||||
# 4. 删除所有文件、日志与临时缓存
|
||||
@@ -73,10 +92,6 @@ if [ -d "$INSTALL_DIR" ]; then
|
||||
rm -rf "$INSTALL_DIR"
|
||||
fi
|
||||
|
||||
# 拔除 /tmp 目录下的所有更新下载临时文件和 V1/V2 遗留的偏移量记录
|
||||
rm -f /tmp/ip_sentinel_*.txt
|
||||
rm -f /tmp/ip_sentinel_*.json
|
||||
|
||||
echo "========================================================"
|
||||
echo "✅ 卸载彻底完成!IP-Sentinel 已从您的系统中无痕移除。"
|
||||
echo "💡 提示:如果安装时在防火墙放行了 Webhook 随机端口,请您按需手动关闭。"
|
||||
|
||||
@@ -30,7 +30,8 @@ log() {
|
||||
|
||||
# 日志格式注入 [版本号] 追踪标识
|
||||
local core_msg=$(printf "[v%-5s] [%-5s] [%-7s] [%s] %s" "$local_ver" "$2" "$1" "$REGION_CODE" "$3")
|
||||
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $core_msg" >> "$LOG_FILE"
|
||||
# [时区对齐] 强制无视本地时区,以绝对 UTC 时间写入日志
|
||||
echo "[$(date -u '+%Y-%m-%d %H:%M:%S UTC')] $core_msg" >> "$LOG_FILE"
|
||||
|
||||
# 强制推送到 Systemd Journal (如果系统支持)
|
||||
if command -v logger >/dev/null 2>&1; then
|
||||
@@ -138,10 +139,15 @@ fi
|
||||
# ==========================================================
|
||||
TMP_PROBE="/tmp/ip_sentinel_probe.sh"
|
||||
$CURL_CMD "https://raw.githubusercontent.com/xykt/IPQuality/main/ip.sh" -o "$TMP_PROBE"
|
||||
if [ -s "$TMP_PROBE" ]; then
|
||||
|
||||
# 🛡️ 供应链防毒:验证脚本内是否包含原作者特有签名,防止被墙重定向为 HTML
|
||||
if [ -s "$TMP_PROBE" ] && grep -q "xykt" "$TMP_PROBE" 2>/dev/null; then
|
||||
mv "$TMP_PROBE" "${INSTALL_DIR}/core/ip_probe.sh"
|
||||
chmod +x "${INSTALL_DIR}/core/ip_probe.sh"
|
||||
log "Updater" "INFO " "✅ 深海声呐底层探针 (ip_probe.sh) 源文件安全对齐"
|
||||
else
|
||||
log "Updater" "WARN " "❌ 探针源文件拉取受损或遭投毒劫持,已触发防砖机制,保留本地旧版本"
|
||||
rm -f "$TMP_PROBE" 2>/dev/null
|
||||
fi
|
||||
|
||||
# ==========================================================
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
prince harry working royal
|
||||
retirement
|
||||
rebate
|
||||
denver nuggets
|
||||
rudy gobert
|
||||
driver's license
|
||||
nuggets
|
||||
jessica biel justin timberlake ultimatum
|
||||
qatar
|
||||
thales
|
||||
destroyer
|
||||
nrl news latrell mitchell
|
||||
heavy snow warning
|
||||
the rookie dead ringer
|
||||
ducks vs oilers
|
||||
ivan soldo
|
||||
uae vs oman
|
||||
cheryl hines
|
||||
deandre ayton
|
||||
real estate market
|
||||
weather brisbane
|
||||
raptors vs cavaliers
|
||||
galatasaray
|
||||
multan sultans vs islamabad united
|
||||
galatasaray vs fenerbahçe
|
||||
torino vs inter
|
||||
hearts fc
|
||||
scottish premier league
|
||||
mohsin khan
|
||||
angkrish raghuvanshi
|
||||
psl
|
||||
magic vs pistons
|
||||
celtic fc
|
||||
peshawar zalmi vs lahore qalandars
|
||||
angers vs psg
|
||||
la liga
|
||||
prem
|
||||
premier league table
|
||||
epl fixtures
|
||||
premier league games
|
||||
alex de minaur
|
||||
sunderland vs nottm forest
|
||||
real betis vs real madrid
|
||||
sai sudharsan
|
||||
jannik sinner
|
||||
gt vs rcb
|
||||
amd stock
|
||||
carey mulligan
|
||||
jermaine jackson
|
||||
hulk hogan
|
||||
coles
|
||||
elon musk
|
||||
ben roberts-smith
|
||||
@@ -27,7 +77,6 @@ bayern munich
|
||||
barcelona vs celta vigo
|
||||
bournemouth vs leeds
|
||||
leverkusen vs bayern
|
||||
psl
|
||||
burnley vs man city
|
||||
elche vs atlético madrid
|
||||
lsg vs rr
|
||||
@@ -69,7 +118,6 @@ bundesliga
|
||||
pl
|
||||
afc cup
|
||||
mars rover
|
||||
celtic fc
|
||||
bayern vs vfb stuttgart
|
||||
bom radar
|
||||
sydney weather
|
||||
@@ -150,51 +198,3 @@ margot robbie
|
||||
oscar piastri
|
||||
formula 1
|
||||
supercars championship
|
||||
ufc
|
||||
optus sport
|
||||
telstra outage
|
||||
kayo sports
|
||||
domain real estate
|
||||
realestate.com.au
|
||||
seek jobs
|
||||
gumtree
|
||||
westpac login
|
||||
anz internet banking
|
||||
nab login
|
||||
aldi catalogue
|
||||
big w
|
||||
target australia
|
||||
the good guys
|
||||
officeworks
|
||||
dan murphys
|
||||
bws
|
||||
chemist warehouse
|
||||
priceline
|
||||
uber eats
|
||||
menulog
|
||||
dominos
|
||||
centrelink login
|
||||
medicare online
|
||||
passport renewal
|
||||
aec enrolment
|
||||
agl energy
|
||||
origin energy
|
||||
stan
|
||||
binge
|
||||
9now
|
||||
7plus
|
||||
abc iview
|
||||
hoyts cinemas
|
||||
event cinemas
|
||||
big bash league
|
||||
the ashes
|
||||
socceroos
|
||||
bathurst 1000
|
||||
booking.com
|
||||
airbnb
|
||||
webjet
|
||||
bali weather
|
||||
smartraveller
|
||||
lotto results
|
||||
powerball results
|
||||
oz lotto
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
shea theodore
|
||||
nikola jokić
|
||||
mark stone
|
||||
naz reid
|
||||
cameron johnson
|
||||
dea
|
||||
dylan guenther
|
||||
jamal murray
|
||||
euphoria cast
|
||||
mlb bo bichette
|
||||
明天的天氣
|
||||
edmonton news
|
||||
radko gudas
|
||||
oil
|
||||
jeffrey viel
|
||||
boat
|
||||
joel quenneville
|
||||
evan bouchard
|
||||
jada wallace
|
||||
oilers
|
||||
boston bruins
|
||||
patrick corbin
|
||||
avs vs sporting
|
||||
peyton krebs
|
||||
elena rybakina
|
||||
shane doan
|
||||
ja'kobe walter
|
||||
mitch marner
|
||||
radio-canada
|
||||
golf
|
||||
hurricanes vs senators
|
||||
al ahli
|
||||
the white house
|
||||
turkish airlines
|
||||
fa cup games
|
||||
atlético madrid vs athletic club
|
||||
tyree wilson
|
||||
monic néron
|
||||
nvidia
|
||||
aryna sabalenka
|
||||
lpga leaderboard
|
||||
randy travis
|
||||
execution by firing squad
|
||||
nelly korda
|
||||
leicester city vs millwall
|
||||
asteroid
|
||||
sunderland vs nottm forest
|
||||
real betis vs real madrid
|
||||
betis – real madrid
|
||||
napoli vs cremonese
|
||||
gta 6
|
||||
japon
|
||||
padres vs rockies
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
фридрих мерц
|
||||
zdf-fernsehgarten
|
||||
halberstadt
|
||||
cathie wood
|
||||
fabian güstrow
|
||||
spencer jones
|
||||
jean alesi
|
||||
hilary duff
|
||||
nhl playoffs
|
||||
msci
|
||||
1. mai
|
||||
ronnie o’sullivan
|
||||
loris karius
|
||||
koningsdag 2026
|
||||
ryan reynolds
|
||||
julia stiles
|
||||
saïd el mala
|
||||
tag der arbeit
|
||||
gesundheitspolitik
|
||||
der bergdoktor
|
||||
bulgarien
|
||||
george clooney
|
||||
jork
|
||||
star citizen
|
||||
donau
|
||||
krassnitzer harald
|
||||
buxtehude
|
||||
chernobyl
|
||||
avs – sporting
|
||||
running point
|
||||
darmstadt
|
||||
dahoam is dahoam
|
||||
أتلتيكو مدريد ضد أتلتيك بيلباو
|
||||
atlético madryt – ath. bilbao
|
||||
portugal
|
||||
erling haaland
|
||||
galatasaray fenerbahce
|
||||
anna carina woitschack
|
||||
nord bei nordwest
|
||||
wil wheaton
|
||||
christian lindner
|
||||
kevin costner
|
||||
samu haber
|
||||
gillian anderson
|
||||
peggy jerofke
|
||||
rafael jódar
|
||||
ernie dosio
|
||||
bibi heinicke
|
||||
denia
|
||||
der alte blaue stunde
|
||||
matthias ginter
|
||||
ralf schmitz
|
||||
maximilian eggestein
|
||||
@@ -148,16 +198,3 @@ abschiebung
|
||||
steuer
|
||||
masters rory mcilroy
|
||||
großglockner
|
||||
news38
|
||||
jessie cave
|
||||
michael schulte
|
||||
wetter frankfurt heute
|
||||
bundesliga ergebnisse
|
||||
aktuelle nachrichten deutschland
|
||||
restaurant in der nähe
|
||||
deutsche bahn fahrplan
|
||||
urlaub buchen
|
||||
rezept für kartoffelsalat
|
||||
dax aktueller stand
|
||||
apotheke notdienst frankfurt
|
||||
günstige flüge
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
nepotismo
|
||||
instituto cervantes
|
||||
airbus
|
||||
tiempo en bilbao
|
||||
el
|
||||
el tiempo en granada
|
||||
tiempo
|
||||
spencer jones
|
||||
encuesta
|
||||
lili pink
|
||||
meteocat
|
||||
trail blazers - spurs
|
||||
el tiempo hoy
|
||||
clasificacion segunda
|
||||
20minutos
|
||||
internacional de bogotá - boyacá chicó
|
||||
el tiempo en valencia
|
||||
lakers vs rockets
|
||||
fluminense - chapecoense
|
||||
rockets - lakers
|
||||
heraldo de aragón
|
||||
víctor muñoz villanueva
|
||||
de tapas por españa
|
||||
milan
|
||||
aitana sánchez gijón
|
||||
clasificacion liga
|
||||
palencia
|
||||
milan vs juventus
|
||||
marseille – nice
|
||||
cartagena fc
|
||||
vivienda
|
||||
hellas verona - lecce
|
||||
marbella
|
||||
alfonso vazquez mayoral fuente ymbro
|
||||
bucaramanga - jaguares
|
||||
toulouse - mónaco
|
||||
eldense
|
||||
nicolai budkov kjær
|
||||
aryna sabalenka
|
||||
jaqueline cristian
|
||||
rafa jodar
|
||||
samantha vallejo-nágera
|
||||
ريال بتيس ضد الريال
|
||||
nvidia
|
||||
rafael jódar
|
||||
jodar tenista
|
||||
sunderland afc - nottingham forest
|
||||
rb leipzig - fc union berlin
|
||||
julián alvarez
|
||||
stade brestois - lens
|
||||
clasificación de primera división
|
||||
javier hidalgo
|
||||
cayetano martínez de irujo
|
||||
@@ -26,7 +76,6 @@ macarena gómez
|
||||
luis merlo
|
||||
bournemouth vs leeds
|
||||
racing de estrasburgo - niza
|
||||
rafael jódar
|
||||
burnley vs man city
|
||||
alaska cantante
|
||||
raúl gonzález blanco
|
||||
@@ -47,7 +96,6 @@ laura moure
|
||||
lens - toulouse
|
||||
girona vs real betis
|
||||
yuri berchiche
|
||||
clasificacion liga
|
||||
posiciones de la liga
|
||||
resultados liga
|
||||
lfp
|
||||
|
||||
@@ -1,3 +1,52 @@
|
||||
taylor swift
|
||||
meteo amiens
|
||||
meteo le mans
|
||||
salle de bal
|
||||
reine camilla
|
||||
david hockney
|
||||
jacques dutronc
|
||||
franck thilliez
|
||||
squamish
|
||||
nasa
|
||||
nba spurs portland
|
||||
mourad zeghidi
|
||||
maries au premier regard episode 10
|
||||
tchad
|
||||
meteofrance
|
||||
meteo grenoble
|
||||
film
|
||||
meteo vannes
|
||||
cnews direct
|
||||
toulouse – clermont
|
||||
martin short
|
||||
le diable s'habille en prada 2 sortie
|
||||
gautier larsonneur
|
||||
milan vs juventus
|
||||
stanley tucci
|
||||
avs – sporting
|
||||
lambert wilson
|
||||
tochukwu nnadi
|
||||
greenwood
|
||||
jaqueline cristian
|
||||
thomas ramos
|
||||
om nice
|
||||
bordeaux-bègles – montpellier
|
||||
drone
|
||||
rochdale association football club
|
||||
doctor who
|
||||
c à vous c à vous
|
||||
sabalenka
|
||||
national 2 groupe a
|
||||
lena situation
|
||||
rafael jódar
|
||||
mask singer
|
||||
alex de minaur
|
||||
oyonnax – agen
|
||||
lucie castets
|
||||
napoli - cremonese
|
||||
ligue1+
|
||||
agnes lassalle
|
||||
jean luc reichmann
|
||||
m6
|
||||
caitlyn jenner
|
||||
star academy
|
||||
@@ -149,9 +198,3 @@ meteo paris
|
||||
actualités en direct
|
||||
résultats ligue 1
|
||||
pharmacie de garde
|
||||
horaires sncf
|
||||
recette crêpes
|
||||
cac 40 en direct
|
||||
acheter billet louvre
|
||||
boulangerie autour de moi
|
||||
carte vitale ameli
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
粉嶺繞道
|
||||
nuggets vs timberwolves
|
||||
蔡卓妍
|
||||
港 漂
|
||||
suns vs thunder
|
||||
鍾澍佳
|
||||
萧正楠
|
||||
金塊 對 灰狼
|
||||
魔術 對 活塞
|
||||
太陽 對 雷霆
|
||||
港 人 北上
|
||||
hsbc
|
||||
何守信
|
||||
謝賢
|
||||
房協
|
||||
rockets vs lakers
|
||||
火箭 對 湖人
|
||||
曾志偉
|
||||
簡淑兒
|
||||
北海道地震
|
||||
莫 雷 拉
|
||||
蔡一傑
|
||||
車路士
|
||||
羅志祥
|
||||
自助餐
|
||||
馮盈盈
|
||||
無時空之戀
|
||||
方力申
|
||||
可嵐
|
||||
切爾西 對 里茲聯
|
||||
谷 婭 溦
|
||||
曼城
|
||||
印度
|
||||
英超
|
||||
利物浦
|
||||
pl
|
||||
arsenal vs newcastle
|
||||
premier league standings
|
||||
曼城 對 南安普敦
|
||||
寒戰
|
||||
米高積遜
|
||||
jaafar jackson
|
||||
nvda
|
||||
吳業坤
|
||||
麻疹
|
||||
林盛斌
|
||||
cuaca besok
|
||||
明天的天氣
|
||||
weather tomorrow
|
||||
rthk
|
||||
weather hong kong
|
||||
天文台
|
||||
hk observatory
|
||||
@@ -5,7 +55,6 @@ observatory
|
||||
csk vs mi
|
||||
長沙灣
|
||||
魔音女團
|
||||
明天的天氣
|
||||
球迷世界
|
||||
天星銀行
|
||||
game
|
||||
@@ -21,7 +70,6 @@ weather
|
||||
班來 對 曼城
|
||||
埃爾切 對 馬德里競技
|
||||
rosenior
|
||||
jaafar jackson
|
||||
艾納斯
|
||||
liam rosenior
|
||||
巴黎聖日耳曼 對 南特
|
||||
@@ -29,7 +77,6 @@ chatgpt image 2
|
||||
啟德醫院
|
||||
李泳漢老婆
|
||||
破產
|
||||
weather tomorrow
|
||||
繼承人
|
||||
英皇群星演唱會
|
||||
布浩榮
|
||||
@@ -58,20 +105,16 @@ srh vs dc
|
||||
麥當勞
|
||||
首岸
|
||||
中国商飞c919
|
||||
pl
|
||||
bundesliga
|
||||
hailey bieber
|
||||
德甲
|
||||
cherki
|
||||
now
|
||||
曼城
|
||||
now tv
|
||||
al nassr
|
||||
洪金寶
|
||||
曼聯
|
||||
車路士
|
||||
切爾西 對 曼聯
|
||||
英超
|
||||
何沛珈
|
||||
熱刺
|
||||
tottenham vs brighton
|
||||
@@ -115,7 +158,6 @@ nba直播
|
||||
全民國家安全教育日
|
||||
運輸署
|
||||
liverpool vs psg
|
||||
利物浦
|
||||
barcelona
|
||||
歐冠
|
||||
馬德里競技 對 巴塞隆納
|
||||
|
||||
@@ -1,10 +1,59 @@
|
||||
村上宗隆
|
||||
ゴー イントゥ スカイ
|
||||
地球温暖化
|
||||
文部科学省
|
||||
カベポスター
|
||||
奈良県
|
||||
バナナマン日村
|
||||
山本由伸
|
||||
警視正
|
||||
中国電力
|
||||
jr九州
|
||||
村田製作所
|
||||
四谷大塚
|
||||
外崎 修 汰
|
||||
備蓄
|
||||
日産 キックス 新型
|
||||
ドナルド・トランプ
|
||||
ニューヨーク
|
||||
小谷昌太郎 イケパラ
|
||||
東京エレクトロン
|
||||
ミラン 対 ユヴェントス
|
||||
宇連ダム 貯水率
|
||||
櫻坂46
|
||||
与沢翼
|
||||
岩手県 大槌町 山林火災
|
||||
谷原章介
|
||||
端午
|
||||
週間天気予報
|
||||
トリノ 対 インテル
|
||||
佐野海舟
|
||||
アーセナル
|
||||
高岡蒼佑
|
||||
マンチェスター・シティfc
|
||||
ゲンク 対 スタンダール
|
||||
kick
|
||||
chat gpt
|
||||
hulu
|
||||
nac 対 アヤックス
|
||||
エプスタイン
|
||||
arsenal đấu với newcastle
|
||||
ベティス 対 rマドリード
|
||||
dior
|
||||
伊藤美来
|
||||
フィギュア
|
||||
玉置浩二
|
||||
生田絵梨花
|
||||
日本高野連会長辞任
|
||||
anaheim
|
||||
sbiグローバルアセットマネジメント
|
||||
ストレンジャーシングス
|
||||
石油
|
||||
ios 26.4 2
|
||||
ポケモンカード
|
||||
シュトゥットガルト 対 フライブルク
|
||||
ドラクエ スマグロ 攻略
|
||||
ipl
|
||||
kick
|
||||
アコム
|
||||
鈴木愛理
|
||||
sox指数
|
||||
@@ -28,7 +77,6 @@ sbi新生銀行 株価
|
||||
ボーンマス 対 リーズ u
|
||||
elche vs atlético madrid
|
||||
レバークーゼン 対 バイエルン
|
||||
dior
|
||||
ソシエダ 対 ヘタフェ
|
||||
サイメモリ
|
||||
b リーグ 順位
|
||||
@@ -117,7 +165,6 @@ wowow
|
||||
新名神高速道路
|
||||
わたせせいぞう
|
||||
ピーチ航空
|
||||
山本由伸
|
||||
アレックス・ベシア
|
||||
リバプール
|
||||
champions league
|
||||
@@ -151,4 +198,3 @@ man united vs leeds
|
||||
最新のニュース 速報
|
||||
ゴールド 相場 チャート
|
||||
近くの静かなカフェ
|
||||
円安 影響 生活
|
||||
|
||||
@@ -1,3 +1,52 @@
|
||||
채원빈
|
||||
분식
|
||||
위례신도시
|
||||
박동혁
|
||||
박용호
|
||||
한화첨단소재
|
||||
한상진
|
||||
차승원
|
||||
한국경제
|
||||
효성중공업
|
||||
최홍라
|
||||
uae vs oman
|
||||
mlb
|
||||
부정승차
|
||||
박하나
|
||||
일본인
|
||||
공천
|
||||
한고은
|
||||
우체국
|
||||
sk증권
|
||||
세리에 a
|
||||
암호화폐
|
||||
수지
|
||||
새마을금고
|
||||
사주
|
||||
차두리
|
||||
평택시 을
|
||||
야닉 시너
|
||||
정성호
|
||||
첼시
|
||||
psg
|
||||
리그앙
|
||||
arsenal đấu với newcastle
|
||||
맨시티
|
||||
man city đấu với southampton
|
||||
아스널
|
||||
arsenal vs newcastle
|
||||
아스널 대 뉴캐슬
|
||||
man city vs southampton
|
||||
안보현
|
||||
트와이스
|
||||
s
|
||||
엔비디아 주가
|
||||
이경실
|
||||
신발
|
||||
하현상
|
||||
김수희
|
||||
gt vs rcb
|
||||
amd 주가
|
||||
왕다루
|
||||
시그널
|
||||
모하메드 살라
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
anggota tentera
|
||||
阿sa
|
||||
掘金 - 森林狼
|
||||
one championship
|
||||
apple iphone foldable
|
||||
太阳 - 雷霆
|
||||
labour day
|
||||
p1p plate
|
||||
nuggets vs timberwolves
|
||||
electronic invoicing
|
||||
malaysian meteorological department
|
||||
datuk seri aminuddin harun
|
||||
court
|
||||
bella astillah
|
||||
today wordle hints
|
||||
ezi ray 01
|
||||
lakers
|
||||
uae vs oman
|
||||
rekod dunia
|
||||
mayat
|
||||
milan vs juventus
|
||||
osasuna vs sevilla
|
||||
estrela amadora vs porto
|
||||
lockheed martin
|
||||
galatasaray vs fenerbahçe
|
||||
polis
|
||||
torino vs inter
|
||||
terengganu fc
|
||||
angkrish raghuvanshi
|
||||
dortmund vs sc freiburg
|
||||
atlético madrid vs athletic club
|
||||
fa cup games
|
||||
แมนซิตี พบ เซาแธมป์ตัน
|
||||
benfica vs moreirense
|
||||
city
|
||||
valencia vs girona
|
||||
man city games
|
||||
bayern vs barcelona
|
||||
英超积分榜
|
||||
angers vs psg
|
||||
sunderland vs nottm forest
|
||||
real betis lwn real madrid cf
|
||||
napoli vs cremonese
|
||||
real betis vs real madrid
|
||||
perfect crown ep 5
|
||||
siti mastura mohamad
|
||||
jannik sinner
|
||||
sai sudharsan
|
||||
yaris cross hybrid
|
||||
cretaceous kraken
|
||||
rayo vallecano vs espanyol
|
||||
dji lito x1
|
||||
levante vs sevilla
|
||||
|
||||
20
data/keywords/kw_NG.txt
Normal file
20
data/keywords/kw_NG.txt
Normal file
@@ -0,0 +1,20 @@
|
||||
nuggets vs timberwolves
|
||||
suns vs thunder
|
||||
magic vs pistons
|
||||
ig
|
||||
bybit
|
||||
jack grealish
|
||||
sanwo olu
|
||||
saheed balogun
|
||||
man u fc
|
||||
live score today
|
||||
tinubu
|
||||
lagos weather
|
||||
nigeria news
|
||||
super eagles
|
||||
naira exchange rate
|
||||
davido
|
||||
wizkid
|
||||
burna boy
|
||||
afcon
|
||||
nollywood
|
||||
@@ -1,3 +1,52 @@
|
||||
europese unie
|
||||
florence pugh
|
||||
concert golden earring ahoy
|
||||
de telegraaf
|
||||
openai
|
||||
crypto insiders
|
||||
stefano domenicali
|
||||
brand emmeloord
|
||||
loosdrecht
|
||||
taylor swift
|
||||
militair
|
||||
emma heesters
|
||||
luik-bastenaken-luik
|
||||
luilakken koningsdag
|
||||
rusland
|
||||
shakira
|
||||
car rental
|
||||
112 leiden
|
||||
taxi
|
||||
michael
|
||||
passengers
|
||||
finale wie is de mol
|
||||
bourtange
|
||||
marseille - nice
|
||||
unchosen
|
||||
prinses
|
||||
sylvester stallone
|
||||
28 years later
|
||||
programma koningsdag 2026
|
||||
milan - juventus
|
||||
aryna sabalenka
|
||||
fortuna
|
||||
curacao
|
||||
atlético madrid - ath. bilbao
|
||||
digid solvinity
|
||||
baywatch
|
||||
boy kemper
|
||||
donyell malen
|
||||
twente - nec
|
||||
afc champions league
|
||||
wesley sonck
|
||||
arnold schwarzenegger
|
||||
devil wears prada
|
||||
jagiellonia białystok – górnik zabrze
|
||||
max verstappen redbull
|
||||
mvv - top oss
|
||||
energiecontract
|
||||
real betis - real madrid
|
||||
fc den bosch
|
||||
maarten van rossem
|
||||
jake paul
|
||||
financiën
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
诈骗
|
||||
us-iran
|
||||
flight
|
||||
jeanette aw
|
||||
jisoo
|
||||
nuggets vs timberwolves
|
||||
suns vs thunder
|
||||
magic vs pistons
|
||||
drug
|
||||
jimmy kimmel
|
||||
erika kirk
|
||||
elon musk
|
||||
hokkaido earthquake today
|
||||
rockets vs lakers
|
||||
labour day
|
||||
angela palmares
|
||||
76ers vs celtics
|
||||
nba scores
|
||||
chernobyl disaster
|
||||
tengah garden residences
|
||||
torino vs inter
|
||||
dortmund vs sc freiburg
|
||||
angkrish raghuvanshi
|
||||
mohsin khan
|
||||
running man
|
||||
arsenal vs lyon
|
||||
genoa vs como
|
||||
kkr vs lsg
|
||||
bwf
|
||||
chelsea vs leeds
|
||||
bologna vs roma
|
||||
angers vs psg
|
||||
giant octopus fossil
|
||||
premier league standings
|
||||
apple iphone fold
|
||||
arsenal vs newcastle
|
||||
man city vs southampton
|
||||
bundesliga
|
||||
israel iran war
|
||||
freddie woodman
|
||||
sunderland vs nottm forest
|
||||
real betis vs real madrid
|
||||
anne hathaway
|
||||
michael jackson
|
||||
sai sudharsan
|
||||
madrid open
|
||||
amd
|
||||
gt vs rcb
|
||||
ijooz
|
||||
raghav chadha
|
||||
darren wang
|
||||
mukesh choudhary
|
||||
danish malewar
|
||||
@@ -22,9 +72,7 @@ leverkusen vs bayern
|
||||
burnley vs man city
|
||||
elche vs atlético madrid
|
||||
psg vs nantes
|
||||
michael jackson
|
||||
al-nassr vs al ahli
|
||||
mohsin khan
|
||||
changi
|
||||
rr vs lsg
|
||||
primary school
|
||||
@@ -150,10 +198,3 @@ asia flights cancelled delayed
|
||||
singapore weather forecast
|
||||
mrt map singapore
|
||||
straitstimes breaking news
|
||||
cpf board login
|
||||
hdb bto launch updates
|
||||
best chicken rice near me
|
||||
public holidays sg
|
||||
singpass login portal
|
||||
changi airport flight status
|
||||
iras tax filing
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
spencer jones
|
||||
張凌赫
|
||||
山本由伸
|
||||
陳德修
|
||||
國巨
|
||||
台玻
|
||||
俠 盜 獵 車手 vi
|
||||
晶豪科
|
||||
無限城
|
||||
謝淑薇
|
||||
台中停電
|
||||
公務員
|
||||
停電
|
||||
hito 流行音樂獎
|
||||
國際珍奶日
|
||||
台積電 內 鬼
|
||||
日圓
|
||||
佳能
|
||||
聯電 股東 會 紀念品
|
||||
張雪機車
|
||||
航空
|
||||
暴龍 對 騎士
|
||||
王苡丞
|
||||
遊戲
|
||||
chelsea đấu với leeds
|
||||
เชลซี พบ ลีดส์
|
||||
聯發科技
|
||||
詹姆士
|
||||
田麗
|
||||
token
|
||||
兵工廠
|
||||
魔術 對 活塞
|
||||
arsenal đấu với newcastle
|
||||
t.o.p.
|
||||
吸血鬼爬行者
|
||||
足總盃
|
||||
arsenal vs newcastle
|
||||
man city đấu với southampton
|
||||
消費券
|
||||
6187
|
||||
cpo概念股
|
||||
anaheim
|
||||
iu
|
||||
山口智子
|
||||
蔡依珊
|
||||
林岱安
|
||||
michael jackson 電影
|
||||
行動電源
|
||||
地震
|
||||
地震速報
|
||||
宋祖兒
|
||||
porter
|
||||
謝京穎
|
||||
@@ -21,8 +71,6 @@ mrvl
|
||||
女警陳芊雯
|
||||
廢死聯盟
|
||||
西甲
|
||||
地震
|
||||
地震速報
|
||||
台灣積體電路製造
|
||||
高頻寬 記憶 體
|
||||
戴奧辛
|
||||
@@ -61,7 +109,6 @@ earth day
|
||||
rklb
|
||||
amd stock
|
||||
宋仲基
|
||||
兵工廠
|
||||
德甲
|
||||
塞爾提克 對 76人
|
||||
justin bieber 演唱會
|
||||
|
||||
@@ -1,3 +1,51 @@
|
||||
alexey mordashov
|
||||
ella langley
|
||||
good morning
|
||||
mortgage rates
|
||||
wren kitchens
|
||||
weather birmingham
|
||||
horoscope
|
||||
nba scores
|
||||
nhl scores
|
||||
nuggets vs timberwolves
|
||||
liverpool weather
|
||||
todays weather
|
||||
playstation plus
|
||||
manchester weather
|
||||
wordle hint
|
||||
everton f.c.
|
||||
dvla
|
||||
snooker results
|
||||
sports
|
||||
delivery
|
||||
ronnie o'sullivan
|
||||
janet cleverly councillor reprimanded
|
||||
criminal record
|
||||
mark selby
|
||||
avs vs sporting
|
||||
david attenborough
|
||||
juventus
|
||||
elena rybakina
|
||||
eric bana
|
||||
roman kemp
|
||||
house fire wolverhampton
|
||||
paul merson
|
||||
is scarlett moffatt pregnant
|
||||
man city fixtures
|
||||
scarlets vs bulls
|
||||
bankruptcy
|
||||
monaco fc
|
||||
jaqueline cristian
|
||||
stock market
|
||||
napoli
|
||||
alex de minaur
|
||||
tigers vs hull fc
|
||||
edinburgh vs sharks
|
||||
mark williams snooker
|
||||
alex sinclair israeli police detention
|
||||
st. johnstone vs raith rovers
|
||||
mo farah
|
||||
newcastle vs bristol
|
||||
tbilisi
|
||||
connor storrie
|
||||
georgia
|
||||
@@ -63,7 +111,6 @@ porto vs tondela
|
||||
santos vs fluminense
|
||||
martin brundle lost f1 seat
|
||||
keegan bradley
|
||||
david attenborough
|
||||
antoni kowalski
|
||||
kezia dugdale
|
||||
car
|
||||
@@ -151,11 +198,3 @@ may bank holiday 2026
|
||||
toto wolff
|
||||
london weather today
|
||||
bbc news latest
|
||||
premier league fixtures
|
||||
tesco near me
|
||||
tube map london
|
||||
uk bank holidays
|
||||
royal family news
|
||||
how to make english tea
|
||||
nhs symptom checker
|
||||
property for sale in london
|
||||
|
||||
@@ -1,3 +1,53 @@
|
||||
shea theodore
|
||||
dodgers game today
|
||||
munetaka murakami
|
||||
dodgers score
|
||||
joe ingles
|
||||
owensboro weather
|
||||
nhl overtime rules
|
||||
kyle tucker
|
||||
pete fairbanks
|
||||
bank
|
||||
fabio jackson
|
||||
ucla
|
||||
housing prices
|
||||
real estate
|
||||
post malone
|
||||
ducks game tonight
|
||||
flor vigna
|
||||
lebron james
|
||||
bronny james
|
||||
austin shooting
|
||||
arthur rinderknech
|
||||
avs vs sporting
|
||||
elena rybakina
|
||||
chris sale
|
||||
bruins
|
||||
sabres game
|
||||
corinthians vs vasco
|
||||
christian walker
|
||||
where to watch new york yankees vs houston astros
|
||||
gladiator ii
|
||||
hurricanes vs senators
|
||||
jalen duren
|
||||
keegan akin
|
||||
billy schrauth
|
||||
caleb durbin
|
||||
thunder vs suns
|
||||
max bredeson
|
||||
wednesday, season 3
|
||||
demonte capehart
|
||||
karoline leavitt maternity leave
|
||||
alex de minaur
|
||||
rafael jodar
|
||||
adam levine face
|
||||
howard frankland bridge
|
||||
vibrio vulnificus new york waters
|
||||
stade brestois - lens
|
||||
moustapha thiam
|
||||
us asylum seeker border reopening
|
||||
sunderland vs nottm forest
|
||||
leicester city vs millwall
|
||||
brandon marsh
|
||||
psv vs pec zwolle
|
||||
daniel merida aguilar
|
||||
@@ -29,7 +79,6 @@ ludwig kaiser
|
||||
edina shooting
|
||||
atalanta - lazio
|
||||
barcelona vs celta vigo
|
||||
rafael jodar
|
||||
rivian r2
|
||||
pick 4
|
||||
aoc
|
||||
@@ -149,17 +198,3 @@ toronto
|
||||
sydney
|
||||
paris
|
||||
tokyo
|
||||
delhi
|
||||
sykkuno drama
|
||||
Los Angeles weather today
|
||||
S&P 500 stock chart
|
||||
local coffee shops near me
|
||||
latest tech news
|
||||
California traffic updates
|
||||
AI startups in Silicon ValleySan Jose weather this weekend
|
||||
Silicon Valley tech news
|
||||
best tacos in San Jose
|
||||
Apple park visitor center hours
|
||||
Seattle Weather
|
||||
Las Vegas strip
|
||||
Charlotte Hornets
|
||||
|
||||
@@ -1,7 +1,55 @@
|
||||
cà phê
|
||||
one ui 8.5
|
||||
nguyễn huy hoàng
|
||||
dự án nuôi em
|
||||
đơn vị sự nghiệp công lập
|
||||
nợ xấu
|
||||
bộ trưởng bộ giáo dục và đào tạo việt nam
|
||||
thành phố trực thuộc trung ương
|
||||
âm vang tổ quốc
|
||||
jennie
|
||||
charlie nguyễn
|
||||
nanaimoteuthis
|
||||
cảng
|
||||
vneid
|
||||
sri lanka
|
||||
công nhân
|
||||
hội đồng giám mục việt nam
|
||||
an ninh kinh tế
|
||||
kfc
|
||||
đội tuyển bóng chuyền nữ quốc gia việt nam
|
||||
juventus
|
||||
milan đấu với juventus
|
||||
villarreal đấu với celta
|
||||
osasuna vs sevilla
|
||||
galatasaray
|
||||
michael jackson
|
||||
sevilla
|
||||
polymarket
|
||||
mật ngữ kỷ
|
||||
osasuna đấu với sevilla
|
||||
atlético madrid đấu với ath. bilbao
|
||||
erling haaland
|
||||
lịch thi đấu man city
|
||||
toulouse đấu với monaco
|
||||
mc vs
|
||||
đông anh
|
||||
al ahli
|
||||
man city
|
||||
chung cư
|
||||
napoli
|
||||
sunderland đấu với nottm forest
|
||||
betis đấu với real madrid
|
||||
napoli đấu với cremonese
|
||||
leipzig đấu với union berlin
|
||||
sunderland
|
||||
mẫu iphone 18
|
||||
oppo find x9 ultra
|
||||
xem phim
|
||||
andoni iraola
|
||||
stuttgart đấu với freiburg
|
||||
levante – sevilla
|
||||
giao dịch tài chính
|
||||
sevilla
|
||||
rayo đấu với espanyol
|
||||
levante đấu với sevilla
|
||||
bong ma hanh phuc
|
||||
@@ -25,7 +73,6 @@ burnley vs man city
|
||||
bayern munich
|
||||
atalanta đấu với lazio
|
||||
barcelona đấu với celta
|
||||
mc vs
|
||||
psg – nantes
|
||||
leverkusen đấu với bayern
|
||||
elche – atlético madrid
|
||||
@@ -69,7 +116,6 @@ juventus đấu với bologna
|
||||
gladbach đấu với mainz
|
||||
twitch
|
||||
psg đấu với lyon
|
||||
juventus
|
||||
ligue 1
|
||||
trận đấu ngoại hạng anh
|
||||
chelsea đấu với man utd
|
||||
@@ -79,7 +125,6 @@ epl
|
||||
iem rio 2026
|
||||
tot
|
||||
tập đoàn gelex
|
||||
napoli
|
||||
đường ray
|
||||
inter
|
||||
inter đấu với cagliari
|
||||
@@ -90,7 +135,6 @@ fenerbahçe đấu với rizespor
|
||||
como
|
||||
como vs
|
||||
thẻ đỏ
|
||||
al ahli
|
||||
porto vs
|
||||
crystal palace
|
||||
porto
|
||||
|
||||
@@ -304,6 +304,20 @@
|
||||
"name": "Seattle (西雅图)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "TX",
|
||||
"name": "Texas (得克萨斯州)",
|
||||
"cities": [
|
||||
{
|
||||
"id": "Dallas",
|
||||
"name": "Dallas (达拉斯)"
|
||||
},
|
||||
{
|
||||
"id": "Houston",
|
||||
"name": "Houston (休斯顿)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -392,6 +406,29 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "AFRICA",
|
||||
"name": "非洲战区 (Africa)",
|
||||
"countries": [
|
||||
{
|
||||
"id": "NG",
|
||||
"name": "Nigeria (尼日利亚)",
|
||||
"keyword_file": "kw_NG.txt",
|
||||
"states": [
|
||||
{
|
||||
"id": "Default",
|
||||
"name": "Default State",
|
||||
"cities": [
|
||||
{
|
||||
"id": "Lagos",
|
||||
"name": "Lagos (拉各斯)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.bunnings.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/abc-weekly-news-quiz-april-24/106596462",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/ndis-participants-community-support-fears-government-changes/106596958",
|
||||
"https://www.abc.net.au/news/2026-04-24/uk-braces-for-prospect-of-sixth-pm-in-seven-years/106599990",
|
||||
"https://www.abc.net.au/news/2026-04-24/the-legacy-of-sikh-soldiers-anzac-day/106593346",
|
||||
"https://www.abc.net.au/news/2026-04-24/tasmania-police-sergeant-used-internal-system-to-monitor-wife/106593204",
|
||||
"https://www.abc.net.au/news/2026-04-24/jane-fonda-importance-in-developing-fitness-industry/106535102",
|
||||
"https://www.abc.net.au/news/2026-04-24/viva-energy-boss-tell-alan-kohler-need-more-oil-refineries-fuel/106596864",
|
||||
"https://www.commbank.com.au/",
|
||||
"https://www.amazon.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/iran-war-live-updates-us-shoot-kill-hormuz/106598082",
|
||||
"https://www.bom.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/power-price-warning-over-proposed-changes-to-tax-laws/106587928",
|
||||
"https://www.abc.net.au/news/2026-04-24/charts-paint-worrying-picture-global-fertiliser-prices/106590152",
|
||||
"https://www.coles.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/south-china-sea-state-funded-fishing-boat-militia/106570054",
|
||||
"https://www.abc.net.au/news/2026-04-24/baby-boomers-labor-generational-inequality-federal-budget-ndis/106582640",
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://www.ato.gov.au/",
|
||||
"https://my.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/nedra-talley-ross-of-the-ronettes-dies-aged-80/106615604",
|
||||
"https://www.abc.net.au/news/2026-04-28/qld-cfmeu-inquiry-grace-grace-legal-representation/106615358",
|
||||
"https://www.abc.net.au/news/2026-04-28/thales-loses-out-strikemaster-missile-contract/106615362",
|
||||
"https://www.seek.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/fuel-price-supply-explainer/106593698",
|
||||
"https://www.abc.net.au/news/2026-04-23/nt-inquest-woman-darwin-dv-shelter-death-police-child-safety/106595670",
|
||||
"https://www.abc.net.au/news/2026-04-24/anzac-day-2026-public-holiday-australia-states/106583304"
|
||||
"https://www.ato.gov.au/",
|
||||
"https://www.commbank.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/global-military-spending-hits-record-high-how-countries-rank/106611800",
|
||||
"https://www.coles.com.au/",
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/tasmanian-education-union-teacher-pay-deal-violence-workload/106614778",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/living-on-country-respectfully/106414024",
|
||||
"https://www.abc.net.au/news/2026-04-28/rock-climber-dies-after-falling-at-mount-arapiles-organ-pipes/106614660",
|
||||
"https://www.abc.net.au/news/2026-04-28/sustainable-alternative-shoyu-tai-sushi-plastic-soy-sauce-fish/106596352",
|
||||
"https://www.abc.net.au/news/2026-04-28/rebel-wilson-gives-evidence-in-court-the-deb-defamation-case/106614508",
|
||||
"https://www.abc.net.au/news/2026-04-28/sa-independent-review-of-sa-election/106614604",
|
||||
"https://www.abc.net.au/news/2026-04-28/james-paterson-coalition-says-stealth-bombers-aukus-stop-gap/106615556",
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-womens-origin-tiana-penitani-gray-position-preview/106615340",
|
||||
"https://www.bom.gov.au/",
|
||||
"https://www.bunnings.com.au/",
|
||||
"https://my.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-changes-opal-card-public-transport-digital-accounts/106615510",
|
||||
"https://www.abc.net.au/news/2026-04-28/overseas-tourist-drowns-indijup-spa-near-yallingup/106615098",
|
||||
"https://www.amazon.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/suspect-white-house-correspondents-dinner-shooting-charged-trump/106614610"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://my.gov.au/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.abc.net.au/news/2026-04-28/qld-cfmeu-inquiry-grace-grace-legal-representation/106615358",
|
||||
"https://www.bunnings.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/power-price-warning-over-proposed-changes-to-tax-laws/106587928",
|
||||
"https://www.abc.net.au/news/2026-04-24/jane-fonda-importance-in-developing-fitness-industry/106535102",
|
||||
"https://www.abc.net.au/news/2026-04-24/abc-weekly-news-quiz-april-24/106596462",
|
||||
"https://www.amazon.com.au/",
|
||||
"https://www.ato.gov.au/",
|
||||
"https://www.seek.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/tasmania-police-sergeant-used-internal-system-to-monitor-wife/106593204",
|
||||
"https://www.abc.net.au/news/2026-04-24/the-legacy-of-sikh-soldiers-anzac-day/106593346",
|
||||
"https://www.abc.net.au/news/2026-04-24/fuel-price-supply-explainer/106593698",
|
||||
"https://www.abc.net.au/news/2026-04-23/nt-inquest-woman-darwin-dv-shelter-death-police-child-safety/106595670",
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/anzac-day-2026-public-holiday-australia-states/106583304",
|
||||
"https://my.gov.au/",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.commbank.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/ndis-participants-community-support-fears-government-changes/106596958",
|
||||
"https://www.abc.net.au/news/2026-04-24/iran-war-live-updates-us-shoot-kill-hormuz/106598082",
|
||||
"https://www.abc.net.au/news/2026-04-24/baby-boomers-labor-generational-inequality-federal-budget-ndis/106582640",
|
||||
"https://www.abc.net.au/news/2026-04-24/viva-energy-boss-tell-alan-kohler-need-more-oil-refineries-fuel/106596864",
|
||||
"https://www.abc.net.au/news/2026-04-24/south-china-sea-state-funded-fishing-boat-militia/106570054",
|
||||
"https://www.abc.net.au/news/2026-04-28/sa-independent-review-of-sa-election/106614604",
|
||||
"https://www.abc.net.au/news/2026-04-28/global-military-spending-hits-record-high-how-countries-rank/106611800",
|
||||
"https://www.abc.net.au/news/2026-04-28/rebel-wilson-gives-evidence-in-court-the-deb-defamation-case/106614508",
|
||||
"https://www.bom.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/overseas-tourist-drowns-indijup-spa-near-yallingup/106615098",
|
||||
"https://www.abc.net.au/news/2026-04-28/sustainable-alternative-shoyu-tai-sushi-plastic-soy-sauce-fish/106596352",
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-womens-origin-tiana-penitani-gray-position-preview/106615340",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/nedra-talley-ross-of-the-ronettes-dies-aged-80/106615604",
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://my.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/rock-climber-dies-after-falling-at-mount-arapiles-organ-pipes/106614660",
|
||||
"https://www.abc.net.au/news/2026-04-28/suspect-white-house-correspondents-dinner-shooting-charged-trump/106614610",
|
||||
"https://www.coles.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/uk-braces-for-prospect-of-sixth-pm-in-seven-years/106599990",
|
||||
"https://www.abc.net.au/news/2026-04-24/charts-paint-worrying-picture-global-fertiliser-prices/106590152"
|
||||
"https://www.abc.net.au/news/2026-04-28/tasmanian-education-union-teacher-pay-deal-violence-workload/106614778",
|
||||
"https://www.abc.net.au/news/2026-04-28/thales-loses-out-strikemaster-missile-contract/106615362",
|
||||
"https://www.abc.net.au/news/2026-04-28/living-on-country-respectfully/106414024",
|
||||
"https://www.commbank.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/james-paterson-coalition-says-stealth-bombers-aukus-stop-gap/106615556",
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-changes-opal-card-public-transport-digital-accounts/106615510",
|
||||
"https://www.seek.com.au/",
|
||||
"https://www.amazon.com.au/",
|
||||
"https://www.ato.gov.au/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://my.gov.au/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.abc.net.au/news/2026-04-24/baby-boomers-labor-generational-inequality-federal-budget-ndis/106582640",
|
||||
"https://www.abc.net.au/news/2026-04-24/tasmania-police-sergeant-used-internal-system-to-monitor-wife/106593204",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/iran-war-live-updates-us-shoot-kill-hormuz/106598082",
|
||||
"https://www.abc.net.au/news/2026-04-24/ndis-participants-community-support-fears-government-changes/106596958",
|
||||
"https://www.abc.net.au/news/2026-04-24/charts-paint-worrying-picture-global-fertiliser-prices/106590152",
|
||||
"https://www.ato.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/the-legacy-of-sikh-soldiers-anzac-day/106593346",
|
||||
"https://www.bom.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/jane-fonda-importance-in-developing-fitness-industry/106535102",
|
||||
"https://www.commbank.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/viva-energy-boss-tell-alan-kohler-need-more-oil-refineries-fuel/106596864",
|
||||
"https://www.coles.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/fuel-price-supply-explainer/106593698",
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/james-paterson-coalition-says-stealth-bombers-aukus-stop-gap/106615556",
|
||||
"https://www.abc.net.au/news/2026-04-28/suspect-white-house-correspondents-dinner-shooting-charged-trump/106614610",
|
||||
"https://www.amazon.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/anzac-day-2026-public-holiday-australia-states/106583304",
|
||||
"https://www.abc.net.au/news/2026-04-24/power-price-warning-over-proposed-changes-to-tax-laws/106587928",
|
||||
"https://www.abc.net.au/news/2026-04-23/nt-inquest-woman-darwin-dv-shelter-death-police-child-safety/106595670",
|
||||
"https://www.abc.net.au/news/2026-04-24/abc-weekly-news-quiz-april-24/106596462",
|
||||
"https://my.gov.au/",
|
||||
"https://www.seek.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/south-china-sea-state-funded-fishing-boat-militia/106570054",
|
||||
"https://www.abc.net.au/news/2026-04-28/rock-climber-dies-after-falling-at-mount-arapiles-organ-pipes/106614660",
|
||||
"https://www.abc.net.au/news/2026-04-28/sa-independent-review-of-sa-election/106614604",
|
||||
"https://www.abc.net.au/news/2026-04-28/tasmanian-education-union-teacher-pay-deal-violence-workload/106614778",
|
||||
"https://www.bom.gov.au/",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-changes-opal-card-public-transport-digital-accounts/106615510",
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://www.coles.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-womens-origin-tiana-penitani-gray-position-preview/106615340",
|
||||
"https://www.abc.net.au/news/2026-04-28/overseas-tourist-drowns-indijup-spa-near-yallingup/106615098",
|
||||
"https://www.commbank.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/rebel-wilson-gives-evidence-in-court-the-deb-defamation-case/106614508",
|
||||
"https://www.bunnings.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/uk-braces-for-prospect-of-sixth-pm-in-seven-years/106599990"
|
||||
"https://www.abc.net.au/news/2026-04-28/qld-cfmeu-inquiry-grace-grace-legal-representation/106615358",
|
||||
"https://www.seek.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/sustainable-alternative-shoyu-tai-sushi-plastic-soy-sauce-fish/106596352",
|
||||
"https://www.abc.net.au/news/2026-04-28/nedra-talley-ross-of-the-ronettes-dies-aged-80/106615604",
|
||||
"https://www.abc.net.au/news/2026-04-28/living-on-country-respectfully/106414024",
|
||||
"https://my.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/global-military-spending-hits-record-high-how-countries-rank/106611800",
|
||||
"https://www.abc.net.au/news/2026-04-28/thales-loses-out-strikemaster-missile-contract/106615362"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://my.gov.au/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://www.seek.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/viva-energy-boss-tell-alan-kohler-need-more-oil-refineries-fuel/106596864",
|
||||
"https://www.abc.net.au/news/2026-04-24/south-china-sea-state-funded-fishing-boat-militia/106570054",
|
||||
"https://www.abc.net.au/news/2026-04-24/ndis-participants-community-support-fears-government-changes/106596958",
|
||||
"https://www.abc.net.au/news/2026-04-23/nt-inquest-woman-darwin-dv-shelter-death-police-child-safety/106595670",
|
||||
"https://my.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/rebel-wilson-gives-evidence-in-court-the-deb-defamation-case/106614508",
|
||||
"https://www.abc.net.au/news/2026-04-28/sustainable-alternative-shoyu-tai-sushi-plastic-soy-sauce-fish/106596352",
|
||||
"https://www.ato.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/power-price-warning-over-proposed-changes-to-tax-laws/106587928",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/abc-weekly-news-quiz-april-24/106596462",
|
||||
"https://www.abc.net.au/news/2026-04-24/uk-braces-for-prospect-of-sixth-pm-in-seven-years/106599990",
|
||||
"https://www.abc.net.au/news/2026-04-24/anzac-day-2026-public-holiday-australia-states/106583304",
|
||||
"https://www.abc.net.au/news/2026-04-24/jane-fonda-importance-in-developing-fitness-industry/106535102",
|
||||
"https://www.abc.net.au/news/2026-04-24/fuel-price-supply-explainer/106593698",
|
||||
"https://www.abc.net.au/news/2026-04-24/the-legacy-of-sikh-soldiers-anzac-day/106593346",
|
||||
"https://www.bom.gov.au/",
|
||||
"https://www.bunnings.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/baby-boomers-labor-generational-inequality-federal-budget-ndis/106582640",
|
||||
"https://www.amazon.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/tasmanian-education-union-teacher-pay-deal-violence-workload/106614778",
|
||||
"https://www.coles.com.au/",
|
||||
"https://www.commbank.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/charts-paint-worrying-picture-global-fertiliser-prices/106590152",
|
||||
"https://www.abc.net.au/news/2026-04-24/tasmania-police-sergeant-used-internal-system-to-monitor-wife/106593204",
|
||||
"https://www.abc.net.au/news/2026-04-24/iran-war-live-updates-us-shoot-kill-hormuz/106598082",
|
||||
"https://www.coles.com.au/"
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-changes-opal-card-public-transport-digital-accounts/106615510",
|
||||
"https://www.abc.net.au/news/2026-04-28/suspect-white-house-correspondents-dinner-shooting-charged-trump/106614610",
|
||||
"https://www.abc.net.au/news/2026-04-28/sa-independent-review-of-sa-election/106614604",
|
||||
"https://www.abc.net.au/news/2026-04-28/qld-cfmeu-inquiry-grace-grace-legal-representation/106615358",
|
||||
"https://www.amazon.com.au/",
|
||||
"https://www.bunnings.com.au/",
|
||||
"https://www.bom.gov.au/",
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/james-paterson-coalition-says-stealth-bombers-aukus-stop-gap/106615556",
|
||||
"https://my.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/global-military-spending-hits-record-high-how-countries-rank/106611800",
|
||||
"https://www.abc.net.au/news/2026-04-28/nedra-talley-ross-of-the-ronettes-dies-aged-80/106615604",
|
||||
"https://www.abc.net.au/news/2026-04-28/rock-climber-dies-after-falling-at-mount-arapiles-organ-pipes/106614660",
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-womens-origin-tiana-penitani-gray-position-preview/106615340",
|
||||
"https://www.abc.net.au/news/2026-04-28/thales-loses-out-strikemaster-missile-contract/106615362",
|
||||
"https://www.abc.net.au/news/2026-04-28/living-on-country-respectfully/106414024",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/overseas-tourist-drowns-indijup-spa-near-yallingup/106615098"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://my.gov.au/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.abc.net.au/news/2026-04-24/ndis-participants-community-support-fears-government-changes/106596958",
|
||||
"https://my.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/power-price-warning-over-proposed-changes-to-tax-laws/106587928",
|
||||
"https://www.abc.net.au/news/2026-04-24/viva-energy-boss-tell-alan-kohler-need-more-oil-refineries-fuel/106596864",
|
||||
"https://www.abc.net.au/news/2026-04-24/baby-boomers-labor-generational-inequality-federal-budget-ndis/106582640",
|
||||
"https://www.amazon.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/charts-paint-worrying-picture-global-fertiliser-prices/106590152",
|
||||
"https://www.abc.net.au/news/2026-04-24/tasmania-police-sergeant-used-internal-system-to-monitor-wife/106593204",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/abc-weekly-news-quiz-april-24/106596462",
|
||||
"https://www.seek.com.au/",
|
||||
"https://www.coles.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/south-china-sea-state-funded-fishing-boat-militia/106570054",
|
||||
"https://www.abc.net.au/news/2026-04-24/jane-fonda-importance-in-developing-fitness-industry/106535102",
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/anzac-day-2026-public-holiday-australia-states/106583304",
|
||||
"https://www.abc.net.au/news/2026-04-23/nt-inquest-woman-darwin-dv-shelter-death-police-child-safety/106595670",
|
||||
"https://www.abc.net.au/news/2026-04-24/fuel-price-supply-explainer/106593698",
|
||||
"https://www.abc.net.au/news/2026-04-24/uk-braces-for-prospect-of-sixth-pm-in-seven-years/106599990",
|
||||
"https://www.abc.net.au/news/2026-04-24/the-legacy-of-sikh-soldiers-anzac-day/106593346",
|
||||
"https://www.abc.net.au/news/2026-04-28/james-paterson-coalition-says-stealth-bombers-aukus-stop-gap/106615556",
|
||||
"https://www.bom.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-24/iran-war-live-updates-us-shoot-kill-hormuz/106598082",
|
||||
"https://www.abc.net.au/news/2026-04-28/rock-climber-dies-after-falling-at-mount-arapiles-organ-pipes/106614660",
|
||||
"https://www.abc.net.au/news/2026-04-28/sustainable-alternative-shoyu-tai-sushi-plastic-soy-sauce-fish/106596352",
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-womens-origin-tiana-penitani-gray-position-preview/106615340",
|
||||
"https://www.abc.net.au/news/2026-04-28/qld-cfmeu-inquiry-grace-grace-legal-representation/106615358",
|
||||
"https://www.seek.com.au/",
|
||||
"https://www.amazon.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/rebel-wilson-gives-evidence-in-court-the-deb-defamation-case/106614508",
|
||||
"https://www.abc.net.au/news/2026-04-28/global-military-spending-hits-record-high-how-countries-rank/106611800",
|
||||
"https://www.realestate.com.au/",
|
||||
"https://www.coles.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/thales-loses-out-strikemaster-missile-contract/106615362",
|
||||
"https://www.ato.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/suspect-white-house-correspondents-dinner-shooting-charged-trump/106614610",
|
||||
"https://www.abc.net.au/news/2026-04-28/tasmanian-education-union-teacher-pay-deal-violence-workload/106614778",
|
||||
"https://www.commbank.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/nedra-talley-ross-of-the-ronettes-dies-aged-80/106615604",
|
||||
"https://www.bunnings.com.au/",
|
||||
"https://www.commbank.com.au/"
|
||||
"https://www.abc.net.au/news/2026-04-28/overseas-tourist-drowns-indijup-spa-near-yallingup/106615098",
|
||||
"https://www.abc.net.au/news/2026-04-28/living-on-country-respectfully/106414024",
|
||||
"https://www.woolworths.com.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/nsw-changes-opal-card-public-transport-digital-accounts/106615510",
|
||||
"https://my.gov.au/",
|
||||
"https://www.abc.net.au/news/2026-04-28/sa-independent-review-of-sa-election/106614604"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://my.gov.au/",
|
||||
|
||||
@@ -8,29 +8,29 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.cbc.ca/news/canada/vegetable-prices-canada-9.7173027?cmp=rss",
|
||||
"https://www.rbcroyalbank.com/",
|
||||
"https://www.theweathernetwork.com/ca",
|
||||
"https://www.cbc.ca/news/canada/british-columbia/majcher-foreign-influence-china-9.7179099?cmp=rss",
|
||||
"https://www.cbc.ca/news/world/white-house-correspondents-dinner-shooting-conspiracy-theories-9.7179424?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/newfoundland-labrador/dean-penney-trial-april-27-9.7178935?cmp=rss",
|
||||
"https://www.cbc.ca/player/play/9.7179551?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/toronto/opp-fatal-motorcycle-crash-highway-401-cobourg-9.7179495?cmp=rss",
|
||||
"https://www.cbc.ca/news/business/rogers-communications-staff-buyouts-9.7178929?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/edmonton/alberta-referendum-website-complaint-immigration-9.7178022?cmp=rss",
|
||||
"https://www.canada.ca/en.html",
|
||||
"https://www.cbc.ca/news/entertainment/the-devil-wears-prada-2-photo-scroller-9.7174459?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/ottawa/4-day-office-return-for-global-affairs-canada-workers-delayed-due-to-space-issues-9.7174828?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/manitoba/blizzard-warning-freezing-rain-storm-manitoba-9.7174365?cmp=rss",
|
||||
"https://www.cbc.ca/news/world/ntsb-laguardia-crash-preliminary-report-fire-truck-stop-stop-stop-9.7175074?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/flight-cancellations-strait-of-hormuz-9.7173742?cmp=rss",
|
||||
"https://www.cbc.ca/news/politics/cbc-president-marie-philippe-bouchard-committee-9.7174302?cmp=rss",
|
||||
"https://www.cbc.ca/news/world/lebanon-paramedics-strike-9.7173448?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/newfoundland-labrador/andrea-barbour-bullying-9.7174865?cmp=rss",
|
||||
"https://www.cbc.ca/radio/asithappens/onion-infowars-laughs-conspiracies-9.7179144?cmp=rss",
|
||||
"https://www.canadapost-postescanada.ca/",
|
||||
"https://www.cbc.ca/news/world/king-arrives-us-visit-trump-9.7178922?cmp=rss",
|
||||
"https://www.cbc.ca/news/world/nathan-chasing-horse-life-sentence-sexual-assault-9.7179404?cmp=rss",
|
||||
"https://www.cbc.ca/news/politics/sovereign-wealth-fund-carney-major-projects-9.7178238?cmp=rss",
|
||||
"https://www.theweathernetwork.com/ca",
|
||||
"https://www.td.com/",
|
||||
"https://www.cbc.ca/sports/hockey/pwhl/pwhl-notebook-april27-2026-9.7179183?cmp=rss",
|
||||
"https://www.cra-arc.gc.ca/",
|
||||
"https://www.cbc.ca/news/canada/manitoba/winnipeg-woman-fall-hole-9.7178484?cmp=rss",
|
||||
"https://www.cbc.ca/news/business/travel-u-s-canadians-domestic-overseas-9.7176323?cmp=rss",
|
||||
"https://www.utoronto.ca/",
|
||||
"https://www.amazon.ca/",
|
||||
"https://www.cbc.ca/news/politics/carney-u-s-ambassador-wiseman-9.7174897?cmp=rss",
|
||||
"https://www.cbc.ca/news/politics/mark-carney-ethics-blind-trust-9.7174747?cmp=rss",
|
||||
"https://www.cbc.ca/news/entertainment/heated-rivalry-peabody-9.7174978?cmp=rss",
|
||||
"https://www.canadapost-postescanada.ca/",
|
||||
"https://www.td.com/",
|
||||
"https://www.cbc.ca/news/politics/carney-liquor-ban-9.7174723?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/montreal/smell-montreal-fire-9.7174378?cmp=rss",
|
||||
"https://www.cra-arc.gc.ca/",
|
||||
"https://www.cbc.ca/news/canada/nova-scotia/nova-scotia-mental-health-crisis-9.7171701?cmp=rss"
|
||||
"https://www.rbcroyalbank.com/",
|
||||
"https://www.cbc.ca/news/canada/british-columbia/baileys-law-kelowna-3rd-reading-senate-9.7179170?cmp=rss"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.canada.ca/en.html",
|
||||
|
||||
@@ -8,29 +8,29 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.cbc.ca/news/canada/nova-scotia/nova-scotia-mental-health-crisis-9.7171701?cmp=rss",
|
||||
"https://www.utoronto.ca/",
|
||||
"https://www.amazon.ca/",
|
||||
"https://www.cbc.ca/news/politics/mark-carney-ethics-blind-trust-9.7174747?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/flight-cancellations-strait-of-hormuz-9.7173742?cmp=rss",
|
||||
"https://www.cbc.ca/news/entertainment/the-devil-wears-prada-2-photo-scroller-9.7174459?cmp=rss",
|
||||
"https://www.rbcroyalbank.com/",
|
||||
"https://www.cbc.ca/news/canada/montreal/smell-montreal-fire-9.7174378?cmp=rss",
|
||||
"https://www.canada.ca/en.html",
|
||||
"https://www.cra-arc.gc.ca/",
|
||||
"https://www.cbc.ca/news/canada/manitoba/blizzard-warning-freezing-rain-storm-manitoba-9.7174365?cmp=rss",
|
||||
"https://www.cbc.ca/news/politics/cbc-president-marie-philippe-bouchard-committee-9.7174302?cmp=rss",
|
||||
"https://www.cbc.ca/news/politics/carney-liquor-ban-9.7174723?cmp=rss",
|
||||
"https://www.cbc.ca/news/world/ntsb-laguardia-crash-preliminary-report-fire-truck-stop-stop-stop-9.7175074?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/ottawa/4-day-office-return-for-global-affairs-canada-workers-delayed-due-to-space-issues-9.7174828?cmp=rss",
|
||||
"https://www.td.com/",
|
||||
"https://www.cbc.ca/news/canada/vegetable-prices-canada-9.7173027?cmp=rss",
|
||||
"https://www.cbc.ca/news/world/lebanon-paramedics-strike-9.7173448?cmp=rss",
|
||||
"https://www.theweathernetwork.com/ca",
|
||||
"https://www.canadapost-postescanada.ca/",
|
||||
"https://www.cbc.ca/news/politics/carney-u-s-ambassador-wiseman-9.7174897?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/newfoundland-labrador/andrea-barbour-bullying-9.7174865?cmp=rss",
|
||||
"https://www.cbc.ca/news/entertainment/heated-rivalry-peabody-9.7174978?cmp=rss"
|
||||
"https://www.cbc.ca/news/politics/sovereign-wealth-fund-carney-major-projects-9.7178238?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/british-columbia/majcher-foreign-influence-china-9.7179099?cmp=rss",
|
||||
"https://www.cbc.ca/news/world/white-house-correspondents-dinner-shooting-conspiracy-theories-9.7179424?cmp=rss",
|
||||
"https://www.cbc.ca/news/world/nathan-chasing-horse-life-sentence-sexual-assault-9.7179404?cmp=rss",
|
||||
"https://www.cbc.ca/radio/asithappens/onion-infowars-laughs-conspiracies-9.7179144?cmp=rss",
|
||||
"https://www.theweathernetwork.com/ca",
|
||||
"https://www.cbc.ca/news/canada/british-columbia/baileys-law-kelowna-3rd-reading-senate-9.7179170?cmp=rss",
|
||||
"https://www.cbc.ca/player/play/9.7179551?cmp=rss",
|
||||
"https://www.utoronto.ca/",
|
||||
"https://www.cbc.ca/sports/hockey/pwhl/pwhl-notebook-april27-2026-9.7179183?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/toronto/opp-fatal-motorcycle-crash-highway-401-cobourg-9.7179495?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/manitoba/winnipeg-woman-fall-hole-9.7178484?cmp=rss",
|
||||
"https://www.cbc.ca/news/world/king-arrives-us-visit-trump-9.7178922?cmp=rss",
|
||||
"https://www.rbcroyalbank.com/",
|
||||
"https://www.cbc.ca/news/business/rogers-communications-staff-buyouts-9.7178929?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/edmonton/alberta-referendum-website-complaint-immigration-9.7178022?cmp=rss",
|
||||
"https://www.cbc.ca/news/canada/newfoundland-labrador/dean-penney-trial-april-27-9.7178935?cmp=rss",
|
||||
"https://www.cbc.ca/news/business/travel-u-s-canadians-domestic-overseas-9.7176323?cmp=rss",
|
||||
"https://www.cra-arc.gc.ca/",
|
||||
"https://www.canada.ca/en.html"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.canada.ca/en.html",
|
||||
|
||||
@@ -8,29 +8,29 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.tagesschau.de/wirtschaft/finanzen/infineon-chips-halbleiter-100.html",
|
||||
"https://www.tagesschau.de/ausland/europa/ukraine-regierung-parlament-100.html",
|
||||
"https://www.tagesschau.de/ausland/europa/tuerkei-socialmedia-verbot-100.html",
|
||||
"https://www.tagesschau.de/ausland/asien/iran-regime-100.html",
|
||||
"https://www.tagesschau.de/inland/gesellschaft/70-jahre-bundesnachrichtendienst-100.html",
|
||||
"https://www.amazon.de/",
|
||||
"https://www.tagesschau.de/wissen/forschung/nasa-teleskop-102.html",
|
||||
"https://www.tagesschau.de/ausland/europa/eugh-asylrecht-italien-albanien-100.html",
|
||||
"https://www.bundesregierung.de/",
|
||||
"https://www.tagesschau.de/ausland/europa/ukraine-russland-angriffe-152.html",
|
||||
"https://www.tagesschau.de/inland/regional/hessen/gesetzentwurf-existenzrecht-israel-100.html",
|
||||
"https://www.ebay.de/",
|
||||
"https://www.spiegel.de/",
|
||||
"https://www.tagesschau.de/wirtschaft/adac-pannenstatistik-e-autos-100.html",
|
||||
"https://www.tagesschau.de/inland/gesellschaft/pahlavi-berlin-100.html",
|
||||
"https://www.tagesschau.de/ausland/amerika/trump-droht-iran-hormus-100.html",
|
||||
"https://www.arbeitsagentur.de/",
|
||||
"https://www.tagesschau.de/wirtschaft/konjunktur/gfk-verbraucher-konsum-100.html",
|
||||
"https://www.tagesschau.de/inland/innenpolitik/union-fraktion-reformen-100.html",
|
||||
"https://www.tum.de/",
|
||||
"https://www.bahn.de/",
|
||||
"https://www.tagesschau.de/ausland/europa/daenemark-zugunglueck-102.html",
|
||||
"https://www.tagesschau.de/ausland/asien/libanon-israel-verhandlungen-100.html",
|
||||
"https://www.tagesschau.de/wissen/technologie/energie-kraftwerke-brennstoffzellen-100.html",
|
||||
"https://www.tagesschau.de/ausland/asien/israel-neues-buendnis-100.html",
|
||||
"https://www.tagesschau.de/wirtschaft/unternehmen/start-up-china-meta-deal-100.html",
|
||||
"https://www.tagesschau.de/wirtschaft/finanzen/marktbericht-woche-der-notenbanken-100.html",
|
||||
"https://www.bundesregierung.de/",
|
||||
"https://www.amazon.de/",
|
||||
"https://www.tagesschau.de/wirtschaft/finanzen/marktberichte/marktbericht-dax-dow-geldanlage-124.html",
|
||||
"https://www.tagesschau.de/ausland/asien/iran-stockende-verhandlungen-100.html",
|
||||
"https://www.tagesschau.de/inland/gesellschaft/mai-wetter-100.html",
|
||||
"https://www.arbeitsagentur.de/",
|
||||
"https://www.tagesschau.de/wirtschaft/finanzen/marktberichte/marktbericht-dax-dow-geldanlage-126.html",
|
||||
"https://www.sparkasse.de/",
|
||||
"https://www.tagesschau.de/newsticker/liveblog-iran-donnerstag-112.html"
|
||||
"https://www.tagesschau.de/newsticker/liveblog-iran-montag-116.html",
|
||||
"https://www.tagesschau.de/ausland/europa/eu-parlament-sexualstrafrecht-100.html",
|
||||
"https://www.tagesschau.de/inland/innenpolitik/spd-reformen-positionspapier-100.html",
|
||||
"https://www.ebay.de/",
|
||||
"https://www.tagesschau.de/ausland/europa/deutscher-botschafter-moskau-einbestellt-100.html",
|
||||
"https://www.tagesschau.de/ausland/asien/russland-iran-usa-100.html",
|
||||
"https://www.bahn.de/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.bundesregierung.de/",
|
||||
|
||||
@@ -8,28 +8,28 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://elpais.com/opinion/2026-04-23/el-tipo-mas-idiota-de-internet-condenado-a-seis-meses-de-carcel.html",
|
||||
"https://www.agenciatributaria.es/",
|
||||
"https://elpais.com/internacional/2026-04-23/el-tribunal-penal-internacional-juzgara-al-expresidente-filipino-duterte-por-crimenes-contra-la-humanidad.html",
|
||||
"https://elpais.com/deportes/futbol/2026-04-23/lamine-yamal-con-una-lesion-muscular-le-dice-adios-a-la-temporada-pero-no-al-mundial.html",
|
||||
"https://elpais.com/babelia/2026-04-23/luc-delahaye-una-realidad-entre-el-documento-y-la-ficcion.html",
|
||||
"https://elpais.com/economia/negocios/2026-04-26/la-doble-brecha-macroeconomica-con-europa.html",
|
||||
"https://administracion.gob.es/",
|
||||
"https://cincodias.elpais.com/mercados-financieros/2026-04-23/digi-aplaza-su-salida-a-bolsa-ante-la-volatilidad-del-mercado-por-la-guerra-de-iran.html",
|
||||
"https://www.renfe.com/",
|
||||
"https://elpais.com/deportes/futbol/2026-04-22/el-elche-se-oxigena-y-derrota-a-un-atletico-de-bolo-veraniego.html",
|
||||
"https://elpais.com/gente/2026-04-23/enrique-de-inglaterra-pide-no-olvidar-la-guerra-de-ucrania-en-su-tercera-visita-al-pais.html",
|
||||
"https://www.amazon.es/",
|
||||
"https://elpais.com/espana/2026-04-23/el-rapto-de-los-90-minutos-en-miercoles-santo-resuelven-el-secuestro-del-gerente-de-un-salon-de-juegos-en-malaga.html",
|
||||
"https://www.elcorteingles.es/",
|
||||
"https://elpais.com/espana/catalunya/2026-04-23/sant-jordi-sigue-creciendo-en-barcelona-con-buen-tiempo-colas-y-lluvia-de-polen.html",
|
||||
"https://elpais.com/tecnologia/2026-04-22/pedro-sanchez-alerta-del-colonialismo-silencioso-de-la-ia-y-pide-una-respuesta-global-ante-expertos-de-la-onu.html",
|
||||
"https://elpais.com/america-colombia/2026-04-28/un-brutal-atentado-terrorista-en-colombia-expone-el-pulso-entre-los-grupos-armados-y-el-estado.html",
|
||||
"https://elpais.com/ciencia/2026-04-27/trump-ordena-a-la-nasa-y-al-departamento-de-guerra-crear-centrales-nucleares-en-la-luna.html",
|
||||
"https://www.zara.com/es/",
|
||||
"https://elpais.com/cultura/2026-04-23/cultura-estudia-hacer-obligatorios-los-gastos-de-envio-de-grandes-plataformas-online.html",
|
||||
"https://elpais.com/clima-y-medio-ambiente/2026-04-22/mas-alla-de-los-combustibles-fosiles-una-coalicion-dispuesta-a-avanzar.html",
|
||||
"https://elpais.com/salud-y-bienestar/el-medico-de-cerca/2026-04-22/sobrevivir-a-un-infarto-en-las-mejores-condiciones.html",
|
||||
"https://elpais.com/economia/2026-04-23/cuerpo-asegura-que-el-fondo-soberano-espana-crece-estara-listo-antes-de-julio.html",
|
||||
"https://elpais.com/espana/2026-04-28/mapfre-indemniza-con-un-millon-de-euros-a-un-trabajador-despedido-tras-denunciar-nepotismo-en-una-de-sus-filiales.html",
|
||||
"https://elpais.com/planeta-futuro/2026-04-28/pedro-pinho-cineasta-he-visto-a-portugueses-trabajando-para-ong-en-guinea-bisau-que-muy-rapidamente-creen-saberlo-todo.html",
|
||||
"https://elpais.com/clima-y-medio-ambiente/2026-04-27/menus-sociales-contra-el-desperdicio-alimentario-como-salvar-250000-kilos-de-ir-al-vertedero-cada-ano-puede-crear-empleo.html",
|
||||
"https://elpais.com/eps/2026-04-24/lilia-mendez-una-mujer-contra-el-olvido-de-la-artesania-textil-gallega.html",
|
||||
"https://www.amazon.es/",
|
||||
"https://elpais.com/opinion/2026-04-28/prioridad-nacional.html",
|
||||
"https://elpais.com/america-colombia/2026-04-27/la-fiscalia-pide-arrestar-a-nicolas-petro-por-no-asistir-a-las-audiencias-judiciales.html",
|
||||
"https://www.renfe.com/",
|
||||
"https://www.santander.es/",
|
||||
"https://elpais.com/internacional/2026-04-23/ultima-hora-de-la-guerra-de-estados-unidos-e-israel-contra-iran-en-directo.html"
|
||||
"https://elpais.com/salud-y-bienestar/2026-04-28/en-las-cocinas-de-los-car-t-la-innovadora-inmunoterapia-contra-el-cancer-es-una-revolucion.html",
|
||||
"https://elpais.com/espana/catalunya/2026-04-28/silvia-orriols-tambien-sufre.html",
|
||||
"https://elpais.com/espana/madrid/2026-04-27/un-punetazo-a-las-puertas-del-toni-2-vale-20000-euros.html",
|
||||
"https://elpais.com/internacional/2026-04-28/por-que-nadie-puede-permitirse-que-ormuz-llegue-cerrado-al-verano.html",
|
||||
"https://www.agenciatributaria.es/",
|
||||
"https://elpais.com/ideas/2026-04-26/nuevas-distopias-transformar-el-estado-en-una-sucursal-de-los-gigantes-tecnologicos.html",
|
||||
"https://elpais.com/economia/2026-04-28/mariana-mazzucato-los-anos-de-hegemonia-de-estados-unidos-han-terminado-estamos-viendo-el-final-del-imperio-romano.html",
|
||||
"https://www.elcorteingles.es/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://administracion.gob.es/",
|
||||
|
||||
@@ -8,28 +8,28 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-derri%C3%A8re-l-image-en-rdc-les-veuves-de-soldats-dans-la-pr%C3%A9carit%C3%A9",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-guerre-en-ukraine-un-pr%C3%AAt-de-90-milliards-d-euros-pr%C3%AAt-%C3%A0-%C3%AAtre-d%C3%A9bloqu%C3%A9",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-%C3%A9tats-unis-le-secr%C3%A9taire-%C3%A0-la-marine-limog%C3%A9-en-plein-conflit-avec-l-iran",
|
||||
"https://www.france24.com/fr/am%C3%A9riques/20260427-coup-monte-theories-du-complot-apres-les-tirs-gala-presse-washington-donald-trump-cole-thomas-allen",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260427-le-suspect-de-la-fusillade-au-d%C3%AEner-des-correspondants-va-%C3%AAtre-pr%C3%A9sent%C3%A9-%C3%A0-la-justice",
|
||||
"https://www.france24.com/fr/am%C3%A9riques/20260427-tirs-au-gala-de-la-presse-le-suspect-mis-en-accusation-pour-tentative-d-assassinat-sur-trump",
|
||||
"https://www.france24.com/fr/%C3%A9missions/dans-la-presse/20260428-apr%C3%A8s-deux-mois-de-guerre-l-immense-anxi%C3%A9t%C3%A9-des-iraniens",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260427-syrie-ouverture-du-premier-proc%C3%A8scontre-le-clan-assad",
|
||||
"https://www.sorbonne-universite.fr/",
|
||||
"https://www.amazon.fr/",
|
||||
"https://www.cdiscount.com/",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-l-iran-maintient-son-emprise-sur-ormuz-incertitudes-sur-la-tr%C3%AAve",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-ukraine-un-pr%C3%AAt-quasi-d%C3%A9bloqu%C3%A9-zelensky-retrouve-les-dirigeants-europ%C3%A9ens-%C3%A0-chypre",
|
||||
"https://www.france24.com/fr/france/20260423-liban-isra%C3%ABl-les-pays-r%C3%A9gion-moyen-orient-doivent-participer-n%C3%A9gociations-plaide-macron-%C3%A9tats-unis-washington",
|
||||
"https://www.france24.com/fr/%C3%A9missions/politique/20260423-guerre-au-moyen-orient-la-fin-du-quoiqu-il-en-co%C3%BBte",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-liban-quels-sont-les-pouvoirs-et-les-limites-de-la-finul",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-le-b%C3%A9nin-mise-sur-son-histoire-pour-d%C3%A9velopper-le-tourisme",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-%C3%A0-montauban-hommage-national-%C3%A0-florian-montorio-casque-bleu-fran%C3%A7ais-tu%C3%A9-au-liban",
|
||||
"https://www.france24.com/fr/%C3%A9missions/le-d%C3%A9bat/20260423-orban-hors-jeu-zelensky-gagnant",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-gaza-des-familles-pleurent-leurs-proches-tu%C3%A9s-dans-une-frappe-nocturne",
|
||||
"https://www.impots.gouv.fr/",
|
||||
"https://www.france24.com/fr/moyen-orient/20260423-crise-alimentaire-pourquoi-le-plan-de-l-onu-pour-un-corridor-%C3%A0-ormuz-pi%C3%A9tine-s%C3%A9curit%C3%A9-engrais-iran",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-amal-khalil-tu%C3%A9e-dans-une-frappe-isra%C3%A9lienne-dans-le-sud-du-liban",
|
||||
"https://www.france24.com/fr/%C3%A9missions/info-ou-intox/20260427-tirs-au-d%C3%AEner-des-correspondants-une-attaque-mise-en-sc%C3%A8ne-par-la-maison-blanche",
|
||||
"https://www.france24.com/fr/moyen-orient/20260428-en-direct-donald-trump-iran-pourparlers-liban-israel-etats-unis",
|
||||
"https://www.france24.com/fr/moyen-orient/20260427-gaza-lalli%C3%A9s-de-mahmoud-abbas-remportent-elections-municipales-historiques-fatah-hamas",
|
||||
"https://www.france24.com/fr/%C3%A9co-tech/20260428-australie-meta-google-tiktok-bientot-obliges-payer-medias-locaux",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260427-surpopulation-carc%C3%A9rale-en-france-les-syndicats-de-surveillants-appellent-au-blocage",
|
||||
"https://www.service-public.fr/",
|
||||
"https://www.france24.com/fr/afrique/20260427-mali-alliance-jnim-fla-junte-fragilisee-depart-mercenaires-russes-iafrica-corps-touareg-jihadistes",
|
||||
"https://www.impots.gouv.fr/",
|
||||
"https://www.sncf.com/",
|
||||
"https://www.credit-agricole.fr/",
|
||||
"https://www.france24.com/fr/vid%C3%A9o/20260423-paris-le-l%C3%A9gendaire-orient-express-%C3%A0-l-honneur-au-mus%C3%A9e-des-arts-d%C3%A9coratifs"
|
||||
"https://www.amazon.fr/",
|
||||
"https://www.france24.com/fr/%C3%A9missions/les-cl%C3%A9s-de-l-info/20260427-tirs-contre-le-pr%C3%A9sident-am%C3%A9ricain-l-histoire-se-r%C3%A9p%C3%A8te",
|
||||
"https://www.france24.com/fr/afrique/20260427-mali-intox-mercenaires-fran%C3%A7ais-terroristes-tues-attaques-jihadistes-mort-sadio-camara",
|
||||
"https://www.france24.com/fr/moyen-orient/20260427-irak-homme-d-affaires-ali-al-za%C3%AFdi-nomination-premier-ministre",
|
||||
"https://www.france24.com/fr/am%C3%A9riques/20260428-au-deuxi%C3%A8me-jour-de-sa-visite-aux-%C3%A9tats-unis-charles-iii-va-s-adresser-au-congr%C3%A8s"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.service-public.fr/",
|
||||
|
||||
@@ -8,28 +8,28 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://hk.news.yahoo.com/%E5%8F%8D%E4%BF%AE%E4%BE%8B%E8%A2%AB%E6%8D%95%E8%80%85%E6%93%9A%E5%A0%B1%E8%B5%B4%E8%A1%9B%E8%A9%A9%E9%9B%85%E5%88%86%E4%BA%AB%E6%9C%83%E5%BE%8C%E7%8D%B2%E6%92%A4%E6%8E%A7-%E4%BF%9D%E5%AE%89%E5%B1%80-%E8%A1%8C%E5%8B%95%E7%B4%B0%E7%AF%80%E4%B8%8D%E4%BE%BF%E5%85%AC%E9%96%8B-%E6%9B%B4%E6%96%B0-042322551.html",
|
||||
"https://www.hko.gov.hk/",
|
||||
"https://hk.news.yahoo.com/%E4%BC%8A%E6%9C%97%E5%AE%A3%E7%A8%B1%E4%B8%8D%E6%9C%83%E9%96%8B%E6%94%BE%E8%8D%B7%E8%8E%AB%E8%8C%B2%E6%B5%B7%E5%B3%BD-%E9%99%A4%E9%9D%9E%E7%BE%8E%E5%9C%8B%E5%81%9C%E6%AD%A2%E5%B0%81%E9%8E%96-042002100.html",
|
||||
"https://hk.news.yahoo.com/%E6%B6%88%E9%98%B2%E6%8A%AB%E9%9C%B2eas%E7%99%BC%E8%AD%A6%E7%A4%BA%E9%A0%88%E6%99%821%E5%8F%A5%E9%90%98-%E5%B0%8D%E6%80%A5%E9%80%9F%E6%83%A1%E5%8C%96%E7%81%AB%E5%8B%A2%E4%B8%8D%E9%81%A9%E5%90%88-094323720.html",
|
||||
"https://hk.news.yahoo.com/%E4%BC%8A%E6%9C%97%E9%9D%A9%E5%91%BD%E8%A1%9B%E9%9A%8A%E7%82%AE%E8%89%87%E8%A5%B2%E6%93%8A%E9%98%BF%E6%9B%BC%E5%A4%96%E6%B5%B7%E8%B2%A8%E6%AB%83%E8%BC%AA-133503559.html",
|
||||
"https://hk.news.yahoo.com/%E5%85%A5%E5%A2%83%E8%99%95%E6%89%93%E6%93%8A%E9%BB%91%E5%B7%A5%E5%A4%96%E8%B3%A3%E5%93%A1%E6%8B%9812%E4%BA%BA-%E5%8C%85%E6%8B%AC4%E6%B8%AF%E4%BA%BA%E6%B6%89%E5%87%BA%E7%A7%9F%E5%B8%B3%E8%99%9F%E6%88%96-%E6%B4%BE%E5%96%AE-%E8%AC%80%E5%88%A9-072553084.html",
|
||||
"https://www.hktvmall.com/",
|
||||
"https://www.gov.hk/",
|
||||
"https://hk.news.yahoo.com/%E5%9D%A6%E5%B0%9A%E5%B0%BC%E4%BA%9E2025%E5%B9%B4%E9%81%B8%E8%88%89%E6%9A%B4%E5%8A%9B%E9%A0%BB%E5%82%B3-%E6%94%BF%E5%BA%9C%E8%AA%BF%E6%9F%A5%E7%A8%B1518%E6%AD%BB-140504774.html",
|
||||
"https://hk.news.yahoo.com/%E8%B3%B4%E7%B8%BD%E7%B5%B1%E5%87%BA%E8%A8%AA%E5%8F%97%E9%98%BB-%E7%BE%8E%E6%89%B9%E4%B8%AD%E5%9C%8B%E6%81%90%E5%9A%87%E9%9D%9E%E6%B4%B2%E5%9C%8B%E5%AE%B6-072003045.html",
|
||||
"https://hk.news.yahoo.com/%E4%BC%8A%E6%9C%97%E5%96%8A%E8%A9%B1-%E7%BE%8E%E5%9C%8B%E4%B8%8D%E8%A7%A3%E5%B0%81%E9%8E%96%E5%B0%B1%E4%B8%8D%E9%96%8B%E8%8D%B7%E8%8E%AB%E8%8C%B2%E6%B5%B7%E5%B3%BD-055002739.html",
|
||||
"https://www.police.gov.hk/",
|
||||
"https://hk.news.yahoo.com/%E4%BB%A5%E9%BB%8E%E8%8F%AF%E5%BA%9C%E5%86%8D%E6%9C%83%E8%AB%87-%E8%B2%9D%E9%AD%AF%E7%89%B9%E7%9B%BC%E5%BB%B6%E5%81%9C%E7%81%AB%E5%8D%94%E8%AD%B0-060502345.html",
|
||||
"https://www.hku.hk/",
|
||||
"https://hk.news.yahoo.com/%E7%BE%8E%E5%9C%8B%E8%B2%A1%E9%95%B7%E8%B2%9D%E6%A3%AE%E7%89%B9%E7%82%BA%E5%BB%B6%E9%95%B7%E4%BF%84%E7%BE%85%E6%96%AF%E7%9F%B3%E6%B2%B9%E5%88%B6%E8%A3%81%E8%B1%81%E5%85%8D%E8%BE%AF%E8%AD%B7-040502929.html",
|
||||
"https://www.mtr.com.hk/",
|
||||
"https://hk.news.yahoo.com/%E6%88%BF%E5%A7%94%E6%9C%83%E9%A6%96%E6%AC%A1%E5%90%8C%E6%AD%A5%E6%8E%A8%E5%B1%85%E5%B1%8B-%E7%B6%A0%E7%BD%AE%E5%B1%85-%E7%99%BD%E5%B1%85%E4%BA%8C-4-30%E8%B5%B7%E6%8E%A5%E5%8F%97%E7%94%B3%E8%AB%8B-200000762.html",
|
||||
"https://hk.news.yahoo.com/%E8%8B%B1%E5%9C%8B%E6%94%BF%E5%BA%9C%E7%B8%AE%E6%B8%9B%E8%B5%A4%E5%AD%97%E6%9C%89%E6%88%90%E6%95%88-%E5%B0%88%E5%AE%B6%E8%AD%A6%E5%91%8A%E4%B8%AD%E6%9D%B1%E6%88%B0%E7%88%AD%E6%81%90%E6%8E%A8%E5%8D%87%E8%88%89%E5%82%B5%E6%88%90%E6%9C%AC-132005020.html",
|
||||
"https://hk.news.yahoo.com/%E4%BC%8A%E6%9C%97%E5%A4%96%E9%95%B7%E8%A8%AA%E4%BF%84-%E6%99%AE%E4%B8%81%E7%A8%B1%E5%B0%87%E7%9B%A1-%E5%88%87%E6%89%80%E8%83%BD%E5%8D%94%E5%8A%A9%E4%B8%AD%E6%9D%B1%E5%92%8C%E5%B9%B3-165002677.html",
|
||||
"https://hk.news.yahoo.com/%E5%8C%97%E9%9F%93%E5%AF%86%E9%9B%86%E8%A9%A6%E5%B0%84%E9%A3%9B%E5%BD%88-%E5%B0%88%E5%AE%B6-%E8%97%89%E5%85%A8%E7%90%83%E5%B1%80%E5%8B%A2%E5%8D%87%E6%BA%AB%E5%BC%B7%E5%8C%96%E6%A0%B8%E5%9A%87%E9%98%BB%E8%83%BD%E5%8A%9B-065002415.html",
|
||||
"https://hk.news.yahoo.com/%E5%8D%97%E8%B1%90%E7%B4%97%E5%BB%A0%E5%94%90%E7%8B%973%E6%A8%93%E5%A2%AE%E6%96%83-5%E6%9C%88-%E6%AF%9B%E5%AD%A9chill%E7%8E%A9%E7%A5%AD-%E5%8F%96%E6%B6%88%E9%80%80%E6%AC%BE-070852284.html",
|
||||
"https://hk.news.yahoo.com/%E5%85%AC%E7%9C%BE%E6%B3%B3%E7%81%98%E5%BC%95%E5%B8%82%E5%A0%B4%E7%87%9F%E9%81%8B%E6%A8%A1%E5%BC%8F-%E5%BA%B7%E6%96%87%E7%BD%B2-%E5%B8%82%E6%B0%91%E4%BB%8D%E5%8F%AF%E5%85%8D%E8%B2%BB%E7%94%A8%E6%B2%99%E7%81%98-200000712.html",
|
||||
"https://hk.news.yahoo.com/%E5%8D%B0%E5%BA%A6%E8%88%87%E7%B4%90%E8%A5%BF%E8%98%AD%E7%B0%BD%E7%BD%B2%E8%87%AA%E7%94%B1%E8%B2%BF%E6%98%93%E5%8D%94%E5%AE%9A-133501584.html",
|
||||
"https://hk.news.yahoo.com/%E8%B6%8A%E4%BE%86%E8%B6%8A%E5%A4%9A%E5%A5%B3%E6%80%A7%E6%91%98%E4%B8%8B%E9%A0%AD%E5%B7%BE-%E5%9C%A8%E4%BC%8A%E6%9C%97%E5%8F%AF%E5%97%85%E5%87%BA%E9%AC%86%E7%B6%81%E6%B0%9B%E5%9C%8D-062003965.html",
|
||||
"https://www.hsbc.com.hk/",
|
||||
"https://hk.news.yahoo.com/%E6%B6%89%E4%BB%A5%E8%AA%A4%E5%B0%8E%E6%89%8B%E6%B3%95%E9%8A%B7%E5%94%AE%E4%B8%AD%E8%97%A5%E6%9D%90-39%E6%AD%B2%E6%97%BA%E8%A7%92-%E8%97%A5%E6%88%BF%E5%BA%97%E5%93%A1%E8%A2%AB%E6%8D%95-200000849.html",
|
||||
"https://hk.news.yahoo.com/%E4%BC%8A%E6%9C%97%E5%AE%98%E5%93%A1-%E8%8D%B7%E8%8E%AB%E8%8C%B2%E6%B5%B7%E5%B3%BD%E9%A6%96%E6%89%B9%E9%81%8E%E8%B7%AF%E8%B2%BB%E6%94%B6%E5%85%A5%E5%B7%B2%E5%85%A5%E5%BA%AB-115003587.html",
|
||||
"https://hk.news.yahoo.com/%E7%BE%8E%E5%9C%8B%E4%B8%8D%E8%A7%A3%E5%B0%81%E4%BC%8A%E6%9C%97%E4%B8%8D%E9%96%8B%E6%94%BE%E8%8D%B7%E8%8E%AB%E8%8C%B2-%E4%B8%AD%E6%9D%B1%E6%9C%80%E6%96%B0%E6%88%B0%E6%B3%81-%E6%AC%A1%E7%9C%8B-065002298.html"
|
||||
"https://www.police.gov.hk/",
|
||||
"https://hk.news.yahoo.com/%E4%BC%8A%E6%9C%97%E9%A7%90%E8%81%AF%E5%90%88%E5%9C%8B%E5%A4%A7%E4%BD%BF-%E9%A0%88%E4%BF%9D%E8%AD%89%E7%BE%8E%E4%BB%A5%E4%B8%8D%E5%86%8D%E6%94%BB%E6%93%8A-%E6%89%8D%E8%83%BD%E7%A2%BA%E4%BF%9D%E6%B3%A2%E6%96%AF%E7%81%A3%E5%AE%89%E5%85%A8-223502162.html",
|
||||
"https://www.hko.gov.hk/",
|
||||
"https://hk.news.yahoo.com/%E4%BB%A5%E9%91%91%E8%AD%89%E7%A7%91%E5%AD%B8%E6%BF%80%E7%99%BC%E5%A5%BD%E5%A5%87%E5%BF%83-%E5%B0%8F%E5%AD%B8%E6%A0%A1%E9%95%B7-%E7%A7%91%E5%AD%B8%E4%B8%8D%E6%87%89%E5%8F%AA%E6%98%AF%E5%85%AC%E5%BC%8F%E5%AE%9A%E5%BE%8B%E5%A0%86%E7%96%8A-200000584.html",
|
||||
"https://www.hku.hk/",
|
||||
"https://yahoo-news.com.hk/BBCChineseNews/41485/?yptr=yahoo",
|
||||
"https://hk.news.yahoo.com/%E9%87%91%E6%AD%A3%E6%81%A9%E9%87%8D%E7%94%B3-%E6%94%AF%E6%8C%81%E4%BF%84%E7%BE%85%E6%96%AF%E5%B0%8D%E7%83%8F%E5%85%8B%E8%98%AD-%E7%A5%9E%E8%81%96-%E6%88%B0%E7%88%AD-063501362.html",
|
||||
"https://www.mtr.com.hk/",
|
||||
"https://hk.news.yahoo.com/sipri%E5%A0%B1%E5%91%8A-2025%E5%B9%B4%E5%85%A8%E7%90%83%E8%BB%8D%E4%BA%8B%E6%94%AF%E5%87%BA%E9%81%94%E8%BF%912-9%E5%85%86%E7%BE%8E%E5%85%83-%E4%BA%9E%E5%A4%AA%E5%A2%9E%E5%B9%8516%E5%B9%B4%E4%BE%86%E6%9C%80%E5%A4%A7-%E5%8F%B0%E7%81%A3%E5%B9%B4%E5%A2%9E14-065005056.html",
|
||||
"https://www.hktvmall.com/",
|
||||
"https://hk.news.yahoo.com/%E5%B0%96%E6%B2%99%E5%92%80%E9%85%92%E5%BA%97%E8%81%9A%E6%9C%83%E8%AE%8A%E8%A1%9D%E7%AA%81-%E5%85%A7%E5%9C%B0%E5%A5%B3%E5%A4%A7%E9%A6%AC%E7%94%B7%E4%BA%92%E6%AF%86-%E5%90%8C%E9%81%AD%E6%8B%98%E6%8D%95%E9%80%81%E9%99%A2-034529792.html",
|
||||
"https://hk.news.yahoo.com/%E7%99%BD%E5%AE%AE-%E5%B7%9D%E6%99%AE%E8%88%87%E5%9C%8B%E5%AE%89%E9%AB%98%E5%B1%A4%E5%95%86%E8%A8%8E%E4%BC%8A%E6%9C%97%E6%9C%80%E6%96%B0%E6%8F%90%E8%AD%B0-230504137.html",
|
||||
"https://hk.news.yahoo.com/%E5%93%A5%E5%80%AB%E6%AF%94%E4%BA%9E%E5%85%AC%E8%B7%AF%E7%82%B8%E5%BD%88%E7%88%86%E7%82%B8-%E5%A2%9E%E8%87%B320%E6%AD%BB36%E5%82%B7-093501993.html",
|
||||
"https://www.gov.hk/",
|
||||
"https://hk.news.yahoo.com/%E8%83%BD%E6%BA%90%E8%A1%9D%E6%93%8A%E6%8E%A8%E5%8D%87%E9%80%9A%E8%86%A8-%E6%AD%90%E6%B4%B2%E5%A4%AE%E8%A1%8C%E6%93%AC%E6%9A%AB%E4%B8%8D%E5%8D%87%E6%81%AF%E8%A7%80%E6%9C%9B%E5%B1%80%E5%8B%A2-065003836.html"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.gov.hk/",
|
||||
|
||||
@@ -8,22 +8,22 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.rakuten.co.jp/",
|
||||
"https://www.smbc.co.jp/",
|
||||
"https://www.jreast.co.jp/",
|
||||
"https://www.mhlw.go.jp/",
|
||||
"https://news.yahoo.co.jp/pickup/6577949?source=rss",
|
||||
"https://www.u-tokyo.ac.jp/",
|
||||
"https://news.yahoo.co.jp/pickup/6577376?source=rss",
|
||||
"https://www.rakuten.co.jp/",
|
||||
"https://news.yahoo.co.jp/pickup/6577961?source=rss",
|
||||
"https://news.yahoo.co.jp/pickup/6577960?source=rss",
|
||||
"https://www.amazon.co.jp/",
|
||||
"https://news.yahoo.co.jp/pickup/6577374?source=rss",
|
||||
"https://www.jreast.co.jp/",
|
||||
"https://news.yahoo.co.jp/pickup/6577958?source=rss",
|
||||
"https://www.japan.go.jp/",
|
||||
"https://news.yahoo.co.jp/pickup/6577369?source=rss",
|
||||
"https://news.yahoo.co.jp/pickup/6577372?source=rss",
|
||||
"https://news.yahoo.co.jp/pickup/6577377?source=rss",
|
||||
"https://news.yahoo.co.jp/pickup/6577363?source=rss",
|
||||
"https://www.yahoo.co.jp/",
|
||||
"https://news.yahoo.co.jp/pickup/6577375?source=rss",
|
||||
"https://news.yahoo.co.jp/pickup/6577370?source=rss"
|
||||
"https://news.yahoo.co.jp/pickup/6577959?source=rss",
|
||||
"https://www.mhlw.go.jp/",
|
||||
"https://news.yahoo.co.jp/pickup/6577941?source=rss",
|
||||
"https://news.yahoo.co.jp/pickup/6577931?source=rss",
|
||||
"https://news.yahoo.co.jp/pickup/6577954?source=rss",
|
||||
"https://www.smbc.co.jp/",
|
||||
"https://www.yahoo.co.jp/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.japan.go.jp/",
|
||||
|
||||
@@ -9,18 +9,18 @@
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.kakao.com/",
|
||||
"https://www.yonhapnewstv.co.kr/news/MYH20260423204515tFg",
|
||||
"https://www.coupang.com/",
|
||||
"https://www.korea.kr/",
|
||||
"https://www.hometax.go.kr/",
|
||||
"https://www.yonhapnewstv.co.kr/news/MYH20260423205121tTD",
|
||||
"https://www.daum.net/",
|
||||
"https://www.kbstar.com/",
|
||||
"https://www.yonhapnewstv.co.kr/news/MYH20260423231345ZaH",
|
||||
"https://www.yonhapnewstv.co.kr/news/MYH20260423235458edp",
|
||||
"https://www.snu.ac.kr/",
|
||||
"https://www.yonhapnewstv.co.kr/news/MYH20260423211941Xe0",
|
||||
"https://www.naver.com/"
|
||||
"https://www.yonhapnewstv.co.kr/news/MYH20260428143906BAg",
|
||||
"https://www.yonhapnewstv.co.kr/news/MYH20260428143548czh",
|
||||
"https://www.hometax.go.kr/",
|
||||
"https://www.korea.kr/",
|
||||
"https://www.kbstar.com/",
|
||||
"https://www.yonhapnewstv.co.kr/news/MYH2026042813432030O",
|
||||
"https://www.yonhapnewstv.co.kr/news/MYH20260428125754io7",
|
||||
"https://www.yonhapnewstv.co.kr/news/AKR202604281116055wC",
|
||||
"https://www.daum.net/",
|
||||
"https://www.naver.com/",
|
||||
"https://www.coupang.com/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.korea.kr/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://news.google.com/rss/articles/CBMiwAFBVV95cUxOc1FQTHJHTkRtLVM2aWNhRm1oSHY0WHJOMFI3N1l0S0FBSEVQaXFDNUxEcmUwUmlMMWtBMThiMGhVdjItdzltUUJNRUx4RDBQSDFBZmtfaVZ0YXFRWlp1ZmtWQlR6amFZeDByZEhtMmMwZVV3ZHFqZG9JQy1QWHF2dEZlRTFmZFVFd3kydnpZajlVOXRMcFRUZGxlRmxQU2puZnU1TTVRdE80blB3OG1SSDd2MXZjNDdJZWZWel92YTQ?oc=5",
|
||||
"https://www.maybank2u.com.my/",
|
||||
"https://www.lazada.com.my/",
|
||||
"https://www.kwsp.gov.my/",
|
||||
"https://news.google.com/rss/articles/CBMipgFBVV95cUxOT3Z4R043SjdaTTY4blQzTGZxOUFQRmJldmhTaFAxc2M4TC1tMmFSeHFMWGNfWk1jQW9FcWk2cmRsUUg0S3ItTmJ6VTdMTEcxWVhxejI5eDk2elBiN25TanRWVFBlNkswQUNhSk9WS19MVDBjbldRQ1FiX2NKeXEzdVZnUVY3YkxncjNYWGgwUE1VbFN1Z2FSNG53UkJ3SHQwNTkzSU1R0gGrAUFVX3lxTE4xVlVPRFJYZkFYUUx6cGVuVi1lZEhHLWZVdnFlS2ZCNk9WbXNlVkp5RlZBdmF4dmhGWXBLbnJzV0E5eUY5d3c1dDZzT1pQMURZRzZUd3NnYWNHOGVLWk1UV2RTR0kxZkd2bEt2WGFOVlBnSzhBdDhuTE5IY1F1S0oyNFdEaFNmTGtEd3JZVXJXUkpkNFRGMmJvZFdsNnFlNmo4Q3UyM1BxRlJ6dw?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMinAFBVV95cUxQc0puNXJDNjJvaWRLSjRjSXUzQk1WVlVTRGZsOEVhSnlCQWI3U29hdGJVSXZySmRKbm9pR3h3cUtmUmxPVWV3bG81YUtZSUlQel9rUzFITFZTZkhfV1hOcExIdmdXMzQ1aXdfamlxUmFFeXJrMDJVVEN3RmQ1VlEtSlU4WDRneHZJcTBVNWtPV1d5UC14UjJSaUJrd1PSAaIBQVVfeXFMUHRqS2VRMVktbGtuQWlOeWxZQUdKRWtjdGZINms3M0VvUnYyYUtTVVdpN2c3UkZ0V19oVVNCY3RyZk11d2pxb3BxUWZRVXcwVzBLUWM0V1gxVUtMMFNlRjRJcG9HYmZlcGhHU2dJMG5xQzRzdjRaMVpGbEFSU2tNaTcyaUE2SlkwMHRlM3Y1NEFsRkJQRWhmbUlBbE85MnBFMzV3?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMi1AFBVV95cUxQcWFCUXVGSUhfVHFUUXpTeDNrUm5yYWpPZXlzMUZtSzFDX0ZJdzNyWmlnbmZ2bUpLSXFHUHcyOFRHbkJMSzB6bjJYWDYyd2s5U285X1JIakRzYWxvNGJpSk5Deld3Q3NuZTdjTGJObmV1X2M0TW1GM19Nb0ZIWndDbHc1bHU3S3FtdmhMQ1k3MG5rSFRFRVA2TkZzOWNxczdvb3plMDN2dS1jWEw5Z09TeXZmZ1dtMGxtX1pvMkVDWWFrM25lVG5zNmZ5Y0lEN2VSaXhSYw?oc=5",
|
||||
"https://www.pos.com.my/",
|
||||
"https://news.google.com/rss/articles/CBMiqgFBVV95cUxPZnVfanlkc0NjNWNyU2lCSGhPY2tZMmJLMklhdlBuc1JRY3I3ZlE3TWhqdkVxclFzX0tSa2xHZ1Y3WUlCdzdaR05SX2VScWFkaFFwT0ZXMjRRUkM4OVlQSXNfbkV1Y01wRVNVckVHZmY5UGNCdm13YlBzQkdsQ3ZJb3BMN1YxaXdsWlhaXzBaSUdfbzhQQ3NoRzNUbkRueDh1QjlKbU1NaEFUQQ?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMi7wFBVV95cUxQSERSOUhUWHFZeTZVQ2JsMlpta0dVWjRGR2xkVFN4M1pYMzExTndtLVllZVVxMTVTTkRhMnB1Qm50TFRxcEVMTXYxejMyZi1jckZwYTJ0MERIY0diR3J5aTBWbE11SXZILTFhc2EtaE93Q25INlptQUpGT3lFaXE5c1g3UHhxX0JSTjdOSHhoUFFvdUJfclNwZnpJOFB3VG5UU2lrN3pJeTFzWmRVS0hRWVN3dk5KRGhBTER3MU1ySVJNeDRaTmJtODJqdkhGWl9iUE5aVk5vX0RNZ2NoOHRjeE9aR3l0SEZta0pDVERnSQ?oc=5",
|
||||
"https://shopee.com.my/",
|
||||
"https://news.google.com/rss/articles/CBMimgFBVV95cUxNM0Fha3pYTVVEblg0dUJNYmtIZGdJdGFwa20tbUttRHNFNUMtQ0doMVJDZU5GYm0wLUkwaVpkMzZzM2lhcDNkaXlOMm5UckJvQjUyQ25URl9aMC1idm5pNDJCSm5xN3FKMXloREV6azNVZmt6WXg3TkQxa2JoaWdhSy1ZcU1ac251Ukt3TlE3SVpPVWxOSnJIMkpn0gGfAUFVX3lxTE9uT1dydUxaa1NWQk9rUFlGRTVZZFRSM0NqNURDMzRXRnJCTkZFTEZCdXkwd1lDdkVJaWo2M0dIVnprZ2ZjOTEzU3VneE8xV0pIMWZTOVlLSFo3N2UtZ19JMVZCWFVhRW5PeFFSNHI4MWNGXzJLOWRxRVY3WkREaENGeEVhM1dYVnViYU50WS1SQzB6Z3VzaEpHU0tzbVphWQ?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMirAFBVV95cUxNN1N5S3h1ZmlMcl9Zd01BYmRFd0N1Vi1aX1BUTFprR1pvSHF5VDZqWk9PUWJEYllScHFyX25qNnFWMFJfTmZoNjNwSTdUYmlDWnJPN2dsajJMbjhfam1WdGZ2bW45V1gxeGRpdTlFQ1RqdE5tbmU0ZVRibVE4S0JqRndVQmlvX3o5QkRDdFpfMXRsQ2hUQ2tmWm5QRnh1d0ZacWl2TlBKR19ybEVQ?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiZ0FVX3lxTE04VkZwSllHVjZXNWRvOW8zU3dCVVMzQUJ6OEJpY2NmdFZaRlhJTzhQWDYxNFZhMnVyVE9GMlZPOTFtbzZfd0g0el8zQkNEdU9BT3lQcmc3TldKTk5rYjEtdF9ZNG45WU0?oc=5",
|
||||
"https://www.cimbclicks.com.my/",
|
||||
"https://news.google.com/rss/articles/CBMiwAFBVV95cUxQd2tyWHRaY180eklwZHNXdXdZY0dfcnZGQ3ZTbktEVldDeE9KaGRHMHRlRUhXdXhUZzdNVlNjaXgzZTBHUW54Z1RqNnZKcGF2V21nTFhyTFdFS0Z6cVUzWDNrLXU5UmRZR2QxYjAzVjJ4QkhCZUUwZ2lzQVlNMkxxNGs0REkzVmFNSFNvczY3S25TN0hpV1JjYmptVGlxckIxeFRkNUp5ZnBraEh1SUNKTUVCRGx0TXcwa1AxVFkyY3M?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMifkFVX3lxTE5EOXcwZDBtWEZhNUdjUDczVGRXU2VVdUNsUGtVUl9hSHBTU21pNkI5YnlJWXVkOW5NaVgzWUJFUktxS2dKbk9CU2xqLWl1bnlCalJRUWFwLU1QTUVDMXBqM2o0dVJOMF9fWjcxTGZ1RlNlcWpxb0ljMVBYZ2tKZw?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMijAFBVV95cUxNTWotZGFVeEY4YmhQZDN4YlJwbVQycVViOGw4bmhKUS1rdDY1cXJ2UXFoVGFPbmhVRXZfVTlJNE5ILXdacWZWbklORUxpMmxmTnJtVVVxeE9FMm5tTERoaXZPOWRDejBlRDhsem9vaUJrR00tYjY3NUl4U1pfVG1DaEZWSDV5R0J5R29iaQ?oc=5",
|
||||
"https://www.malaysia.gov.my/",
|
||||
"https://www.pos.com.my/",
|
||||
"https://www.thestar.com.my/",
|
||||
"https://news.google.com/rss/articles/CBMimAFBVV95cUxQQ1BoTkp3aUxJVzEyMmhSSzFFS1dvQnlSSDNyeGlBWFNtbk5TdzNzN0F2WlBqMS1MRmxSTEppWndoWE82ZnlXY3hscXE2THZuOXV3b1hGdFpaZkFpcS1vQ3F1N1lfbG5Rb29scVczT3VRVG9NbWRiSVNBM0Jxc0ZObHltQ0ttQTJQdl9KN0xfSUljb3I5NHoxNg?oc=5",
|
||||
"https://www.lazada.com.my/",
|
||||
"https://news.google.com/rss/articles/CBMiqgFBVV95cUxQTDdCQ0FGTlNMaC1aZjBIWF92QWxQS1lyUTNxYzZONHZNQVdKSlE0LVpsLUtqTHJPWGZFb1Vzb0pMbzNWZHY2b0lmUmROZVRnLXU3MU1YY25fR1FUdmUwSWFZTUpUekcwa1ItM2JiUWJ1cFdTXzZCLVdxQXNTQlEtNlVOMmpSb2NFS2prekhYNUd4RXE0bzVhYUNHa1BuenhfTG4wMWYxa0k3QQ?oc=5",
|
||||
"https://www.kwsp.gov.my/",
|
||||
"https://news.google.com/rss/articles/CBMilwFBVV95cUxORHBlMjRqS0dQbGlhSGxxWmk4TlpCd1RhdURLQldoWWVscnZDRGFRaEFEbnVKaHVlRFA0R0g0YmxfSElzZENSMDI3WmNhcjJyeVB6Y09XV2xzQm1SNmlPb2lwRkZqY3VMR0FXakJjODlyc3pkQ3poWHlSOTYtQk5ad1J6MW1yTjVDd3FxQk1rYk5vajYtNkx3?oc=5",
|
||||
"https://um.edu.my/",
|
||||
"https://news.google.com/rss/articles/CBMiqAFBVV95cUxQQjNRaVEwbkJuRUpEU1AyaTB3Y01QQm5TWFhLb0hyZVU2c0g4Y0huTnBuS0FtLVI0RnZKZ0J6aTdaSElFaFhUbDJ1NmZsUFYzTTU1TGNTRFh6T3l4VXVkWHdNSmt2aWtyYTlXem9HNDRwVVRqSHVXNVdJN3A5bTlTWHRONXJlczJSaExVb1ZURXlTWGVQOFE5a3NLMEtabkY5ZDFYeVR3UU4?oc=5",
|
||||
"https://shopee.com.my/",
|
||||
"https://news.google.com/rss/articles/CBMitAFBVV95cUxOUmNqZmthUHJhUWRFUFlkV2pIbzZFUFpfV0xDWl9sM2R2YW9TNHFQb0tGd3RVekFlRTFsZDdvZGpWb3VfbldxdU5UMjFycDBCSDMzaFhWZkFXc2xyUnpQQ0ZlbnV1OWFFWkQ4U21qUU1nUVktRWI1NFFNVzZ1M0UtRl9sVnRlSlcxaTVYZUR4RjlMZnE2UnVsZXVTNTliRXFpTkhTcXVSQ1BmTUozdDE1VUxfVU8?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMikAFBVV95cUxPMnZaWmRSdy1wV0VZSFNQSExUbWcxelhPVWRuZmk2RlVZZzZGRTFUZTlNbDNqa3VtdXN0aHJGMkpEQy1YQnNMU1dLZmR3a0JoRXFTZTdMZGFvMlN4MjQ2UVlJT0FUdWVaQVVoQUJYSnlNRm9oYnNBTGxWZktJdXlTRTFIYlVvZEo1QXFjeG85UWM?oc=5",
|
||||
"https://www.maybank2u.com.my/",
|
||||
"https://news.google.com/rss/articles/CBMib0FVX3lxTFBxOW1VQjZVVjJCb1ljN2tQNTF6dnhBTl9PT1QzdHlnVXpvRTA5ZXdPWV9PS3c2SDNXYkFUbUhWVENqZHV1OWlIUFdLLXNWS3FveUVYaGpMZHdIYWticFdTV2s2R1Bxdk8yVDFOdHhNWQ?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiugFBVV95cUxQNWJsUGt6WDJqaF8zSFBpdE4zU1VLUDJ4U3djUWgxREJKdEU4cWtpTkpDa1ZPVUFFM2Rydk9SX0pnRUFQX0xjWFlLZ3h2MW42eXJQWDF1bnppS2xNUExKcklCOWV2b2thcVhwSXItUC1zQ2pwNWdPWnBKVUpTVG1VdEVxSVk4WnVBS2Y1YlZ5VVNWSFRtaXI4RERERnBZako5MmFrUHpsTWdZZElWVEIxYVp5UXk4QVBvSFE?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiuAFBVV95cUxNTWZoeXN6OGtHcW5VM1BzWGxIaUx2YmFHclhQNEZPaXlHblo5UEtzejVHR2NnOUJ0cjNOTzQ2dHpzbkZvYmVhZlFyYk5nYUtVbVd0SnY5VWJlVzZhUThJYmpLSEZGTS10OXpXTG92a2h2dHdQVUN1cDFiZ1l5MEVWRWx6Y1prd3ZxVWNESEFXWW5KdHJ3TDNQSVhKTU1ESldxdDduVFd3X2YyZy13S2ZRVWhHVGMzRzZW?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMixwFBVV95cUxQSm9fQVZsU3p3NjEyNGltQlJMYUdocGZCYkc1WVVUaGhEV00xU0NzaUVrc0xBejd4LVp0RXZmeGxUdmxvMl9LLWVHSHRTUXRnTGFlYzREbGNkaXhxVkt2Xy14eW5wd004Vl9GdzJDUjQxUlRCb2FqNWxENjQxdVYtaGJjaDBfY3ByMkZSUTdiZG5PdmVaa01CajNlN0NBN0xSUnpNTFZWU3pRb0gzQVVzMlZEcUtyYWRZdV8tQTktNWZXRjhoY2Rj?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMihgFBVV95cUxPVWRPM2xRM2ZzcnUyblZWN0RQUXVacWRzU29xOHBIQmtmSEZEUk1XMEVCUkNXSlJNMlFyemRPdGZhQVlpUmlXRTkyZmNpM3F1WDNsZGVfUkYySzUzdUNyUFVZdF9WZnFFX2l3aDlHbk9IQXlZajdSYzE4QWctMVdaX251N21SZw?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiugFBVV95cUxPa0cteU1HZXRleTlyTkNNYlVYMm5nSTBxZTFBQlVZblNyem9RTWRjeUFqQXNXenVGaDR3bmgxUHA4RWc4dHF6T0tHXzNpQWh6OTQxbUl4NjBCV2FaZGVjRV9HdmxUNEwxaGVDT1drVFZlc3V1cG5pdDZaQjhtR3YyYlRzVi1BaWZKeE1pRm5UMTdjUE9kQlgwTVB5NEc5N3doN0xlX0p5N1JBUERBQkxaaVhkSXljRUM3TlE?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMizwFBVV95cUxQTDhpR0pXNGZKWi0tRG1ORzFMem1zRC1fVWpuMU1ORlVDc3BkQmZsV01udnhTaHotV1JzYmlSQ1dHcFpUNl9idFdRbTBMSXI0bjlLVXJKM0lVUWdBYVpkekw5UjlKRmd6QThMaXJHZ0JXSFBRYVUyVmltcnBzSFgzTlpJZF9mNTdiYTNzVmtPQ25nSnpLUEY3eXR1UVZfRFJwQmRGb1pVZjNodU42NU5TRHNlSXF6Y2ZHbW5tdVBIMEVQOVJXemRuV01PbFQ5czA?oc=5",
|
||||
"https://www.cimbclicks.com.my/",
|
||||
"https://news.google.com/rss/articles/CBMi2gFBVV95cUxNcXB5UGFBUlpvXzlVLWpFVV94LUp4Sml3LVN0WTdoeENyekxaY3RNUldaYUthdV9yZFkwNXNfenRjWUIxQXZRSWdnSER1SFU0dG9ESEtCNEpJSTJrRnd4cDRpMXNVdmRDNkM2NzBHZWZIZXF4S2hteU1XZWJxNU1TcEFjX3FIVlFGQnFPclNGZ1dRck9LUng2UEo5TnlmbUhzcEU5RV9sWTgwaC1HZGljSlZxWkgxYUcyMUc2SXNTaWM4dmRfRXgyUG9Pa2lUc1pjN3Y2S21iQWJYUQ?oc=5",
|
||||
"https://www.hasil.gov.my/",
|
||||
"https://news.google.com/rss/articles/CBMiugFBVV95cUxOdDFsd1RzdXlQSGVNTThONWdKaDROUzZwN0paQVNQNHN1Z20zd1lpUlVneVo0dUNfRDcyTEdXOFgzb3JCck0xT3JEMVFybXc5Ync1TFdHLXFvVlM4Si16ckk3RHF6U1BDOTh2LU1COC1paUcxWkgtTE9ZYnBPM0xMYnU4VlVoSTBPLVVSZ0Vwdi04V093d0NTeUUwT1FlNmxjcWZvWGZfdzdhcE5aTGNqbHdYUkZrQTdJM2c?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiywFBVV95cUxQQWJxZjduYVFWMk45SDdGX3Frc3ItZURydjE2a3NBTkh3YXU4S2FzUG9MV3dnSXY5STM5SjlKTk5JQXFWLXl2RXYyQVdiZjd3U1hhSk1xUzNscWJrUUczc1U1MHNrQzYwMDlkU2k1WFFhSG5uUnl2YlVEcWcyVHZKeTFqRkMxaE1HU296aTBNdGt0Q1BvOVN1b0NuX3RKOFczeDJXWE1USGJkU0xaOUFMMVNieng1dDlkMnhhVTNFY0dHNXhQbXNZMXJvNA?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMirgFBVV95cUxORXNSSDhJeXhuZ0Z0ZlM1ZGpwdlhJaWhiR0xObFljZ0NTV0tYUWp4S3VXZ0EtOWpSQ1dlb3RRcVdyWGl4NUxzWGRSbmREd1RGbDg1aFpmeHlhVVIxLTh6d09KWnFBVk9ER0MxSmN6MW9DZ1ZsMndRajNzMzBkV3hCbVdwbEZ0ZFBRLXdMbXZDLTZFdTZZeGNfQW9hNGhlc0R0ekpZek1qbmNST0pYRkHSAbMBQVVfeXFMTks1eWhUZngyTXFCSzFuYzhNZkFlcWhGUkEtbHhSLV9CV3BvTm1hdWJhUGF6UjJFNFRHZ3U5MDd2NU54b29LVUJsM0lrN2FocUI4OFFmXy03ajZfbk45aHZucFVUSUpSTXZRQjlVTWFWR2FaV25TQXAydV85Z3QwaFd2b2tJOWxnbGZrSDlFVU1TREFfUWRFaUZEVHlqUXJPMllYRzRCVHJPd1pyTkhZSGpZUUk?oc=5"
|
||||
"https://news.google.com/rss/articles/CBMimwFBVV95cUxOanB1NUMyMkJmMmRPdlZhSEtaZklsY1A3a0VBSGdaUzFWdVZUYkx6b054dS1PcFdTSmI0bkFrYVdZVzg0UDlIVFY2c1N5UnZQV3dncDU0NmlTRFh5TWlhNGVfTlFkVWV5T2NHcDN1ZENfVnAyVFg4VzkxSXRUM3FPbGtKQ0V0WnhZTWlOdzRMYVctdWhzaGxSdzlRVQ?oc=5"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.malaysia.gov.my/",
|
||||
|
||||
50
data/regions/NG/Default/Lagos.json
Normal file
50
data/regions/NG/Default/Lagos.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"region_name": "Nigeria - Lagos",
|
||||
"google_module": {
|
||||
"base_lat": 6.5244,
|
||||
"base_lon": 3.3792,
|
||||
"lang_params": "hl=en-NG&gl=NG",
|
||||
"valid_url_suffix": "com.ng"
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://punchng.com/insecurity-bauchi-police-bans-night-operations-of-bikes-tricycles/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://punchng.com/womens-health-takes-centre-stage-at-lagos-iwd-event/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://punchng.com/nsc-eyes-22-gold-medals-at-commonwealth-games/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://www.gtbank.com/",
|
||||
"https://punchng.com/kwara-group-backs-reps-candidate-decries-neglect/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://www.nairaland.com/",
|
||||
"https://punchng.com/nigeria-arrive-botswana-for-world-relays/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://www.konga.com/",
|
||||
"https://punchng.com/how-i-was-denied-ranking-senator-position-niger-candidate/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://punchng.com/groups-seek-affirmative-action-in-upcoming-elections/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://punchng.com/kwara-begins-vaccination-of-pilgrims-ahead-of-2026-hajj/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://punchng.com/only-50000-n13m-found-in-my-house-not-13m-achimugu/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://www.punchng.com/",
|
||||
"https://www.mtn.ng/",
|
||||
"https://www.airtel.com.ng/",
|
||||
"https://punchng.com/flamingos-thrash-nazareth-7-0-in-wcup-qualifier-prep/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://punchng.com/my-father-wont-allow-me-join-besiktas-osayi/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://www.firstbanknigeria.com/",
|
||||
"https://punchng.com/police-track-attackers-of-bauchi-female-student/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://www.vanguardngr.com/",
|
||||
"https://punchng.com/genoa-star-ekhator-hints-at-eagles-switch/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://guardian.ng/",
|
||||
"https://punchng.com/athletes-decry-neglect-demand-competitions-funding-from-afn/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://punchng.com/group-faults-directive-on-nomination-forms/?utm_source=rss.punchng.com&utm_medium=web",
|
||||
"https://www.jumia.com.ng/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.jumia.com.ng/",
|
||||
"https://www.punchng.com/",
|
||||
"https://www.gtbank.com/",
|
||||
"https://guardian.ng/",
|
||||
"https://www.konga.com/",
|
||||
"https://www.firstbanknigeria.com/",
|
||||
"https://www.vanguardngr.com/",
|
||||
"https://www.nairaland.com/",
|
||||
"https://www.airtel.com.ng/",
|
||||
"https://www.mtn.ng/"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -8,28 +8,28 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.belastingdienst.nl/",
|
||||
"https://nos.nl/l/2611728",
|
||||
"https://www.ns.nl/",
|
||||
"https://nos.nl/l/2611737",
|
||||
"https://nos.nl/l/2611716",
|
||||
"https://nos.nl/l/2611732",
|
||||
"https://www.buienradar.nl/",
|
||||
"https://nos.nl/l/2611731",
|
||||
"https://nos.nl/l/2612225",
|
||||
"https://nos.nl/l/2612184",
|
||||
"https://nos.nl/l/2612232",
|
||||
"https://www.marktplaats.nl/",
|
||||
"https://nos.nl/l/2611710",
|
||||
"https://www.ing.nl/",
|
||||
"https://nos.nl/l/2611745",
|
||||
"https://nos.nl/l/2611729",
|
||||
"https://nos.nl/l/2611696",
|
||||
"https://nos.nl/l/2611744",
|
||||
"https://nos.nl/l/2611738",
|
||||
"https://nos.nl/l/2611694",
|
||||
"https://nos.nl/l/2612197",
|
||||
"https://nos.nl/l/2612213",
|
||||
"https://www.rijksoverheid.nl/",
|
||||
"https://nos.nl/l/2612247",
|
||||
"https://nos.nl/l/2612245",
|
||||
"https://nos.nl/l/2612219",
|
||||
"https://www.belastingdienst.nl/",
|
||||
"https://nos.nl/l/2612178",
|
||||
"https://nos.nl/l/2612254",
|
||||
"https://nos.nl/l/2612201",
|
||||
"https://nos.nl/l/2612185",
|
||||
"https://www.bol.com/",
|
||||
"https://nos.nl/l/2611719",
|
||||
"https://nos.nl/l/2611725",
|
||||
"https://nos.nl/l/2611703"
|
||||
"https://www.ing.nl/",
|
||||
"https://www.buienradar.nl/",
|
||||
"https://nos.nl/l/2612249",
|
||||
"https://nos.nl/l/2612246",
|
||||
"https://nos.nl/l/2612180",
|
||||
"https://www.ns.nl/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.rijksoverheid.nl/",
|
||||
|
||||
@@ -8,29 +8,29 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.channelnewsasia.com/singapore/marriage-matters-young-singaporeans-falling-numbers-experts-6085086",
|
||||
"https://www.nus.edu.sg/",
|
||||
"https://www.channelnewsasia.com/sport/shanto-rahman-fire-bangladesh-seal-2-1-odi-series-win-over-new-zealand-6076636",
|
||||
"https://www.channelnewsasia.com/singapore/singapore-confiscates-400000-criminal-proceeds-malaysian-6085541",
|
||||
"https://www.channelnewsasia.com/east-asia/south-korea-probes-syringe-hoarding-war-hits-plastic-makers-6085471",
|
||||
"https://www.channelnewsasia.com/business/chinese-battery-maker-catl-signs-first-major-sodium-ion-deal-energy-storage-6085526",
|
||||
"https://www.shopee.sg/",
|
||||
"https://www.channelnewsasia.com/business/electrolux-plans-about-1-billion-share-issue-tie-up-midea-in-north-america-shake-up-ops-6077066",
|
||||
"https://www.channelnewsasia.com/business/milan-tech-firm-bending-spoons-picks-banks-20-billion-us-listing-sources-say-6076741",
|
||||
"https://www.cpf.gov.sg/",
|
||||
"https://www.channelnewsasia.com/business/us-sets-preliminary-antidumping-duties-solar-imports-india-indonesia-and-laos-6077106",
|
||||
"https://www.channelnewsasia.com/world/trump-administration-marijuana-drug-medical-use-6076856",
|
||||
"https://www.channelnewsasia.com/business/microsoft-plans-first-voluntary-employee-buyout-cnbc-reports-6076806",
|
||||
"https://www.gov.sg/",
|
||||
"https://www.channelnewsasia.com/business/warner-bros-shareholders-back-us110-billion-merger-paramount-skydance-6076681",
|
||||
"https://www.channelnewsasia.com/asia/indonesia-not-impose-tariffs-strait-malacca-foreign-minister-sugiono-6076516",
|
||||
"https://www.channelnewsasia.com/business/in-two-amazon-units-builder-replaces-traditional-job-titles-6076801",
|
||||
"https://www.channelnewsasia.com/business/stocks-retreat-us-iran-peace-talks-stall-6076641",
|
||||
"https://www.dbs.com.sg/",
|
||||
"https://www.iras.gov.sg/",
|
||||
"https://www.channelnewsasia.com/world/ukraine-russia-war-european-union-loan-hungary-pipeline-6076921",
|
||||
"https://www.channelnewsasia.com/sport/miami-grand-prix-practice-extended-after-rule-changes-race-cancellations-6076656",
|
||||
"https://www.singpass.gov.sg/",
|
||||
"https://www.channelnewsasia.com/business/openai-falls-short-revenue-and-user-targets-it-races-toward-ipo-wsj-reports-6085296",
|
||||
"https://www.channelnewsasia.com/singapore/infertility-ivf-assisted-reproductive-treatment-greater-support-education-6083396",
|
||||
"https://www.fairprice.com.sg/",
|
||||
"https://www.channelnewsasia.com/sport/coventry-chairman-king-shrugs-reports-linking-lampard-chelsea-return-6076911",
|
||||
"https://www.channelnewsasia.com/business/cretaceous-kraken-prowled-seas-during-age-dinosaurs-6077036",
|
||||
"https://www.channelnewsasia.com/sport/mclaren-will-have-completely-new-car-miami-gp-6076976"
|
||||
"https://www.channelnewsasia.com/world/donald-trump-says-abc-should-fire-last-night-host-comedian-jimmy-kimmel-6084596",
|
||||
"https://www.channelnewsasia.com/business/google-signs-classified-ai-deal-pentagon-information-reports-6085551",
|
||||
"https://www.gov.sg/",
|
||||
"https://www.channelnewsasia.com/dining/hong-kong-kee-wah-bakery-closes-ion-orchard-store-6085186",
|
||||
"https://www.channelnewsasia.com/singapore/premarital-marriage-counselling-couples-compatibility-issues-6083431",
|
||||
"https://www.channelnewsasia.com/singapore/woman-questions-prudential-life-claims-head-insurer-responds-6085366",
|
||||
"https://www.channelnewsasia.com/business/boj-keeps-rates-steady-3-board-members-dissent-call-hike-6085301",
|
||||
"https://www.iras.gov.sg/",
|
||||
"https://www.channelnewsasia.com/business/australia-charge-big-tech-companies-2-levy-unless-they-strike-local-news-deals-6085461",
|
||||
"https://www.dbs.com.sg/",
|
||||
"https://www.singpass.gov.sg/",
|
||||
"https://www.cpf.gov.sg/",
|
||||
"https://www.channelnewsasia.com/business/japan-government-weighs-golden-share-maintain-tepco-oversight-tv-tokyo-says-6085386",
|
||||
"https://www.channelnewsasia.com/business/investors-react-bojs-decision-hold-rates-6085341"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.gov.sg/",
|
||||
|
||||
@@ -8,30 +8,30 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.post.gov.tw/",
|
||||
"https://news.google.com/rss/articles/CBMi0gFBVV95cUxPZUdJQVZpMVdsS1ZIYzd2TkhpQkRPOUJmd3lIRC1PSWRpbDJZNHUxNlpwM2RMVHBUYjZWSzNNcTQtbEFhNHozTTBacWp3Mzl4d09YeGFha0ZxRkN0U01OZG5FeklFbUtEb0l1TW5SWWRNQ0JzcFp3TEVqUFdlRi01QnRQVlBLbEV3SVNyYWFBbGllTGdfcGc3VjYzNERGX0RpZFFZUkxtX09KMFM5TmZVeklPX0dMa3EydDgwUV9yUFgxaGZzM0JzNGQtWl9vRUpqWFE?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiZkFVX3lxTE1kdU8yNlI0c2NKSzFjdGlWNHk4MmFHQVZXRUJocGhQTlZrc2ZXTkVKYXBWUUZSUF9nNnhyeUE2ZV9IY3NvRWdLRDJrc1E0eWRrQXVaLW9MYzN3eTIzX2VjWEZQc1NCQdIBa0FVX3lxTFB4WWVBdXV0NjdZY2xfam5PLUQ4VDBZaUlwOTFlZ19fcG53dW9VbjVGakNUcGNkaUJnYjZpejBkd0hSQm1HcnYyUmpXUFg1V2E4cTYta093Z1AtSHY2S0s1VUFqRS12S3JKMU9Z?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiUkFVX3lxTE0yNkVPWlVSczlIUFRZMlBtVkNUMUJzb2FXVDFVQll4ajhFdlBjMlRWUk9MaE5hRWxlanVMaGtCM2tTYTZtYS0ybzE4ZlQ3bUVRalE?oc=5",
|
||||
"https://www.pchome.com.tw/",
|
||||
"https://www.cathaybk.com.tw/",
|
||||
"https://www.gov.tw/",
|
||||
"https://news.google.com/rss/articles/CBMiswNBVV95cUxPcDZmUHpyYmlLUkZSaGtGaW1qa1JBd2N6bnY0RTJBblg5WXlxVDYwYm9yQ0J3Zi1YV25RRmk0V1hyVmhTWUpWQ09sY2tJVkZ4azdnZml0SG9yRnZodWVZMHhHV3U2dmN0OEp4dk9PSWpOVEhjYmFBRVg4cU1xaVZiTU05dVBRRzJROG1HR1BtRmFFck1sWDd0TXhvZHRLT0lGZVk0QUJQUTBUVHJJeWxWWjBNaXg3MEUxUW54RkRxVlhmbkhPZmxNdkJqbkczeWJ1c3ZEVURmMDk0d1RYSlZqckNxSnFaMUVNbmstc0N2clhoTjBocmM5bmk4eUhuRVpsbnpyaEI2UEF1WDkxcTRUNy14YXdvVmpqVGtJQ3ZHUXhWdFF2aEQxQS1IU1h2N2dyWUxZU0h6ZXJfeDBsN09aY3YydUVTODlIV2N1Z3loSjNBVkRSWVVBS281TTVDTi00UlZYZ1RENFBPdFh4YTdsWUJPUmVKdUJodTlIUTR0Mm03Z3YzODN0dUgzbmZWY1U3RE5qZWdMOHdFTXRjY29SZXJUME5vTFVNdXRmQTZMSmVOZlk?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiUEFVX3lxTE0xdUpUQlNCUEdEeVdVYTg0ck1LYUw5Yll4OW5vTEZNTjRkQm5ROHlNMTJOdWE0czBLUjBxamlvNXIwMTdVei05M2hzY19BTk1M0gFWQVVfeXFMT1hVZEEyeWs4aHRTSzNKUGdfOUNqbUxYazJUMDN6RTJHYmhkU21fNTNnREliSG5WM3V3b0N0S3dkSTl2UGZ2Y19JUmRwWHJ3bGV0MzIyVmc?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMibkFVX3lxTFBHTmprcGlaR3I3TFlyUUhzZmFKQzZRYUFQXzhzR2dBVzJuQ1ZzU3c0T1ZMR2FRc3lkcTBFaThTdl92bWdhY3NBbFhOc01ZQ2pZc3l2bHUxT3BOOWcwMndYVFlZd0xYLU96bjVJOEdn?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiUEFVX3lxTE8wLWdBbXA4QVRlc2V2WE5rVTR2RE4zZVQweGZRSjdPNnBCclFoV1h0YkJZdkhkRElZdUtDQ0tBWVpPSzdvbjdqRXpuaTVET3ND?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiogFBVV95cUxOODRIaHhSWWx2UzBMMW83LUNid29ZTmFuYXgtZktVUWtJUFlzaWpOdTN2ZGZXTldlRUllTHJleGR2RFc0NjN1YVVyRC1VT0FuQjRIYmNreTFDdk0yaURzdHJ1SmdFRllCZEo0RWFWTkxzM2pDdWVDWDlETzBhRWRnVGlTT3hOUFo4MjYzaGRwb3cyeHJ2c3E1MHVrS0hTclBkWVE?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiWEFVX3lxTFBSWHMtZE5Ha1N0SGVMbWE0eHdFaV9aWktDNVpwWWZ2NmZYNU02N1RGVks5MXFYSWE2Yl9ZSkttRkZ6QWJ3azgzZl9LYzk2Ymx3bWpTRmFrZDA?oc=5",
|
||||
"https://www.momoshop.com.tw/",
|
||||
"https://www.dcard.tw/",
|
||||
"https://news.google.com/rss/articles/CBMiWkFVX3lxTE1iZnFiU1owM2FfT2laaWI5cXlaRWU3MTZQRW1YclpLTFRlZEFvZFhKM0ZoYVlIOTFrRVprYUpuUEdmdGsyZURIM2VQcEYwM0h4Ui1NS0JDOWlyQdIBX0FVX3lxTE1seFFrMFpxQVpHckVjemhieDFaNW5tcFNHU0RTQlVka0UycVZWcGVna3hPVnFReW5ZTlJ1c0xJQUswWGZBRkJXX3kxTGtuSmxOOFJ1bkhuZHMyWE5VWnRj?oc=5",
|
||||
"https://www.thsrc.com.tw/",
|
||||
"https://news.google.com/rss/articles/CBMiZkFVX3lxTE1xSXBsR2pKWXBZc0x4bUJxZWFEak04S25qaFI0Y3BLTnozc2Q3MzRHbWFCNUlZbVZDY0JzUVROTHJrWC1od2V0THVSb251bFdQeE15anltRnZ0NGNpc3MyVS1WeUlMd9IBa0FVX3lxTE1KWjRfMVBZN25ISHJLWGFLZGg1Rm1EMVFBMTZiMndKcmpSelVNSzJWU2NVazFMZnJHNmhxUWVzVkdNMDE2c05pb0RmZ2ZSUFZIbTNnbHNjYzU0eGZJbkRXOVRucHIxYnduazFz?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiYEFVX3lxTE11eVZ2Rlk5SEthZmRtanVXWmRrWXhGYXRVbEpmSTBfSjluLTBNSlpCV3BZQUhoXzVYSzd5OTh2V2lFV3dtSWlXUG9IS2NwZHFPREwxdnNJVkVzVDZfZDlUV9IBZkFVX3lxTE5xWG9UNHJiLVhqem1td1JvbEkzR1Zpc1ItMDNGOTNvZFhiYURBR2ZtREp6aFdqWUxCUHpKUWZmTlVYQ3M3bzdJUWhnLUhrNFBBdlMxQk9faHRGWkh6eU9TRjljV1Y0UQ?oc=5",
|
||||
"https://www.ntu.edu.tw/",
|
||||
"https://news.google.com/rss/articles/CBMi1wJBVV95cUxPREFTbWloRmVNY0lyQXlHMkZ6QmtCM2M1RGdzbk8zQXNmMzhlRTJ5UkxKNHBIZjZBS0Z4akkzN3NmRkRiaTB4cUUxQ0pOa3lzdG1rNXJsaHhnSFcxX2Y1SXhoRkU3di1LZ29GVEFraEtOLVpWSURtZlRyX0licU81VkhHdVBMckNTeDNZNFdsVTlQbC14cGthN3VER0JtZk13VDF4ZlhON1dZZFBqcHNxdkpycmFBc1d1ZTRWWV82S2RzQzE3SzhuMUFCb3UwMFZfWTBIU1JpXzRORS1PVEpCMzlmTmRfZVY0b2Rtelo1Znk1UkJ4VUhySzdOQjBjaDJaR3ppZkR2NGlrdzdtMDZqU0Mta0tuLXBzRk1YbG1jR3Vxd0loWlJ3YmhEdGYxMzk3WWtjWi1BN0NFMXhSTUltRHFrMll4N3hwWFpBWmxCLWhiUmhkTnBn?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiU0FVX3lxTFBDS2JaR3M3cjRLTHlMR1Y4U1IzNkkxM0I1aWY0S3B1ZDFkdUZWQlc3VC1nZndhQkUzRkJmZERvS1lsSG5lUXRUc3BqaTRPQVVFeG5v0gFYQVVfeXFMT2dUMTFLVHZpWWg0SE9XMWFwQnZhZ2lBLWUwbHhNTlhNbTZfc3ZUUF92QUlLTEpzTGlwS2t3Qi1WZmpHdWdMcG5zaHFmTmRPTmlpMDhQeS1wXw?oc=5",
|
||||
"https://www.cathaybk.com.tw/",
|
||||
"https://news.google.com/rss/articles/CBMiaEFVX3lxTE1pYlNZeXhKUm9JaVBFRUlDc09qZkpBdEg5SnpBNE9rbHB4V0xyVmNvUDBDUDF5U0R1Q1JaVDhUZ1gta21yY3pLMWFwcVphUXc0RUJoWENhano1RHMwcTNtM2VXMjBsXzBs0gFuQVVfeXFMUDZlRzljakZCNTUxUXBQWVBtVDZFM0xyVU0ta1g3VTVWVTRsdDNoRFBYTVBJa0FCLUlWLXpGOFNpMXRSeVR1YWhCX3k4dUJmaWpUcnVMdzVaRXd0b1VVajJWaVE0M2tWU0lWWmVGeHc?oc=5",
|
||||
"https://tw.yahoo.com/",
|
||||
"https://news.google.com/rss/articles/CBMiZEFVX3lxTE9udVJJTVBBT1Z0ZFlmZXNpZFBnTDM3RmU0NkhVZnNNMEg5MHBrSHR4N2phUlZGNmhNQ1hubEM0MjljUmZrZkpyTDVNa1RDQ1YtY1Zha0diV29wUjhEbGdOeUhBMm7SAWpBVV95cUxQSlNFcy13NWd4Y2Nlck41Y0ZTTGhrWnlkalRCWm1RUm9ndkxkLUdUM1NHcFI4ZnZwWFdiR3RqNjVvVVM4UnkzbXJXbUhBRjl2UUVaNUFibGwwRTk1ZHhaSUx0aWVoLVNvc3hn?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiT0FVX3lxTE1WNGN4MEFiTjdScmQ0NDZxaDN5cUxQbmpFbnF1eHVJaXBfSlc0ekZTOUxrYkJzVVJVWUstRGI2ekVjajEzVU8zeUdVUjRBSUU?oc=5"
|
||||
"https://news.google.com/rss/articles/CBMiT0FVX3lxTE1HM25GT2Zfc2lVZmU0OGg0OWduc3pWRTRjVmtNZmstMjVEcWJaUlRIWU1XTTNUaUxPdFNreVZSc2JSV1BwQXRfUDFHLTJTNGM?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMivwJBVV95cUxOZGFBUkQ2ajlVblBVZmYzWExCTExYUnliNXc0SGtlZHNIdUFzZDBic0RkLTRtWS1La0lNSGQzZWM5VGxadUNQX3VFUjZmc2FtWnBoelAzWXdmT0pSbjZfWkRpTWtDTVVuVUUyaFRkSzlkZ2lJdFI3a0JhR1h0QUlVV0ZPQVBPUVp1dzFia0RrdjdsWDZkTVRVYmJKQjNFMnVvZzFidVN5YW56YkJxTzMwdlYybFpFSm9sMk1PWm92Z21oRzJkdVlZQ09QWXJpWUhFVTJqOXU3U0Fvel9QeTJ1cWxQdC1zcE1FcXl5SERRVmVyaGpJblFtSXRaT0psMzJLZEotbTBiWWFDaGdOcXctUWJ4NzFJVUN5WU5UUjZmc0hvRTIwdTRIVVNLLWZBZkFNTE4yRTd6RHJGRVVSaGVB?oc=5",
|
||||
"https://www.pchome.com.tw/",
|
||||
"https://news.google.com/rss/articles/CBMiXEFVX3lxTE1PSFowT1g4Y1JKc21UakxNbmdCYy1fandnaTVyRGQzaV9xdF9Pd2k2WDdPQVNUQnVnR251ZWZ3WWdiR25pTjNGRTFDYnh4eFpUTmlHaUJCYWQ3UlVm0gFiQVVfeXFMTmRGcXNmVzN4NHFtS0NhWDN4V01KTGxKV2F6eld6Y3BBbGdkTFZUV2Q2YU1xV25YeU9DVDRFWXNOLVBJdnhpcEUxOEc3ajlWbG5GV3ZqSjQzNTNFSGZjLVdUTXc?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiTkFVX3lxTE5sSi1WUnVtVDJoa21Oa0JnR1dER0pwbzlkN0hIYmlrQ3R5UWVwcmE1MDEwTkp2Rml0c3piRmw1bk9EZnFCaUJkX3lSWVlmZw?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiV0FVX3lxTE1KcXNaREVRQThwOThQZlAzZ3pORy0yTUlFVEMxSXdYRWc0YkhhVi1naS1ZTUhTYmVGTFhqTXR2MWJJdllORFAtNThYRENZNXlkTlFXVkRBWdIBXEFVX3lxTFBWbkhobGgybzJFQ21xM1c2aExVcW9neFZFZmFpcl8wcEo1bmM4OE05MFVfejdkemliMXFraTFGa3NUMWNTSlRadVhuMk1lTTltbGQ0M0x0ckdMWHlw?oc=5",
|
||||
"https://www.ntu.edu.tw/",
|
||||
"https://www.gov.tw/",
|
||||
"https://www.dcard.tw/",
|
||||
"https://www.post.gov.tw/",
|
||||
"https://news.google.com/rss/articles/CBMikANBVV95cUxQaVNSUE52RW5MSDJobmYyajZrdlFiZFdnTXItcGt5ajV4bWxkYnFTa3F6Zm9zbDg3WUswMjhWYTJ6VFVROW52SkxXVnJpa29kR1pOdWZVMXJySnNBTlZIMGw0cnd0WTN6UzBYdFllMGppZ3NWdVhHajBScG9WaE43YTF6clEwTnNhN2ZqQ002Zkl0bkxmZktQN1k2WndqVUd5WEdzbTBmS0FaekloSWdmU282d2VYY1hrTXYyZy1QVmZ3VjVVcTVoT3NLUkIxT3pUYnE2a01sLXRkMWRVMnAzaVQ5aFRCV3JwVlNXRG9kaVoxLTZaTUdIMEY5MHBCbDhGVWZoZG9nRmUyTTFJUENZVXdEXzJkanliUTczT1pDWktiZ0xMMmg0c3Q4ODYwNVJDNk1NaFQ0QjdxWWlrckFNQWZBTC02VlBqdy1IbDNJT3NPTE9wV1hNQ09CbEhRTW1CejQwY1BqRlgzUlgxSkRPb0JuazN3MHIyU2JOZm81X2o4bU1nRjBYb0E2eFBCMmUy?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMihANBVV95cUxNT0lNS0RHVHNNOHNmekI0NHBlRWVUMkZUZllaZmROV2E1N2ZRdXRrNDFpN2dldDZsejIzT29BMTVtbnVPLUtHenozdUV3eElkZTFkSGxNMGNuSVR5YUZLNVJHdUl2VVlNLS1KVFEtaXBNZzVDdDU4a0p1VUJTdzFHWHhUZ2J0c0RZZDRtdzJlSTE0ZFBQM2c5QjRNZTdKbEY5TU9QXzhmck1CaHg1aW9idUxhLWRVTXpJSVFCMEQzSHdwbUhndzBrNld3QUwtbGtjUnRrT3F2bGoxT0l4ai10Qk5OOTVuNk9OVmtRNUgtUXpOVXRSZTFvdE80cTllMk9sN2paaXBFWEhlbVZHSXc0dk5UT21fNVRnX2VST2lRamxXNzNTVGFsWkQ5eF9yaUlLT25OWkRTd1UzekVNdFR1dktUb1dPcURXdW54WXNBZVRVSTc0YW5nLUFrdUtVTFdlNTluM0lHeGQ4RHdSRDVtR3c5dktvWGNxVERFMkhablBzdWV5?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiUkFVX3lxTE1qOU40N05fU3JzcVo2X3JnYWI4S2Q4MTNFVmZMRjk5OFZWMURfVHBOelRaQTZ6ZjdaMUtWclZOdjN1NnJXRGphdFE1RXcxNndpNGc?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiUkFVX3lxTFBIMEFVX1lRZWRaWmNvbEtkdHlGQ3lkTWZKOGM2QnFmN19BdE56Nnl6S3FHY2hvUmtKci16VjVqRERweUFpaU0wOXp5TS05dk16bGfSAW5BVV95cUxQLXRDUUJFZlVJQmllNDhZUTFjYWJqSnoyOTJSVmFMbjdjUU5mZE52VmRvNjJqLUo5UVVQOWlpM0RsNHRNNDFfR2dFZFE1ZGhza284NU9KNDFJSm0yQmxiVTczVms4WlBVaVNVd2xHdw?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiVkFVX3lxTE00ODQ1QUJ0N3JQVXhlR0lpam80M1Q3SWFnbkZLZ2xUQVlEZkc1WU1JX1lHaTd5UXJWQnhnOXphbkZRZzBKLXpXalVjd2RGaHJjOXNXb3Vn?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMiUEFVX3lxTE45Tjl4T2U4eWlwQkJKNFc4eFRIb2ZVTDdBd0ZnejU0c3VaSTB4MDZic3ctSFVqNXhZdXpmcWtMaThZYU5GclhUSnBtYTNiUU430gFWQVVfeXFMUGRSZUNScnNGeklXdHJmRWZpYUFpd19zeUZvUUR2Qlg1NDNuc1hfSVI5b0tRdmNTcUpGUjlBVXVaQXhwdWVRU0FFWVpQSTdYeDVyaXdCLVE?oc=5",
|
||||
"https://news.google.com/rss/articles/CBMikANBVV95cUxQbkVwbHR3aVlZRDlNbExWSlQ5Wld6Yk52clduMzN2dGNnc2RZVVcyVk9JbW9LM2lsNjZqTUhaR3VfOURod3k4VXk3TDZPZzhmVWpUSGN5bmxiM2d5MDdLSWdTSDFmME5SSlV0a1BoX3hmc3VUeTRQbXJrSkZhZnhVRHFSbmU0MmpXbjROT0NEVWZ0VXRiRjJmbG9WT29waElYc2FJOWItYzBFbC1WZ0d2ODVHOXZFZll0TzJ4NXY1MUhsakdEYUtIRDJ0SHd4THRhbXlHOTQzSXh1V1I4TTAzN0tDQUY0eFRJa3ZMZHV1TjlhX3YyeWNJRGFxU3g2ZG5ydU5XTElMaGwwSC1EYlBnaHc5VmVmY0lwYzZJOE9nUlVaNkFoWXNlTHJETnJqUE1GdTdtSUItaDB5RXhOaHUwUmFVS20zVnBveHdyMnU2UGExVUh3TnMtWXZlU0dVeDVRTWFtM2pBYnJWVlpKSmJ4bkRXUVM4ODZDUXp3TlVzRUwyOEUyZV9DanZLcTBhd2hr?oc=5",
|
||||
"https://www.momoshop.com.tw/",
|
||||
"https://news.google.com/rss/articles/CBMiYEFVX3lxTFBxcHBSb3Zqd2pNZWtIcGMxR0dVYVJGU2pMSHI3WnpGbWppRFFUY2FzU25SNEhWRUpHUV8xZXlzN3lmZEpRamUtZVNOYlF2aVBzSVlNdjhlaEtLeV9XUU9ISNIBZkFVX3lxTE1naGZ6RlNORmMxQUx6N21LNHRlMTljZFB1ckJlRXo3WGFBek45VVBsNVFZQXQwelVwdnFFdUxIZW5YMV9sTjVBY1ljdElwckFGTHJSam5pdk5yNk1MS0stR1dSUUhFZw?oc=5"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.gov.tw/",
|
||||
|
||||
@@ -8,29 +8,29 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.nhs.uk/",
|
||||
"https://www.ox.ac.uk/",
|
||||
"https://www.bbc.com/news/articles/cdrm8k7lzmko?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cgj09ny0dq6o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cp3lge56zxwo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/clyxlnzrq41o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/articles/cy813gy08v2o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/c20qrg4dyr3o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/videos/c0q9k3lekn3o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/articles/c98kz9pe01po?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/c86ezy3qvjno?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cr41yel6v4eo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/articles/cly60l1e6nxo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cvgkwk9525zo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cje4eeyq27lo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.ebay.co.uk/",
|
||||
"https://www.bbc.com/news/articles/cew7wez72vxo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/c86e6z26xdpo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.gov.uk/",
|
||||
"https://www.bbc.co.uk/iplayer/episode/m002t4vt?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.barclays.co.uk/",
|
||||
"https://www.nationalrail.co.uk/",
|
||||
"https://www.bbc.com/news/articles/c5ywjn9zpyjo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cgj0jx4pqzvo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/articles/cqxpjrlry4xo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.amazon.co.uk/",
|
||||
"https://www.bbc.com/news/articles/c3r3pz82g58o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.postoffice.co.uk/"
|
||||
"https://www.barclays.co.uk/",
|
||||
"https://www.bbc.co.uk/sounds/play/p0ngxnlq?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.co.uk/news/10628994?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cn898mrkjl5o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/videos/ce8j8r3r2wjo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.ox.ac.uk/",
|
||||
"https://www.bbc.com/news/articles/c2e2dd08rdko?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.nhs.uk/",
|
||||
"https://www.bbc.com/news/articles/c62d43vdgmmo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/c7v953jyj76o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.co.uk/sounds/play/p0ngrsbh?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.nationalrail.co.uk/",
|
||||
"https://www.bbc.com/sport/boxing/articles/cj373dln1llo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.postoffice.co.uk/",
|
||||
"https://www.bbc.com/news/articles/cm2pn8zdxdjo?at_medium=RSS&at_campaign=rss"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.gov.uk/",
|
||||
|
||||
@@ -8,29 +8,29 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.bbc.com/news/articles/cp3lge56zxwo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.barclays.co.uk/",
|
||||
"https://www.bbc.com/news/articles/c20qrg4dyr3o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/videos/c0q9k3lekn3o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/clyxlnzrq41o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.amazon.co.uk/",
|
||||
"https://www.postoffice.co.uk/",
|
||||
"https://www.bbc.com/news/articles/c2e2dd08rdko?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.co.uk/news/10628994?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/articles/cqxpjrlry4xo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/boxing/articles/cj373dln1llo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/videos/ce8j8r3r2wjo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cew7wez72vxo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cgj0jx4pqzvo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.ox.ac.uk/",
|
||||
"https://www.bbc.com/news/articles/c5ywjn9zpyjo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/c3r3pz82g58o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cgj09ny0dq6o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cr41yel6v4eo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.gov.uk/",
|
||||
"https://www.bbc.com/news/articles/cdrm8k7lzmko?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/articles/c98kz9pe01po?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/articles/cly60l1e6nxo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/sport/football/articles/cy813gy08v2o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.nationalrail.co.uk/",
|
||||
"https://www.bbc.co.uk/iplayer/episode/m002t4vt?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.amazon.co.uk/",
|
||||
"https://www.bbc.com/news/articles/c62d43vdgmmo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/c86e6z26xdpo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.nhs.uk/",
|
||||
"https://www.bbc.co.uk/sounds/play/p0ngrsbh?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.postoffice.co.uk/",
|
||||
"https://www.nationalrail.co.uk/",
|
||||
"https://www.bbc.com/news/articles/c7v953jyj76o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cje4eeyq27lo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.ebay.co.uk/",
|
||||
"https://www.bbc.com/news/articles/cvgkwk9525zo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/c86ezy3qvjno?at_medium=RSS&at_campaign=rss"
|
||||
"https://www.bbc.com/news/articles/cn898mrkjl5o?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.barclays.co.uk/",
|
||||
"https://www.bbc.co.uk/sounds/play/p0ngxnlq?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.bbc.com/news/articles/cm2pn8zdxdjo?at_medium=RSS&at_campaign=rss",
|
||||
"https://www.gov.uk/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.gov.uk/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.chase.com/",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.npr.org/2026/04/23/g-s1-118440/up-first-newsletter-us-iran-john-phelan-trump-republican-democrat-midterm-fundraising-budget-reconciliation-ice",
|
||||
"https://www.cnn.com/2023/04/17/health/rise-type-2-diabetes-global-wellness/index.html",
|
||||
"https://www.cnn.com/2023/04/18/politics/mccarthy-biden-debt-ceiling/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.cnn.com/2023/04/18/us/benadryl-tiktok-challenge-teen-death-wellness/index.html",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/h_8d51e3ae2714edaa0dace837305d03b8",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",
|
||||
"https://www.cnn.com/cnn-underscored/reviews/mmmat-silicone-mats?iid=CNNUnderscoredHPcontainer",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.cnn.com/2023/04/18/health/teen-misuse-adhd-meds-wellness/index.html",
|
||||
"https://www.npr.org/2026/04/23/nx-s1-5795829/peace-talks-between-us-and-iran-at-a-standstill-as-trump-extends-ceasefire",
|
||||
"https://www.usps.com/",
|
||||
"https://www.cnn.com/videos/politics/2023/04/18/jake-tapper-dominion-lawsuit-settlement-fox-news-statement-lead-vpx.cnn",
|
||||
"https://www.target.com/",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.cnn.com/2023/04/18/politics/schumer-senate-feinstein-vote-cardin/index.html",
|
||||
"https://www.cnn.com/2023/04/14/entertainment/yellowjackets-90s-music/index.html",
|
||||
"https://www.cdc.gov/"
|
||||
"https://www.irs.gov/",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.target.com/",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.usps.com/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.usa.gov/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.amazon.com/",
|
||||
"https://www.npr.org/2026/04/23/nx-s1-5795829/peace-talks-between-us-and-iran-at-a-standstill-as-trump-extends-ceasefire",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.cnn.com/2023/04/18/politics/mccarthy-biden-debt-ceiling/index.html",
|
||||
"https://www.chase.com/",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/h_8d51e3ae2714edaa0dace837305d03b8",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.cnn.com/2023/04/18/us/benadryl-tiktok-challenge-teen-death-wellness/index.html",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/14/entertainment/yellowjackets-90s-music/index.html",
|
||||
"https://www.target.com/",
|
||||
"https://www.npr.org/2026/04/23/g-s1-118440/up-first-newsletter-us-iran-john-phelan-trump-republican-democrat-midterm-fundraising-budget-reconciliation-ice",
|
||||
"https://www.cnn.com/videos/politics/2023/04/18/jake-tapper-dominion-lawsuit-settlement-fox-news-statement-lead-vpx.cnn",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/17/health/rise-type-2-diabetes-global-wellness/index.html",
|
||||
"https://www.cnn.com/2023/04/18/health/teen-misuse-adhd-meds-wellness/index.html",
|
||||
"https://www.cnn.com/2023/04/18/politics/schumer-senate-feinstein-vote-cardin/index.html",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.usps.com/",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.cnn.com/cnn-underscored/reviews/mmmat-silicone-mats?iid=CNNUnderscoredHPcontainer",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.target.com/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman"
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.chase.com/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.usps.com/",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.cdc.gov/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.usa.gov/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.usa.gov/",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.npr.org/2026/04/23/nx-s1-5795829/peace-talks-between-us-and-iran-at-a-standstill-as-trump-extends-ceasefire",
|
||||
"https://www.chase.com/",
|
||||
"https://www.usps.com/",
|
||||
"https://www.cnn.com/2023/04/17/health/rise-type-2-diabetes-global-wellness/index.html",
|
||||
"https://www.cnn.com/2023/04/18/us/benadryl-tiktok-challenge-teen-death-wellness/index.html",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.cnn.com/2023/04/18/politics/schumer-senate-feinstein-vote-cardin/index.html",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/18/health/teen-misuse-adhd-meds-wellness/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.cnn.com/cnn-underscored/reviews/mmmat-silicone-mats?iid=CNNUnderscoredHPcontainer",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.npr.org/2026/04/23/g-s1-118440/up-first-newsletter-us-iran-john-phelan-trump-republican-democrat-midterm-fundraising-budget-reconciliation-ice",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.cnn.com/2023/04/14/entertainment/yellowjackets-90s-music/index.html",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/h_8d51e3ae2714edaa0dace837305d03b8",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.cnn.com/2023/04/18/politics/mccarthy-biden-debt-ceiling/index.html",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",
|
||||
"https://www.cnn.com/videos/politics/2023/04/18/jake-tapper-dominion-lawsuit-settlement-fox-news-statement-lead-vpx.cnn",
|
||||
"https://www.target.com/"
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.chase.com/",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.target.com/",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.usps.com/",
|
||||
"https://www.bankofamerica.com/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.usa.gov/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.npr.org/2026/04/23/g-s1-118440/up-first-newsletter-us-iran-john-phelan-trump-republican-democrat-midterm-fundraising-budget-reconciliation-ice",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.cnn.com/2023/04/18/health/teen-misuse-adhd-meds-wellness/index.html",
|
||||
"https://www.target.com/",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.cnn.com/2023/04/17/health/rise-type-2-diabetes-global-wellness/index.html",
|
||||
"https://www.npr.org/2026/04/23/nx-s1-5795829/peace-talks-between-us-and-iran-at-a-standstill-as-trump-extends-ceasefire",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.cnn.com/2023/04/18/us/benadryl-tiktok-challenge-teen-death-wellness/index.html",
|
||||
"https://www.usps.com/",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/14/entertainment/yellowjackets-90s-music/index.html",
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.target.com/",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.cnn.com/cnn-underscored/reviews/mmmat-silicone-mats?iid=CNNUnderscoredHPcontainer",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/h_8d51e3ae2714edaa0dace837305d03b8",
|
||||
"https://www.cnn.com/videos/politics/2023/04/18/jake-tapper-dominion-lawsuit-settlement-fox-news-statement-lead-vpx.cnn",
|
||||
"https://www.chase.com/",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.cnn.com/2023/04/18/politics/mccarthy-biden-debt-ceiling/index.html",
|
||||
"https://www.cnn.com/2023/04/18/politics/schumer-senate-feinstein-vote-cardin/index.html",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html"
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn",
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.chase.com/",
|
||||
"https://www.usps.com/",
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.harvard.edu/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.usa.gov/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/18/politics/schumer-senate-feinstein-vote-cardin/index.html",
|
||||
"https://www.npr.org/2026/04/23/g-s1-118440/up-first-newsletter-us-iran-john-phelan-trump-republican-democrat-midterm-fundraising-budget-reconciliation-ice",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.cnn.com/2023/04/18/politics/mccarthy-biden-debt-ceiling/index.html",
|
||||
"https://www.cnn.com/2023/04/18/us/benadryl-tiktok-challenge-teen-death-wellness/index.html",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.usps.com/",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/h_8d51e3ae2714edaa0dace837305d03b8",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.cnn.com/2023/04/14/entertainment/yellowjackets-90s-music/index.html",
|
||||
"https://www.cnn.com/videos/politics/2023/04/18/jake-tapper-dominion-lawsuit-settlement-fox-news-statement-lead-vpx.cnn",
|
||||
"https://www.cnn.com/2023/04/17/health/rise-type-2-diabetes-global-wellness/index.html",
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.cnn.com/cnn-underscored/reviews/mmmat-silicone-mats?iid=CNNUnderscoredHPcontainer",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.npr.org/2026/04/23/nx-s1-5795829/peace-talks-between-us-and-iran-at-a-standstill-as-trump-extends-ceasefire",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.chase.com/",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn",
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.cnn.com/2023/04/18/health/teen-misuse-adhd-meds-wellness/index.html",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.target.com/"
|
||||
"https://www.usps.com/",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.target.com/",
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.chase.com/",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.bankofamerica.com/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.usa.gov/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.cnn.com/2023/04/14/entertainment/yellowjackets-90s-music/index.html",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/18/politics/mccarthy-biden-debt-ceiling/index.html",
|
||||
"https://www.cnn.com/2023/04/18/us/benadryl-tiktok-challenge-teen-death-wellness/index.html",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.cnn.com/videos/politics/2023/04/18/jake-tapper-dominion-lawsuit-settlement-fox-news-statement-lead-vpx.cnn",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.cnn.com/2023/04/17/health/rise-type-2-diabetes-global-wellness/index.html",
|
||||
"https://www.cnn.com/cnn-underscored/reviews/mmmat-silicone-mats?iid=CNNUnderscoredHPcontainer",
|
||||
"https://www.target.com/",
|
||||
"https://www.npr.org/2026/04/23/g-s1-118440/up-first-newsletter-us-iran-john-phelan-trump-republican-democrat-midterm-fundraising-budget-reconciliation-ice",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.cnn.com/2023/04/18/politics/schumer-senate-feinstein-vote-cardin/index.html",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.chase.com/",
|
||||
"https://www.usps.com/",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/h_8d51e3ae2714edaa0dace837305d03b8",
|
||||
"https://www.cnn.com/2023/04/18/health/teen-misuse-adhd-meds-wellness/index.html",
|
||||
"https://www.npr.org/2026/04/23/nx-s1-5795829/peace-talks-between-us-and-iran-at-a-standstill-as-trump-extends-ceasefire",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman"
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.chase.com/",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.target.com/",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.usa.gov/",
|
||||
|
||||
50
data/regions/US/TX/Dallas.json
Normal file
50
data/regions/US/TX/Dallas.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"region_name": "United States - Dallas",
|
||||
"google_module": {
|
||||
"base_lat": 32.7767,
|
||||
"base_lon": -96.797,
|
||||
"lang_params": "hl=en&gl=US",
|
||||
"valid_url_suffix": "com"
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.chase.com/",
|
||||
"https://www.foxnews.com/",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.cnn.com/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.target.com/",
|
||||
"https://www.texas.gov/",
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.nytimes.com/",
|
||||
"https://www.dallasnews.com/",
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.texas.gov/",
|
||||
"https://www.dallasnews.com/",
|
||||
"https://www.cnn.com/",
|
||||
"https://www.foxnews.com/",
|
||||
"https://www.nytimes.com/",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.target.com/",
|
||||
"https://www.chase.com/",
|
||||
"https://www.bankofamerica.com/"
|
||||
]
|
||||
}
|
||||
}
|
||||
40
data/regions/US/TX/Houston.json
Normal file
40
data/regions/US/TX/Houston.json
Normal file
@@ -0,0 +1,40 @@
|
||||
{
|
||||
"region_name": "USA - Houston",
|
||||
"google_module": {
|
||||
"base_lat": 29.7604,
|
||||
"base_lon": -95.3698,
|
||||
"lang_params": "hl=en-US&gl=US",
|
||||
"valid_url_suffix": "com"
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.mdanderson.org/",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.rice.edu/",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.houstonchronicle.com/",
|
||||
"https://www.nasa.gov/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.houstontx.gov/",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.houstontx.gov/",
|
||||
"https://www.houstonchronicle.com/",
|
||||
"https://www.rice.edu/",
|
||||
"https://www.mdanderson.org/",
|
||||
"https://www.nasa.gov/"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.cnn.com/2023/04/18/health/teen-misuse-adhd-meds-wellness/index.html",
|
||||
"https://www.cnn.com/videos/politics/2023/04/18/jake-tapper-dominion-lawsuit-settlement-fox-news-statement-lead-vpx.cnn",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.cnn.com/2023/04/14/entertainment/yellowjackets-90s-music/index.html",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/h_8d51e3ae2714edaa0dace837305d03b8",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.npr.org/2026/04/23/g-s1-118440/up-first-newsletter-us-iran-john-phelan-trump-republican-democrat-midterm-fundraising-budget-reconciliation-ice",
|
||||
"https://www.cnn.com/2023/04/18/politics/mccarthy-biden-debt-ceiling/index.html",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.cnn.com/2023/04/18/politics/schumer-senate-feinstein-vote-cardin/index.html",
|
||||
"https://www.chase.com/",
|
||||
"https://www.cnn.com/2023/04/17/health/rise-type-2-diabetes-global-wellness/index.html",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.usps.com/",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.target.com/",
|
||||
"https://www.cnn.com/2023/04/18/us/benadryl-tiktok-challenge-teen-death-wellness/index.html",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.npr.org/2026/04/23/nx-s1-5795829/peace-talks-between-us-and-iran-at-a-standstill-as-trump-extends-ceasefire",
|
||||
"https://www.cnn.com/cnn-underscored/reviews/mmmat-silicone-mats?iid=CNNUnderscoredHPcontainer",
|
||||
"https://www.bankofamerica.com/"
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.target.com/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.usps.com/",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.chase.com/",
|
||||
"https://www.harvard.edu/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.usa.gov/",
|
||||
|
||||
@@ -8,31 +8,31 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://www.cnn.com/2023/04/17/tech/google-ai-search-engine-stock-drop/index.html",
|
||||
"https://www.usps.com/",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/h_8d51e3ae2714edaa0dace837305d03b8",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.irs.gov/",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.target.com/",
|
||||
"https://www.cnn.com/2023/04/18/politics/schumer-senate-feinstein-vote-cardin/index.html",
|
||||
"https://www.npr.org/2026/04/23/nx-s1-5795829/peace-talks-between-us-and-iran-at-a-standstill-as-trump-extends-ceasefire",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.npr.org/2026/04/23/g-s1-118440/up-first-newsletter-us-iran-john-phelan-trump-republican-democrat-midterm-fundraising-budget-reconciliation-ice",
|
||||
"https://www.cnn.com/business/live-news/fox-news-dominion-trial-04-18-23/index.html",
|
||||
"https://www.cnn.com/2023/04/18/us/mccurtain-county-oklahoma-officials-recording/index.html",
|
||||
"https://www.cnn.com/2023/04/17/media/dominion-fox-news-allegations/index.html",
|
||||
"https://www.chase.com/",
|
||||
"https://www.cnn.com/videos/politics/2023/04/18/jake-tapper-dominion-lawsuit-settlement-fox-news-statement-lead-vpx.cnn",
|
||||
"https://www.cnn.com/2023/04/18/us/benadryl-tiktok-challenge-teen-death-wellness/index.html",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.cnn.com/2023/04/14/entertainment/yellowjackets-90s-music/index.html",
|
||||
"https://www.cnn.com/2023/04/17/health/rise-type-2-diabetes-global-wellness/index.html",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.walmart.com/",
|
||||
"https://www.cnn.com/2023/04/18/politics/mccarthy-biden-debt-ceiling/index.html",
|
||||
"https://www.cnn.com/2023/04/18/health/teen-misuse-adhd-meds-wellness/index.html",
|
||||
"https://www.cnn.com/travel/article/southwest-airlines-flight-delays/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5800863/supreme-court-weighs-geofence-warrants",
|
||||
"https://www.cnn.com/2023/04/18/opinions/2024-presidential-election-alternative-voters-lieberman",
|
||||
"https://www.cnn.com/cnn-underscored/reviews/mmmat-silicone-mats?iid=CNNUnderscoredHPcontainer",
|
||||
"https://www.usa.gov/"
|
||||
"https://www.irs.gov/",
|
||||
"https://www.cnn.com/europe/live-news/russia-ukraine-war-news-04-18-23/index.html",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5793804/supreme-court-monsanto-roundup-arguments",
|
||||
"https://www.usa.gov/",
|
||||
"https://www.cnn.com/travel/article/worlds-longest-cycling-tunnel/index.html",
|
||||
"https://www.target.com/",
|
||||
"https://www.cdc.gov/",
|
||||
"https://www.npr.org/2026/04/27/g-s1-118892/china-blocks-meta-from-acquiring-ai-startup-manus",
|
||||
"https://www.cnn.com/videos/tech/2023/04/18/apple-store-mumbai-india-ceo-tim-cook-vedika-sud-ovn-biz-ldn-vpx.cnn",
|
||||
"https://www.cnn.com/2023/04/17/opinions/jim-jordan-clarence-thomas-judiciary-committee-obeidallah/index.html",
|
||||
"https://www.cnn.com/2023/04/18/media/netflix-dvd-red-envelopes/index.html",
|
||||
"https://www.bankofamerica.com/",
|
||||
"https://www.amazon.com/",
|
||||
"https://www.harvard.edu/",
|
||||
"https://www.npr.org/2026/04/27/nx-s1-5801448/melania-trump-jimmy-kimmel",
|
||||
"https://www.cnn.com/2023/04/18/politics/white-house-toddler/index.html",
|
||||
"https://www.walmart.com/"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://www.usa.gov/",
|
||||
|
||||
@@ -8,28 +8,28 @@
|
||||
},
|
||||
"trust_module": {
|
||||
"white_urls": [
|
||||
"https://vnexpress.net/",
|
||||
"https://vnexpress.net/to-hop-hoa-dau-long-son-dung-hoat-dong-5066377.html",
|
||||
"https://vnexpress.net/vo-dat-idol-len-tren-chong-con-5066192.html",
|
||||
"https://vnexpress.net/ong-trump-ra-lenh-huy-diet-tau-iran-rai-thuy-loi-o-hormuz-5066396.html",
|
||||
"https://vnexpress.net/nha-ga-duong-sat-toc-do-cao-bac-nam-se-nhu-thanh-pho-nho-5066403.html",
|
||||
"https://vnexpress.net/tom-hum-thoat-chet-nho-mau-sac-hiem-5067821.html",
|
||||
"https://vnexpress.net/van-cuoc-cuoc-doi-voi-xe-dien-cua-founder-dat-bike-5067616.html",
|
||||
"https://chinhphu.vn/",
|
||||
"https://vnexpress.net/60-quoc-gia-ban-cach-thoat-phu-thuoc-dau-khi-than-5067685.html",
|
||||
"https://vnexpress.net/vinhomes-green-paradise-don-them-hai-thuong-hieu-khach-san-quoc-te-5067817.html",
|
||||
"https://vnu.edu.vn/",
|
||||
"https://www.vietcombank.com.vn/",
|
||||
"https://vnexpress.net/lich-va-huong-dan-dang-ky-thi-tot-nghiep-thpt-nam-2026-cac-buoc-chi-tiet-nhat-5066107.html",
|
||||
"https://vnexpress.net/dpm-dat-loi-nhuan-515-ty-dong-quy-i-5066398.html",
|
||||
"https://vnexpress.net/gia-chung-cu-ha-noi-gia-chung-cu-tp-hcm-chung-cu-cat-lo-80-trieu-mot-m2-khien-toi-chet-dung-5066312.html",
|
||||
"https://dichvucong.gov.vn/",
|
||||
"https://vnexpress.net/auspacific-investment-viet-nam-ra-mat-voi-hoat-dong-tu-van-tai-san-5066110.html",
|
||||
"https://vnexpress.net/ukraine-lo-thieu-hut-ten-lua-patriot-do-xung-dot-trung-dong-5066373.html",
|
||||
"https://tiki.vn/",
|
||||
"https://vnexpress.net/phu-nhan-tong-thong-han-quoc-xem-mua-roi-nuoc-lam-banh-tai-ha-noi-5066355.html",
|
||||
"https://vnexpress.net/",
|
||||
"https://vnexpress.net/vi-sao-chi-em-dau-de-mau-thuan-5067671.html",
|
||||
"https://shopee.vn/",
|
||||
"https://vnexpress.net/ha-noi-mien-phi-xe-buyt-va-metro-trong-7-ngay-nghi-le-5066419.html",
|
||||
"https://vnexpress.net/tong-thong-han-quoc-va-phu-nhan-an-kem-dao-ho-guom-5066408.html",
|
||||
"https://vnexpress.net/italy-bi-xuc-pham-boi-de-xuat-thay-iran-du-world-cup-2026-5066405.html",
|
||||
"https://vnexpress.net/dong-nai-co-them-khu-cong-nghiep-xanh-1-800-ty-dong-5066343.html",
|
||||
"https://vnexpress.net/tp-hcm-se-mo-13-tuyen-buyt-ket-noi-san-bay-long-thanh-5066209.html",
|
||||
"https://chinhphu.vn/"
|
||||
"https://vnexpress.net/nhung-dua-tre-bi-day-vao-bang-dang-o-haiti-5059494.html",
|
||||
"https://vnexpress.net/luc-luong-nga-rut-khoi-thanh-pho-quan-trong-o-mali-5067759.html",
|
||||
"https://vnexpress.net/tinh-toan-vay-700-trieu-mua-them-dat-thay-vi-tra-no-1-5-ty-5067727.html",
|
||||
"https://vnexpress.net/carrick-man-utd-khong-nen-an-mung-qua-muc-ve-du-champions-league-5067713.html",
|
||||
"https://tiki.vn/",
|
||||
"https://dichvucong.gov.vn/",
|
||||
"https://vnexpress.net/gia-ve-may-bay-tang-chuyen-di-mua-he-ngay-cang-xa-voi-5067745.html",
|
||||
"https://vnexpress.net/tiem-kich-iran-tung-vuot-luoi-patriot-nem-bom-can-cu-my-5067737.html",
|
||||
"https://vnexpress.net/ong-putin-noi-da-nhan-duoc-thong-diep-tu-lanh-tu-toi-cao-iran-5067763.html",
|
||||
"https://www.vietcombank.com.vn/",
|
||||
"https://vnexpress.net/thai-lan-tinh-bo-chinh-sach-mien-visa-du-lich-60-ngay-5067738.html",
|
||||
"https://vnexpress.net/xin-nghi-viec-de-len-ke-hoach-dam-trong-thuong-dong-nghiep-5067787.html",
|
||||
"https://vnexpress.net/dot-quy-hai-lan-trong-5-ngay-5067695.html"
|
||||
],
|
||||
"static_urls": [
|
||||
"https://chinhphu.vn/",
|
||||
|
||||
@@ -14,6 +14,10 @@ if [ "$EUID" -ne 0 ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 🟢 [防劫持沙盒] 引入司令部专属随机安全工作区
|
||||
SECURE_TMP=$(mktemp -d /tmp/ips_master_install.XXXXXX)
|
||||
trap 'rm -rf "$SECURE_TMP"' EXIT HUP INT QUIT TERM
|
||||
|
||||
# 你的 GitHub 仓库 Raw 数据直链前缀
|
||||
REPO_RAW_URL="https://raw.githubusercontent.com/hotyue/IP-Sentinel/main"
|
||||
# 临时改为开发地址用于测试
|
||||
@@ -68,9 +72,9 @@ else
|
||||
|
||||
if [ "$ACTION_CHOICE" == "2" ]; then
|
||||
echo -e "\n⏳ 正在拉取卸载程序..."
|
||||
curl -sL "${REPO_RAW_URL}/master/uninstall_master.sh" -o "/tmp/uninstall_master.sh"
|
||||
chmod +x "/tmp/uninstall_master.sh"
|
||||
bash "/tmp/uninstall_master.sh"
|
||||
curl -sL "${REPO_RAW_URL}/master/uninstall_master.sh" -o "${SECURE_TMP}/uninstall_master.sh"
|
||||
chmod +x "${SECURE_TMP}/uninstall_master.sh"
|
||||
bash "${SECURE_TMP}/uninstall_master.sh"
|
||||
rm -f "/tmp/uninstall_master.sh"
|
||||
exit 0
|
||||
fi
|
||||
@@ -104,13 +108,8 @@ else
|
||||
fi
|
||||
fi
|
||||
|
||||
# ================== [v3.2.2 优化: 安装前环境纯净度清理与数据保护] ==================
|
||||
echo -e "\n⏳ 正在清理旧版 Master 守护进程..."
|
||||
# [新增] 优雅停止 Systemd 服务,防止代码替换时引发无限复活风暴
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
systemctl stop ip-sentinel-master.service >/dev/null 2>&1 || true
|
||||
fi
|
||||
pkill -9 -f "tg_master.sh" >/dev/null 2>&1 || true
|
||||
# ================== [v3.2.2 优化: 数据纯净度清理与保护] ==================
|
||||
echo -e "\n⏳ 正在验证本地环境与数据..."
|
||||
|
||||
if [ "$UPGRADE_MODE" == "true" ]; then
|
||||
if [ "$KEEP_DB" == "false" ]; then
|
||||
@@ -119,13 +118,11 @@ if [ "$UPGRADE_MODE" == "true" ]; then
|
||||
else
|
||||
echo -e "📦 历史节点数据库 (SQLite) 已绝密保留。"
|
||||
fi
|
||||
# 删除旧的核心脚本,准备拉取新的
|
||||
rm -f "${MASTER_DIR}/tg_master.sh" 2>/dev/null
|
||||
# [防砖修复] 移除过早的旧进程抹杀与脚本物理删除,防止拉取失败导致司令部变砖失联
|
||||
else
|
||||
# 焦土政策:如果不是升级模式,直接扬了整个司令部目录
|
||||
rm -rf "$MASTER_DIR" 2>/dev/null
|
||||
fi
|
||||
echo -e "\033[32m✅ 旧进程已肃清!\033[0m"
|
||||
# =======================================================================
|
||||
|
||||
# 1. 依赖检查与智能安装 (v3.6.0 兼容性与优雅性升级)
|
||||
@@ -269,13 +266,15 @@ CREATE TABLE IF NOT EXISTS nodes (
|
||||
PRIMARY KEY(chat_id, node_name)
|
||||
);
|
||||
|
||||
-- [v4.0.0 新增] 核心情报表:记录历史 IP 质量数据,用于绘制趋势图
|
||||
-- [v4.0.0 新增, v4.0.2 扩容] 核心情报表:记录历史 IP 质量数据,用于绘制趋势图
|
||||
CREATE TABLE IF NOT EXISTS ip_trend_log (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
node_name TEXT,
|
||||
check_time DATETIME DEFAULT CURRENT_TIMESTAMP,
|
||||
scam_score INTEGER,
|
||||
nf_status TEXT
|
||||
goog_status TEXT,
|
||||
nf_status TEXT,
|
||||
gpt_status TEXT
|
||||
);
|
||||
EOF
|
||||
echo "✅ 数据库创建成功: $DB_FILE"
|
||||
@@ -285,10 +284,31 @@ chmod 600 "${MASTER_DIR}/master.conf"
|
||||
chmod 600 "$DB_FILE"
|
||||
# ====================================================================
|
||||
|
||||
# 4. 拉取核心调度代码并运行
|
||||
echo -e "\n[4/4] 部署 TG 调度守护进程..."
|
||||
# [修改] 剥离了写死的网址,改用顶部的 ${REPO_RAW_URL} 变量,确保与卸载脚本的数据源同源
|
||||
curl -sL "${REPO_RAW_URL}/master/tg_master.sh" -o "${MASTER_DIR}/tg_master.sh"
|
||||
# 4. 拉取核心调度代码并执行原子化交接
|
||||
echo -e "\n[4/4] 正在拉取新版司令部核心引擎..."
|
||||
|
||||
TMP_MASTER="${SECURE_TMP}/tg_master.sh"
|
||||
curl -sL "${REPO_RAW_URL}/master/tg_master.sh" -o "$TMP_MASTER"
|
||||
|
||||
# 🛡️ 防砖终极校验
|
||||
if [ ! -s "$TMP_MASTER" ]; then
|
||||
echo -e "\033[31m❌ 致命错误:中枢核心代码拉取失败!网络阻断或 GitHub Raw 异常。\033[0m"
|
||||
echo "🛡️ 防砖机制触发:已中止覆盖,旧版司令部仍在安全运行中。"
|
||||
rm -f "$TMP_MASTER"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 🟢 [原子化交接核心]: 校验完美通过,新代码已备妥!
|
||||
# 以雷霆手段抹杀旧版调度进程,杜绝文件覆写时的并发错乱
|
||||
echo "⏳ 新引擎校验通过,正在抹杀旧版守护进程..."
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
systemctl kill --signal=SIGKILL ip-sentinel-master.service >/dev/null 2>&1 || true
|
||||
systemctl stop ip-sentinel-master.service >/dev/null 2>&1 || true
|
||||
fi
|
||||
pkill -9 -f "tg_master.sh" >/dev/null 2>&1 || true
|
||||
|
||||
# 执行物理替换
|
||||
mv "$TMP_MASTER" "${MASTER_DIR}/tg_master.sh"
|
||||
chmod +x "${MASTER_DIR}/tg_master.sh"
|
||||
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
@@ -319,16 +339,13 @@ EOF
|
||||
systemctl enable --now ip-sentinel-master.service
|
||||
systemctl restart ip-sentinel-master.service
|
||||
|
||||
# 清理可能残留的历史 Cron
|
||||
crontab -l 2>/dev/null | grep -v "tg_master.sh" > /tmp/cron_master || true
|
||||
[ -f /tmp/cron_master ] && crontab /tmp/cron_master 2>/dev/null
|
||||
rm -f /tmp/cron_master
|
||||
# 清理可能残留的历史 Cron (无落地内存流防劫持)
|
||||
crontab -l 2>/dev/null | grep -v "tg_master.sh" | crontab - >/dev/null 2>&1 || true
|
||||
else
|
||||
echo "💡 未检测到 Systemd,回退到 Cron 看门狗调度模式..."
|
||||
crontab -l 2>/dev/null | grep -v "tg_master.sh" > /tmp/cron_master || true
|
||||
echo "* * * * * pgrep -f tg_master.sh >/dev/null || nohup bash ${MASTER_DIR}/tg_master.sh >/dev/null 2>&1 &" >> /tmp/cron_master
|
||||
[ -f /tmp/cron_master ] && crontab /tmp/cron_master 2>/dev/null
|
||||
rm -f /tmp/cron_master
|
||||
crontab -l 2>/dev/null | grep -v "tg_master.sh" > "${SECURE_TMP}/cron_master" || true
|
||||
echo "* * * * * pgrep -f tg_master.sh >/dev/null || nohup bash ${MASTER_DIR}/tg_master.sh >/dev/null 2>&1 &" >> "${SECURE_TMP}/cron_master"
|
||||
[ -f "${SECURE_TMP}/cron_master" ] && crontab "${SECURE_TMP}/cron_master" 2>/dev/null
|
||||
|
||||
pgrep -f tg_master.sh >/dev/null || { nohup bash "${MASTER_DIR}/tg_master.sh" >/dev/null 2>&1 & disown 2>/dev/null; }
|
||||
fi
|
||||
|
||||
@@ -11,8 +11,7 @@ source "$CONF"
|
||||
|
||||
# [核心: 运行态版本继承与云通信地址]
|
||||
REPO_RAW_URL="https://raw.githubusercontent.com/hotyue/IP-Sentinel/main"
|
||||
# 临时改为开发地址用于测试
|
||||
# REPO_RAW_URL="https://raw.githubusercontent.com/hotyue/IP-Sentinel/v3.6.2-rc"
|
||||
|
||||
# MASTER_VERSION 已经在上方的 source "$CONF" 中被载入
|
||||
# 如果本地极度陈旧没有该变量,才给定一个基础兜底值,避免变量为空导致崩溃
|
||||
MASTER_VERSION=${MASTER_VERSION:-"3.5.0"}
|
||||
@@ -21,6 +20,26 @@ OFFSET_FILE="${MASTER_DIR}/.tg_offset"
|
||||
[[ -f $OFFSET_FILE ]] || echo "0" > $OFFSET_FILE
|
||||
|
||||
# --- 工具函数 ---
|
||||
# ================== [v4.0.3 核心: 全球全能旗帜渲染引擎] ==================
|
||||
get_flag() {
|
||||
local region=$(echo "$1" | tr 'a-z' 'A-Z')
|
||||
local base_cc="${region%%-*}" # 提取横杠前的主国家代码 (例如 US-TX 提取为 US)
|
||||
local flag="🌐"
|
||||
case "$base_cc" in
|
||||
US) flag="🇺🇸" ;; JP) flag="🇯🇵" ;; HK) flag="🇭🇰" ;; TW) flag="🇹🇼" ;; SG) flag="🇸🇬" ;;
|
||||
UK|GB) flag="🇬🇧" ;; DE) flag="🇩🇪" ;; FR) flag="🇫🇷" ;; NL) flag="🇳🇱" ;; CA) flag="🇨🇦" ;;
|
||||
AU) flag="🇦🇺" ;; KR) flag="🇰🇷" ;; IN) flag="🇮🇳" ;; BR) flag="🇧🇷" ;; RU) flag="🇷🇺" ;;
|
||||
CH) flag="🇨🇭" ;; SE) flag="🇸🇪" ;; NO) flag="🇳🇴" ;; DK) flag="🇩🇰" ;; FI) flag="🇫🇮" ;;
|
||||
IT) flag="🇮🇹" ;; ES) flag="🇪🇸" ;; PT) flag="🇵🇹" ;; IE) flag="🇮🇪" ;; PL) flag="🇵🇱" ;;
|
||||
AT) flag="🇦🇹" ;; BE) flag="🇧🇪" ;; TR) flag="🇹🇷" ;; ZA) flag="🇿🇦" ;; AE) flag="🇦🇪" ;;
|
||||
MY) flag="🇲🇾" ;; ID) flag="🇮🇩" ;; VN) flag="🇻🇳" ;; TH) flag="🇹🇭" ;; PH) flag="🇵🇭" ;;
|
||||
NZ) flag="🇳🇿" ;; AR) flag="🇦🇷" ;; CL) flag="🇨🇱" ;; MX) flag="🇲🇽" ;; IL) flag="🇮🇱" ;;
|
||||
SA) flag="🇸🇦" ;; EG) flag="🇪🇬" ;; NG) flag="🇳🇬" ;; KE) flag="🇰🇪" ;; RO) flag="🇷🇴" ;;
|
||||
BG) flag="🇧🇬" ;; CZ) flag="🇨🇿" ;; HU) flag="🇭🇺" ;; GR) flag="🇬🇷" ;; UA) flag="🇺🇦" ;;
|
||||
esac
|
||||
echo "$flag"
|
||||
}
|
||||
|
||||
send_ui() {
|
||||
curl -s --connect-timeout 5 -m 10 -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" \
|
||||
-H "Content-Type: application/json" \
|
||||
@@ -83,7 +102,7 @@ db_exec "ALTER TABLE nodes ADD COLUMN enable_trust TEXT DEFAULT 'true';" 2>/dev/
|
||||
db_exec "ALTER TABLE nodes ADD COLUMN enable_ota TEXT DEFAULT 'false';" 2>/dev/null
|
||||
# ========================================================================
|
||||
|
||||
# ================== [v4.0.0 核心: 增加 IP 质量趋势追踪表] ==================
|
||||
# ================== [v4.0.0/v4.0.2 核心: 增加 IP 质量趋势追踪表] ==================
|
||||
db_exec "CREATE TABLE IF NOT EXISTS ip_trend_log (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
node_name TEXT,
|
||||
@@ -91,6 +110,9 @@ db_exec "CREATE TABLE IF NOT EXISTS ip_trend_log (
|
||||
scam_score INTEGER,
|
||||
nf_status TEXT
|
||||
);" 2>/dev/null
|
||||
# [v4.0.2 热更新] 动态扩容 谷歌 与 ChatGPT 状态追踪字段
|
||||
db_exec "ALTER TABLE ip_trend_log ADD COLUMN goog_status TEXT DEFAULT 'Unknown';" 2>/dev/null
|
||||
db_exec "ALTER TABLE ip_trend_log ADD COLUMN gpt_status TEXT DEFAULT 'Unknown';" 2>/dev/null
|
||||
# ========================================================================
|
||||
|
||||
# --- 核心轮询循环 ---
|
||||
@@ -108,18 +130,51 @@ while true; do
|
||||
CHAT_ID=$(echo "$UPDATE" | jq -r '.message.chat.id // .callback_query.message.chat.id')
|
||||
TEXT=$(echo "$UPDATE" | jq -r '.message.text // .callback_query.data')
|
||||
|
||||
# ================== [v4.0.0 新增: 深海声呐暗号拦截与落盘] ==================
|
||||
if [[ "$TEXT" == *"[SYSTEM_REPORT]|QUALITY|"* ]]; then
|
||||
# 截获系统隐写报告,提取分数并存库 (格式: [SYSTEM_REPORT]|QUALITY|NODE_NAME|SCORE|NF_STAT)
|
||||
REPORT_DATA=$(echo "$TEXT" | grep -o "\[SYSTEM_REPORT\].*")
|
||||
NODE_ID=$(echo "$REPORT_DATA" | cut -d'|' -f3 | tr -cd 'a-zA-Z0-9_.-')
|
||||
SCORE=$(echo "$REPORT_DATA" | cut -d'|' -f4 | tr -cd '0-9')
|
||||
NF_ST=$(echo "$REPORT_DATA" | cut -d'|' -f5 | tr -cd 'a-zA-Z0-9_-')
|
||||
# ================== [基础消息解析提取提前] ==================
|
||||
# [致命 Bug 修复] 必须在 svq 入库判断前提取这俩变量,否则入库后无法重绘 UI
|
||||
CB_ID=$(echo "$UPDATE" | jq -r '.callback_query.id // empty')
|
||||
MSG_ID=$(echo "$UPDATE" | jq -r '.callback_query.message.message_id // empty')
|
||||
|
||||
# ================== [v4.0.2 核心: 态势感知按钮一键入库] ==================
|
||||
if [[ "$TEXT" == "svq|"* ]]; then
|
||||
# 格式: svq|NODE_NAME|SCORE|GOOG|NF|GPT
|
||||
IFS='|' read -r MAGIC RAW_NODE_ID RAW_SCORE RAW_GOOG_ST RAW_NF_ST RAW_GPT_ST <<< "$TEXT"
|
||||
CHAT_ID=$(echo "$CHAT_ID" | tr -cd '0-9-')
|
||||
|
||||
# 🛡️ 终极防御:彻底清洗,封死一切 SQL 注入通道
|
||||
NODE_ID=$(echo "$RAW_NODE_ID" | tr -cd 'a-zA-Z0-9_.-')
|
||||
SCORE=$(echo "$RAW_SCORE" | tr -cd '0-9')
|
||||
GOOG_ST=$(echo "$RAW_GOOG_ST" | tr -d '"'\''\`\$\|&;<>\n\r')
|
||||
NF_ST=$(echo "$RAW_NF_ST" | tr -d '"'\''\`\$\|&;<>\n\r')
|
||||
GPT_ST=$(echo "$RAW_GPT_ST" | tr -d '"'\''\`\$\|&;<>\n\r')
|
||||
|
||||
if [ -n "$NODE_ID" ] && [ -n "$SCORE" ]; then
|
||||
db_exec "INSERT INTO ip_trend_log (node_name, scam_score, nf_status) VALUES ('$NODE_ID', '$SCORE', '$NF_ST');"
|
||||
# 1. 写入 SQLite
|
||||
db_exec "INSERT INTO ip_trend_log (node_name, scam_score, goog_status, nf_status, gpt_status) VALUES ('$NODE_ID', '$SCORE', '$GOOG_ST', '$NF_ST', '$GPT_ST');"
|
||||
|
||||
# [体验优化] 弹出顶部 Toast 气泡,提示入库成功
|
||||
if [ -n "$CB_ID" ]; then
|
||||
curl -s --connect-timeout 5 -m 10 -X POST "https://api.telegram.org/bot${TG_TOKEN}/answerCallbackQuery" \
|
||||
-d "callback_query_id=${CB_ID}" \
|
||||
-d "text=✅ 报告已成功录入趋势库!" \
|
||||
-d "show_alert=false" > /dev/null
|
||||
fi
|
||||
|
||||
# 2. 无损修改原消息:移除入库按钮,展示绿勾状态 (防连点机制生效)
|
||||
if [ -n "$MSG_ID" ]; then
|
||||
curl -s --connect-timeout 5 -m 10 -X POST "https://api.telegram.org/bot${TG_TOKEN}/editMessageReplyMarkup" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"chat_id\":\"${CHAT_ID}\",\"message_id\":\"${MSG_ID}\",\"reply_markup\":{\"inline_keyboard\":[[{\"text\":\"✅ 此报告已存档\",\"callback_data\":\"ignore\"}]]}}" > /dev/null
|
||||
fi
|
||||
else
|
||||
# [异常兜底] 弹出红色警告弹窗
|
||||
if [ -n "$CB_ID" ]; then
|
||||
curl -s --connect-timeout 5 -m 10 -X POST "https://api.telegram.org/bot${TG_TOKEN}/answerCallbackQuery" \
|
||||
-d "callback_query_id=${CB_ID}" \
|
||||
-d "text=❌ 数据解析失败,入库中止。" \
|
||||
-d "show_alert=true" > /dev/null
|
||||
fi
|
||||
fi
|
||||
# 无需回复用户,因为 Agent 原战报已发在群中
|
||||
continue
|
||||
fi
|
||||
# ======================================================================
|
||||
@@ -143,10 +198,7 @@ while true; do
|
||||
fi
|
||||
|
||||
# ================== [v3.0.1 新增: 消除转圈圈与获取消息ID] ==================
|
||||
CB_ID=$(echo "$UPDATE" | jq -r '.callback_query.id // empty')
|
||||
MSG_ID=$(echo "$UPDATE" | jq -r '.callback_query.message.message_id // empty')
|
||||
|
||||
# 告诉 TG 官方“指令已收到”,立刻消除按钮上的加载圈圈
|
||||
# 告诉 TG 官方“指令已收到”,立刻消除按钮上的加载圈圈 (对其他常规按钮生效)
|
||||
if [ -n "$CB_ID" ]; then
|
||||
curl -s --connect-timeout 5 -m 10 -X POST "https://api.telegram.org/bot${TG_TOKEN}/answerCallbackQuery" -d "callback_query_id=${CB_ID}" > /dev/null
|
||||
fi
|
||||
@@ -206,13 +258,7 @@ while true; do
|
||||
BTNS="["
|
||||
while IFS='|' read -r REGION_NAME NODE_COUNT; do
|
||||
[ -z "$REGION_NAME" ] && REGION_NAME="UNKNOWN"
|
||||
FLAG="🌐"
|
||||
case "$REGION_NAME" in
|
||||
"US") FLAG="🇺🇸" ;; "JP") FLAG="🇯🇵" ;; "HK") FLAG="🇭🇰" ;;
|
||||
"SG") FLAG="🇸🇬" ;; "UK"|"GB") FLAG="🇬🇧" ;; "DE") FLAG="🇩🇪" ;; "FR") FLAG="🇫🇷" ;;
|
||||
"CA") FLAG="🇨🇦" ;; "AU") FLAG="🇦🇺" ;; "KR") FLAG="🇰🇷" ;; "NL") FLAG="🇳🇱" ;;
|
||||
"BR") FLAG="🇧🇷" ;; "IN") FLAG="🇮🇳" ;; "TW") FLAG="🇹🇼" ;;
|
||||
esac
|
||||
FLAG=$(get_flag "$REGION_NAME")
|
||||
BTNS="$BTNS[{\"text\":\"$FLAG $REGION_NAME ($NODE_COUNT 台)\",\"callback_data\":\"region:$REGION_NAME\"}],"
|
||||
done <<< "$REGION_DATA"
|
||||
BTNS="${BTNS%,}]"
|
||||
@@ -269,8 +315,7 @@ while true; do
|
||||
send_msg "$CHAT_ID" "📢 **司令部指令下达:正在唤醒全舰队执行 OTA 升级...**%0A*(节点升级成功后会主动发回新的入库确认,请注意查收)*"
|
||||
echo "$NODE_DATA" | while IFS='|' read -r NNAME AIP APORT; do
|
||||
TARGET_URL=$(generate_signed_url "$AIP" "$APORT" "/trigger_ota")
|
||||
# [灾难救援通道] 仅针对 OTA 允许一次明文回退,抢救缺失证书的老节点
|
||||
{ curl -k -s -m 5 "$TARGET_URL" || curl -s -m 5 "${TARGET_URL/https:\/\//http:\/\/}"; } > /dev/null &
|
||||
curl -k -s -m 5 "$TARGET_URL" > /dev/null &
|
||||
sleep 0.3 # 严格流量削峰
|
||||
done
|
||||
fi
|
||||
@@ -360,7 +405,7 @@ while true; do
|
||||
"/quality"|"/quality@"*)
|
||||
TARGET_NODE=$(echo "$TEXT" | awk '{print $2}')
|
||||
if [ -z "$TARGET_NODE" ]; then
|
||||
send_msg "$CHAT_ID" "⚠️ 请指定目标节点。例如: \`/quality HK-1\`\n或通过雷达面板进行选择操作。"
|
||||
send_msg "$CHAT_ID" "⚠️ 请指定目标节点。例如: \`/quality HK-1\`%0A或通过雷达面板进行选择操作。"
|
||||
else
|
||||
TARGET_NODE=$(echo "$TARGET_NODE" | tr -cd 'a-zA-Z0-9_.-')
|
||||
CHAT_ID=$(echo "$CHAT_ID" | tr -cd '0-9-')
|
||||
@@ -376,10 +421,6 @@ while true; do
|
||||
# 动态 HMAC 签名防篡改
|
||||
TARGET_URL=$(generate_signed_url "$AGENT_IP" "$AGENT_PORT" "/trigger_quality")
|
||||
RESPONSE=$(curl -k -s -m 5 "$TARGET_URL" || echo "FAILED")
|
||||
if [ "$RESPONSE" == "FAILED" ] || [ -z "$RESPONSE" ]; then
|
||||
TARGET_URL_HTTP="${TARGET_URL/https:\/\//http:\/\/}"
|
||||
RESPONSE=$(curl -s -m 5 "$TARGET_URL_HTTP" || echo "FAILED")
|
||||
fi
|
||||
|
||||
# 结果判定
|
||||
if [ "$RESPONSE" == "FAILED" ]; then
|
||||
@@ -398,12 +439,12 @@ while true; do
|
||||
"/trend"|"/trend@"*)
|
||||
TARGET_NODE=$(echo "$TEXT" | awk '{print $2}')
|
||||
if [ -z "$TARGET_NODE" ]; then
|
||||
send_msg "$CHAT_ID" "⚠️ 请指定目标节点。例如: \`/trend HK-1\`\n或通过雷达面板进行选择操作。"
|
||||
send_msg "$CHAT_ID" "⚠️ 请指定目标节点。例如: \`/trend HK-1\`%0A或通过雷达面板进行选择操作。"
|
||||
else
|
||||
TARGET_NODE=$(echo "$TARGET_NODE" | tr -cd 'a-zA-Z0-9_.-')
|
||||
CHAT_ID=$(echo "$CHAT_ID" | tr -cd '0-9-')
|
||||
|
||||
TREND_DATA=$(db_exec "SELECT datetime(check_time, 'localtime'), scam_score, nf_status FROM ip_trend_log WHERE node_name='$TARGET_NODE' ORDER BY check_time DESC LIMIT 10;")
|
||||
TREND_DATA=$(db_exec "SELECT datetime(check_time, 'localtime'), scam_score, goog_status, nf_status, gpt_status FROM ip_trend_log WHERE node_name='$TARGET_NODE' ORDER BY check_time DESC LIMIT 15;")
|
||||
|
||||
if [ -z "$TREND_DATA" ]; then
|
||||
send_msg "$CHAT_ID" "⚠️ 节点 \`$TARGET_NODE\` 暂无历史体检档案。请先执行 /quality 投放声呐进行探测。"
|
||||
@@ -411,22 +452,30 @@ while true; do
|
||||
TARGET_ALIAS=$(db_exec "SELECT IFNULL(node_alias, node_name) FROM nodes WHERE chat_id='$CHAT_ID' AND node_name='$TARGET_NODE' LIMIT 1;")
|
||||
[ -z "$TARGET_ALIAS" ] && TARGET_ALIAS="$TARGET_NODE"
|
||||
|
||||
TEXT_RES="📈 *[${TARGET_ALIAS}] IP 污染趋势图谱*\n\n"
|
||||
TEXT_RES+="时间 (本地) | 风险分 | NF解锁\n"
|
||||
TEXT_RES+="------------------------------------\n"
|
||||
TEXT_RES="📈 *[${TARGET_ALIAS}] 历史态势感知 (近15次)*\n\n"
|
||||
TEXT_RES+="时间(本地) | 风险 | 谷歌 | NF | GPT\n"
|
||||
TEXT_RES+="-----------------------------------------\n"
|
||||
|
||||
while IFS='|' read -r c_time score nf; do
|
||||
while IFS='|' read -r c_time score goog nf gpt; do
|
||||
[ -z "$score" ] && score="0"
|
||||
[ -z "$nf" ] && nf="Unknown"
|
||||
[ -z "$goog" ] && goog="未知"
|
||||
[ -z "$nf" ] && nf="未知"
|
||||
[ -z "$gpt" ] && gpt="未知"
|
||||
|
||||
short_time=$(echo "$c_time" | cut -c 6-16)
|
||||
|
||||
if [ "$score" -le 20 ]; then SCORE_EMJ="🟢"
|
||||
elif [ "$score" -le 60 ]; then SCORE_EMJ="🟡"
|
||||
else SCORE_EMJ="🔴"
|
||||
fi
|
||||
TEXT_RES+="\`${c_time}\` | ${SCORE_EMJ} \`${score}\` | \`${nf}\`\n"
|
||||
|
||||
TEXT_RES+="\`${short_time}\` | ${SCORE_EMJ}\`${score}\` | \`${goog}\` | \`${nf}\` | \`${gpt}\`\n"
|
||||
done <<< "$TREND_DATA"
|
||||
TEXT_RES+="\n_💡 提示:高危风险分 (🔴 >60) 极易触发 Google 验证码及 Cloudflare 5秒盾拦截。_"
|
||||
TEXT_RES+="\n_💡 提示:🔴风险分 >60 极易触发网页验证码拦截;谷歌显示 CN 即为高危送中。_"
|
||||
|
||||
send_msg "$CHAT_ID" "$TEXT_RES"
|
||||
# [v4.0.3 体验升级] 注入交互式控制台按钮
|
||||
BTNS="[[{\"text\":\"⚙️ 调出该节点控制台\",\"callback_data\":\"manage:$TARGET_NODE\"}]]"
|
||||
send_ui "$CHAT_ID" "$TEXT_RES" "$BTNS"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
@@ -441,14 +490,8 @@ while true; do
|
||||
BTNS="["
|
||||
while IFS='|' read -r REGION_NAME NODE_COUNT; do
|
||||
[ -z "$REGION_NAME" ] && REGION_NAME="UNKNOWN"
|
||||
FLAG="🌐"
|
||||
case "$REGION_NAME" in
|
||||
"US") FLAG="🇺🇸" ;; "JP") FLAG="🇯🇵" ;; "HK") FLAG="🇭🇰" ;;
|
||||
"SG") FLAG="🇸🇬" ;; "UK"|"GB") FLAG="🇬🇧" ;; "DE") FLAG="🇩🇪" ;; "FR") FLAG="🇫🇷" ;;
|
||||
"CA") FLAG="🇨🇦" ;; "AU") FLAG="🇦🇺" ;; "KR") FLAG="🇰🇷" ;; "NL") FLAG="🇳🇱" ;;
|
||||
"BR") FLAG="🇧🇷" ;; "IN") FLAG="🇮🇳" ;; "TW") FLAG="🇹🇼" ;;
|
||||
esac
|
||||
BTNS="$BTNS[{\"text\":\"$FLAG $REGION_NAME ($NODE_COUNT 台)\",\"callback_data\":\"region:$REGION_NAME\"}],"
|
||||
FLAG=$(get_flag "$REGION_NAME")
|
||||
BTNS="$BTNS[{\"text\":\"$FLAG $REGION_NAME ($NODE_COUNT 台)\",\"callback_data\":\"region:$REGION_NAME\"}],"
|
||||
done <<< "$REGION_DATA"
|
||||
# L1 追加返回中枢逃生舱
|
||||
BTNS="$BTNS[{\"text\":\"🏠 回到司令部\",\"callback_data\":\"/start\"}]]"
|
||||
@@ -599,8 +642,19 @@ while true; do
|
||||
TARGET_NODE=$(echo "${TEXT#*:}" | tr -cd 'a-zA-Z0-9_.-')
|
||||
CHAT_ID=$(echo "$CHAT_ID" | tr -cd '0-9-')
|
||||
|
||||
db_exec "DELETE FROM nodes WHERE chat_id='$CHAT_ID' AND node_name='$TARGET_NODE';"
|
||||
send_msg "$CHAT_ID" "🗑️ 节点 \`$TARGET_NODE\` 的档案已从司令部彻底销毁!"
|
||||
# 🛡️ [终极防线: 防越权横向打击] 先校验该节点是否真实属于当前操作者!
|
||||
# 因为趋势库中没有 Chat_ID 标识,不校验直接删会给黑客伪造回调清空他人数据的机会!
|
||||
VALID_OWNER=$(db_exec "SELECT 1 FROM nodes WHERE chat_id='$CHAT_ID' AND node_name='$TARGET_NODE' LIMIT 1;")
|
||||
|
||||
if [ "$VALID_OWNER" == "1" ]; then
|
||||
# 验权通过,执行原子化级联销毁:同时抹除主配置与历史污染趋势
|
||||
db_exec "DELETE FROM nodes WHERE chat_id='$CHAT_ID' AND node_name='$TARGET_NODE';"
|
||||
db_exec "DELETE FROM ip_trend_log WHERE node_name='$TARGET_NODE';"
|
||||
send_msg "$CHAT_ID" "🗑️ 节点 \`$TARGET_NODE\` 的档案及历史污染趋势已从司令部彻底销毁!"
|
||||
else
|
||||
send_msg "$CHAT_ID" "⛔ **安全拦截**:销毁失败。目标节点不存在或您无权越权操作!"
|
||||
continue
|
||||
fi
|
||||
|
||||
# 剔除后直接返回上级一级雷达菜单
|
||||
REGION_DATA=$(db_exec "SELECT region, COUNT(*) FROM nodes WHERE chat_id='$CHAT_ID' GROUP BY region;")
|
||||
@@ -610,13 +664,7 @@ while true; do
|
||||
BTNS="["
|
||||
while IFS='|' read -r REGION_NAME NODE_COUNT; do
|
||||
[ -z "$REGION_NAME" ] && REGION_NAME="UNKNOWN"
|
||||
FLAG="🌐"
|
||||
case "$REGION_NAME" in
|
||||
"US") FLAG="🇺🇸" ;; "JP") FLAG="🇯🇵" ;; "HK") FLAG="🇭🇰" ;;
|
||||
"SG") FLAG="🇸🇬" ;; "UK"|"GB") FLAG="🇬🇧" ;; "DE") FLAG="🇩🇪" ;; "FR") FLAG="🇫🇷" ;;
|
||||
"CA") FLAG="🇨🇦" ;; "AU") FLAG="🇦🇺" ;; "KR") FLAG="🇰🇷" ;; "NL") FLAG="🇳🇱" ;;
|
||||
"BR") FLAG="🇧🇷" ;; "IN") FLAG="🇮🇳" ;; "TW") FLAG="🇹🇼" ;;
|
||||
esac
|
||||
FLAG=$(get_flag "$REGION_NAME")
|
||||
BTNS="$BTNS[{\"text\":\"$FLAG $REGION_NAME ($NODE_COUNT 台)\",\"callback_data\":\"region:$REGION_NAME\"}],"
|
||||
done <<< "$REGION_DATA"
|
||||
BTNS="${BTNS%,}]"
|
||||
@@ -693,16 +741,8 @@ while true; do
|
||||
TARGET_URL=$(generate_signed_url "$AGENT_IP" "$AGENT_PORT" "/trigger_ota")
|
||||
RESPONSE=$(curl -k -s -m 5 "$TARGET_URL" || echo "FAILED")
|
||||
|
||||
# [灾难救援通道] 仅针对 OTA 开放一次性明文降级,用于抢救缺失 openssl 证书的老节点
|
||||
if [ "$RESPONSE" == "FAILED" ]; then
|
||||
TARGET_URL_HTTP="${TARGET_URL/https:\/\//http:\/\/}"
|
||||
RESPONSE=$(curl -s -m 5 "$TARGET_URL_HTTP" || echo "FAILED")
|
||||
|
||||
if [[ "$RESPONSE" == *"Action Accepted"* ]]; then
|
||||
TEXT_RES="⚠️ **明文救援成功**:该节点因缺失证书处于 HTTP 裸奔状态!已强行下发 OTA 抢救指令,请等待其重构 TLS 装甲。"
|
||||
else
|
||||
TEXT_RES="❌ OTA 指令下发彻底失败!节点已失联或网络阻断。"
|
||||
fi
|
||||
TEXT_RES="❌ OTA 指令下发彻底失败!链路异常或严禁使用 HTTP 降级通讯。"
|
||||
elif [[ "$RESPONSE" == *"403"* ]]; then
|
||||
TEXT_RES="⚠️ **节点拒绝执行**:该节点本地未开启 OTA 权限或运行在官方网关下!"
|
||||
else
|
||||
@@ -774,11 +814,11 @@ while true; do
|
||||
|
||||
|
||||
trend:*)
|
||||
# [v4.0.0 新增: 生成 IP 质量趋势图]
|
||||
# [v4.0.2 优化: 扩容 15 次追踪并引入 GOOG/GPT 状态]
|
||||
TARGET_NODE=$(echo "${TEXT#*:}" | tr -cd 'a-zA-Z0-9_.-')
|
||||
CHAT_ID=$(echo "$CHAT_ID" | tr -cd '0-9-')
|
||||
|
||||
TREND_DATA=$(db_exec "SELECT datetime(check_time, 'localtime'), scam_score, nf_status FROM ip_trend_log WHERE node_name='$TARGET_NODE' ORDER BY check_time DESC LIMIT 10;")
|
||||
TREND_DATA=$(db_exec "SELECT datetime(check_time, 'localtime'), scam_score, goog_status, nf_status, gpt_status FROM ip_trend_log WHERE node_name='$TARGET_NODE' ORDER BY check_time DESC LIMIT 15;")
|
||||
|
||||
if [ -z "$TREND_DATA" ]; then
|
||||
TEXT_RES="⚠️ 节点 \`$TARGET_NODE\` 暂无历史体检档案。请先执行 [🔍 投放深海声呐] 进行探测。"
|
||||
@@ -786,28 +826,37 @@ while true; do
|
||||
TARGET_ALIAS=$(db_exec "SELECT IFNULL(node_alias, node_name) FROM nodes WHERE chat_id='$CHAT_ID' AND node_name='$TARGET_NODE' LIMIT 1;")
|
||||
[ -z "$TARGET_ALIAS" ] && TARGET_ALIAS="$TARGET_NODE"
|
||||
|
||||
TEXT_RES="📈 *[${TARGET_ALIAS}] IP 污染趋势图谱*\n\n"
|
||||
TEXT_RES+="时间 (本地) | 风险分 | NF解锁\n"
|
||||
TEXT_RES+="------------------------------------\n"
|
||||
TEXT_RES="📈 *[${TARGET_ALIAS}] 历史态势感知 (近15次)*\n\n"
|
||||
TEXT_RES+="时间(本地) | 风险 | 谷歌 | NF | GPT\n"
|
||||
TEXT_RES+="-----------------------------------------\n"
|
||||
|
||||
while IFS='|' read -r c_time score nf; do
|
||||
# 清洗数据防空
|
||||
while IFS='|' read -r c_time score goog nf gpt; do
|
||||
[ -z "$score" ] && score="0"
|
||||
[ -z "$nf" ] && nf="Unknown"
|
||||
[ -z "$goog" ] && goog="未知"
|
||||
[ -z "$nf" ] && nf="未知"
|
||||
[ -z "$gpt" ] && gpt="未知"
|
||||
|
||||
# 时间做极简切割 (截取 04-24 20:52) 节省横向空间
|
||||
short_time=$(echo "$c_time" | cut -c 6-16)
|
||||
|
||||
if [ "$score" -le 20 ]; then SCORE_EMJ="🟢"
|
||||
elif [ "$score" -le 60 ]; then SCORE_EMJ="🟡"
|
||||
else SCORE_EMJ="🔴"
|
||||
fi
|
||||
TEXT_RES+="\`${c_time}\` | ${SCORE_EMJ} \`${score}\` | \`${nf}\`\n"
|
||||
|
||||
# 拼接紧凑排版
|
||||
TEXT_RES+="\`${short_time}\` | ${SCORE_EMJ}\`${score}\` | \`${goog}\` | \`${nf}\` | \`${gpt}\`\n"
|
||||
done <<< "$TREND_DATA"
|
||||
TEXT_RES+="\n_💡 提示:高危风险分 (🔴 >60) 极易触发 Google 验证码及 Cloudflare 5秒盾拦截。_"
|
||||
TEXT_RES+="\n_💡 提示:🔴风险分 >60 极易触发网页验证码拦截;谷歌显示 CN 即为高危送中。_"
|
||||
fi
|
||||
|
||||
# [v4.0.3 体验升级] 注入交互式控制台按钮,并调用原生 UI 重绘函数
|
||||
BTNS="[[{\"text\":\"⚙️ 调出该节点控制台\",\"callback_data\":\"manage:$TARGET_NODE\"}]]"
|
||||
|
||||
if [ -n "$MSG_ID" ]; then
|
||||
edit_msg "$CHAT_ID" "$MSG_ID" "$TEXT_RES"
|
||||
edit_ui "$CHAT_ID" "$MSG_ID" "$TEXT_RES" "$BTNS"
|
||||
else
|
||||
send_msg "$CHAT_ID" "$TEXT_RES"
|
||||
send_ui "$CHAT_ID" "$TEXT_RES" "$BTNS"
|
||||
fi
|
||||
;;
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@ fi
|
||||
echo "[1/4] 正在停止并删除 Systemd 服务..."
|
||||
if command -v systemctl >/dev/null 2>&1; then
|
||||
echo "💡 检测到 Systemd 环境,正在抹除 Systemd 服务单元..."
|
||||
# [防死锁修复] 先发送 SIGKILL 瞬间抹杀,防止卡死
|
||||
systemctl kill --signal=SIGKILL ip-sentinel-master.service >/dev/null 2>&1 || true
|
||||
systemctl disable --now ip-sentinel-master.service >/dev/null 2>&1
|
||||
rm -f /etc/systemd/system/ip-sentinel-master.service
|
||||
systemctl daemon-reload
|
||||
@@ -52,9 +54,8 @@ pkill -9 -f "tg_master.sh" >/dev/null 2>&1 || true
|
||||
|
||||
# 3. 清除看门狗定时任务 (Cron)
|
||||
echo "[3/4] 正在清理系统定时任务 (Cron)..."
|
||||
crontab -l 2>/dev/null | grep -v "tg_master.sh" > /tmp/cron_backup
|
||||
crontab /tmp/cron_backup
|
||||
rm -f /tmp/cron_backup
|
||||
# [终极防御] 内存管道流过滤,绝不写硬盘
|
||||
crontab -l 2>/dev/null | grep -v "tg_master.sh" | crontab - >/dev/null 2>&1 || true
|
||||
|
||||
# 4. 删除所有文件、配置与数据库
|
||||
echo "[4/4] 正在抹除核心程序、配置文件与 SQLite 数据库..."
|
||||
|
||||
@@ -30,7 +30,8 @@ RSS_FEEDS = {
|
||||
"SG": ["https://www.channelnewsasia.com/api/v1/rss-outbound-feed?_format=xml"],
|
||||
"NL": ["https://feeds.nos.nl/nosnieuwsalgemeen"],
|
||||
"VN": ["https://vnexpress.net/rss/tin-moi-nhat.rss"],
|
||||
"MY": ["https://news.google.com/rss?hl=en-MY&gl=MY&ceid=MY:en"]
|
||||
"MY": ["https://news.google.com/rss?hl=en-MY&gl=MY&ceid=MY:en"],
|
||||
"NG": ["https://punchng.com/feed/", "https://guardian.ng/feed/"]
|
||||
}
|
||||
|
||||
def fetch_rss_links(region_code, max_items=15):
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
MASTER_VERSION=4.0.1
|
||||
AGENT_VERSION=4.0.1
|
||||
MASTER_VERSION=4.0.6
|
||||
AGENT_VERSION=4.0.6
|
||||
|
||||
Reference in New Issue
Block a user