zzzgydi/clash-verge

Script Profile for ChatGPT | Scripts Sharing

zzzgydi opened this issue · 7 comments

分享一段针对ChatGPT的分组规则,可以根据自己的需求更改regexrulesregex是匹配出能访问ChatGPT节点的正则,rules是clash rules,分组名为ChatGPT

// New Proxy Group for ChatGPT

function main(params) {
  // TODO modify this regex to what you want
  const regex = /美国|新加坡|日本/;
  
  // TODO modify this rules to what you want
  const rules = [
    "DOMAIN-KEYWORD,openai,ChatGPT",
    "DOMAIN-KEYWORD,cloudfare,ChatGPT"
  ];

  const proxies = params.proxies
    .filter((e) => regex.test(e.name))
    .map((e) => e.name);

  const groups = params["proxy-groups"];

  const newGroup = {
    name: "ChatGPT",
    type: "select",
    proxies,
  };

  if (groups.length > 1) {
    groups.splice(1, 0, newGroup);
    params.rules = rules.concat(params.rules);
  }

  return params;
}

脚本的入参 params 是不是和profile配置文件的结构一致?

@together-ds 是的,已经将yaml转成json结构

由于一些原因可能导致Chat GPT的封号,所以希望补充一条规则

"DOMAIN-KEYWORD,sentry,ChatGPT"

由于一些原因可能导致Chat GPT的封号,所以希望补充一条规则

"DOMAIN-KEYWORD,sentry,ChatGPT"

sentry.io直接REJECT就不用担心了

由于一些原因可能导致Chat GPT的封号,所以希望补充一条规则

"DOMAIN-KEYWORD,sentry,ChatGPT"

sentry.io直接REJECT就不用担心了

你看看我发的原因这个推特用户的其他推文呢?有提到使用一些技术手段阻止Open AI追踪也会导致封号

由于一些原因可能导致Chat GPT的封号,所以希望补充一条规则

"DOMAIN-KEYWORD,sentry,ChatGPT"

sentry.io直接REJECT就不用担心了

你看看我发的原因这个推特用户的其他推文呢?有提到使用一些技术手段阻止Open AI追踪也会导致封号

我这样子用了很久,亲测没问题

改动了一下这个函数
筛选节点部分的正则更灵活且更容易维护
rules部分的规则是根据ACL4SSR里面的规则加上了个人整合的一部分

function main(params) {
  // 下方两个数组的每一项均为正则,忽略大小写
  const mustHaveKeywords = ['美国', 'United States', '新加坡', 'sg'];
  // 过滤掉美国节点中,包含以下关键字的节点(过滤低质量节点,要过滤哪些根据自己的订阅来)
  const mustNotHaveKeywords = ['实验性', '0\\.', 'b'];

  const regexParts = [];
  mustHaveKeywords.forEach(keyword => {
    const mustNotHavePart = mustNotHaveKeywords.map(k => `(?!.*${k})`).join('');
    regexParts.push(`(?=.*${keyword}${mustNotHavePart}).*`);
  });
  const regex = new RegExp(`^(${regexParts.join('|')})$`, 'i');
  
	const rules = [
    "DOMAIN-KEYWORD,cloudfare,ChatGPT",
    "DOMAIN-KEYWORD,openai,ChatGPT",
    "DOMAIN-KEYWORD,sentry,ChatGPT",
    "DOMAIN-SUFFIX,ai.com,ChatGPT",
    "DOMAIN-SUFFIX,auth0.com,ChatGPT",
    "DOMAIN-SUFFIX,challenges.cloudflare.com,ChatGPT",
    "DOMAIN-SUFFIX,client-api.arkoselabs.com,ChatGPT",
    "DOMAIN-SUFFIX,events.statsigapi.net,ChatGPT",
    "DOMAIN-SUFFIX,featuregates.org,ChatGPT",
    "DOMAIN-SUFFIX,identrust.com,ChatGPT",
    "DOMAIN-SUFFIX,ingest.sentry.io,ChatGPT",
    "DOMAIN-SUFFIX,intercom.io,ChatGPT",
    "DOMAIN-SUFFIX,intercomcdn.com,ChatGPT",
    "DOMAIN-SUFFIX,openai.com,ChatGPT",
    "DOMAIN-SUFFIX,openaiapi-site.azureedge.net,ChatGPT",
    "DOMAIN-SUFFIX,stripe.com,ChatGPT"
  ];

  const proxies = params.proxies
    .filter(i => regex.test(i.name))
    .map(e => e.name);

  const groups = params["proxy-groups"];

  const newGroup = {
    name: "ChatGPT",
    type: "select",
    proxies,
  };

  if (groups.length > 1) {
    groups.splice(1, 0, newGroup);
    params.rules = rules.concat(params.rules);
  }

  return params;
}