【解决方案】Clash Verge导致Adobe软件盗版弹窗

2025.04.11

手搓了一个图形化开箱即用的exe

exe下载
https://github.com/benja956/disadober/releases/download/0.0.2/disadober.v0.0.2.exe

repo地址



2025.04.10

利用脚本修改Roaming\io.github.clash-verge-rev.clash-verge-rev\profiles\Script.js
屏蔽的url基于GitHub · Where software is built

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import os
import platform
import shutil
import requests
from pathlib import Path
from datetime import datetime

def get_clash_verge_directory():
    """获取Clash Verge配置文件目录"""
    system = platform.system()
    home = Path.home()
    
    if system == "Windows":
        return home / "AppData" / "Roaming" / "io.github.clash-verge-rev.clash-verge-rev"
    elif system == "Darwin":  # macOS
        return home / "Library" / "Application Support" / "io.github.clash-verge-rev"
    elif system == "Linux":
        return home / ".config" / "clash-verge"
    else:
        raise OSError(f"不支持的操作系统: {system}")

def find_global_script():
    """查找Clash Verge的全局脚本"""
    config_dir = get_clash_verge_directory()
    profiles_dir = config_dir / "profiles"
    
    if not profiles_dir.exists():
        print(f"配置目录不存在: {profiles_dir}")
        return None
    
    script_files = []
    
    # 查找名为 "script.js" 的全局脚本文件
    for file in profiles_dir.glob("*.js"):
        if file.name == "Script.js":
            script_files.append(file)
    
    # 如果没有找到 script.js,则查找其他可能的脚本文件
    if not script_files:
        for file in profiles_dir.glob("*.js"):
            script_files.append(file)
    
    if not script_files:
        print("未找到全局脚本文件")
        return None
    
    if len(script_files) > 1:
        print(f"找到多个脚本文件: {', '.join(str(f) for f in script_files)}")
        print(f"默认选择第一个: {script_files[0]}")
    
    return script_files[0]

def backup_file(file_path):
    """备份文件"""
    if not file_path.exists():
        print(f"文件不存在: {file_path}")
        return False
    
    timestamp = datetime.now().strftime("%Y%m%d%H%M%S")
    backup_path = file_path.with_suffix(f".bak.{timestamp}")
    shutil.copy2(file_path, backup_path)
    print(f"已备份文件到: {backup_path}")
    return True

def download_adobe_block_list():
    """下载Adobe屏蔽名单"""
    url = "https://raw.githubusercontent.com/ignaciocastro/a-dove-is-dumb/main/127.txt"
    try:
        response = requests.get(url)
        if response.status_code == 200:
            domains = []
            for line in response.text.splitlines():
                line = line.strip()
                if line and line.startswith("127.0.0.1 "):
                    domain = line.split(" ")[1]
                    if "adobe" in domain.lower():
                        domains.append(domain)
            return domains
        else:
            print(f"下载Adobe屏蔽名单失败,HTTP状态码: {response.status_code}")
            return None
    except Exception as e:
        print(f"下载Adobe屏蔽名单时出错: {e}")
        return None

def create_adobe_block_script(domains):
    """创建Adobe屏蔽脚本"""
    # 安全的脚本模板
    script_template = """// Adobe屏蔽规则 - 由 clash_verge_adobe_block.py 生成
function main(config) {
  // 确保配置对象存在
  if (!config) {
    config = {};
  }
  
  // 确保rules数组存在
  if (!config.rules) {
    config.rules = [];
  }
  
  // Adobe屏蔽规则 - 允许photo-api
  const adobe_rules = [
    "DOMAIN-SUFFIX,photo-api.adobe.io,DIRECT"
  ];
  
  // Adobe屏蔽规则 - 固定规则
  adobe_rules.push("DOMAIN-SUFFIX,*.adobe.io,REJECT");
  adobe_rules.push("DOMAIN-SUFFIX,adobestats.io,REJECT");
  
  // Adobe屏蔽规则 - 从屏蔽列表生成
%s
  
  // 将规则添加到配置的开头
  config.rules = adobe_rules.concat(config.rules);
  
  return config;
}
"""
    
    # 生成域名规则代码
    domain_rules = []
    for domain in domains:
        if "adobe" in domain.lower() and "adobe.io" not in domain:
            domain_rules.append(f'  adobe_rules.push("DOMAIN-SUFFIX,{domain},REJECT");')
    
    # 插入域名规则
    domain_rules_str = "\n".join(domain_rules)
    return script_template % domain_rules_str

def modify_clash_verge_script():
    """修改Clash Verge脚本添加Adobe屏蔽规则"""
    # 查找脚本文件
    script_path = find_global_script()
    if not script_path:
        print("无法找到全局脚本,退出")
        return
    
    print(f"找到全局脚本: {script_path}")
    
    # 下载Adobe屏蔽列表
    print("正在下载Adobe屏蔽名单...")
    domains = download_adobe_block_list()
    if not domains:
        print("获取Adobe屏蔽名单失败,使用基本规则")
        domains = []
    else:
        print(f"成功获取到 {len(domains)} 个Adobe相关域名")
    
    # 创建安全的脚本
    new_script = create_adobe_block_script(domains)
    
    # 备份原文件
    if not backup_file(script_path):
        return
    
    # 写入新脚本
    with open(script_path, 'w', encoding='utf-8') as f:
        f.write(new_script)
    
    print(f"已成功修改脚本: {script_path}")
    print("Adobe屏蔽规则已应用。请重启Clash Verge以生效。")

if __name__ == "__main__":
    try:
        print("Clash Verge Adobe屏蔽工具")
        print("-" * 50)
        modify_clash_verge_script()
    except Exception as e:
        print(f"发生错误: {e}") 
26 Likes

之前我也是写规则,域名越写越多,后来嫌烦了,直接把adobe所有exe进程写禁止规则一了百了反正也不用他的联网服务

厉害了了,大佬收下我的膝盖

主要是家里两台电脑,公司一台还有一个笔记本,设置来设置去太麻烦了,加上上次有个帖子讨论度很广,很多人都有这个问题。
所以搞了个一键解决的 :face_with_spiral_eyes:

为啥adobe的网络会走clash verge,佬是开的全局或者Tun模式吗,只有这样规则才能生效吧

当Clash Verge开启“系统代理”后,Adobe的所有连接都会通过Clash Verge处理,导致Windows系统防火墙对Adobe系列软件的禁止联网功能失效。

1 Like

其实拦截“.adobe.io .adobestats.io”这两个就可以了

目前来讲是的,但是程序挂钩在线更新的url,以防出现新的域名

太强了啊!感谢大佬分享!

大佬牛逼 收藏備用

是的,开了后防火墙规则就失效,佬友知道有啥方法使clash verge开启后依然遵守防火墙规则吗

就是一直不知道怎么解决额,才另辟蹊径

请问CAD盗版弹窗有解决方法吗 :joy:

有一个要注意的点:代理软件规则生效对于全局代理无效

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。