{"id":112,"date":"2024-12-02T15:01:09","date_gmt":"2024-12-02T07:01:09","guid":{"rendered":"https:\/\/bt.079300.xyz\/?p=112"},"modified":"2024-12-02T15:04:56","modified_gmt":"2024-12-02T07:04:56","slug":"cf%e6%90%ad%e5%bb%baworkers%e4%bc%98%e9%80%89%e5%9f%9f%e5%90%8d-ip%e8%ae%a2%e9%98%85","status":"publish","type":"post","link":"https:\/\/bt.079300.xyz\/index.php\/2024\/12\/02\/cf%e6%90%ad%e5%bb%baworkers%e4%bc%98%e9%80%89%e5%9f%9f%e5%90%8d-ip%e8%ae%a2%e9%98%85\/","title":{"rendered":"cf\u642d\u5efaworkers\u4f18\u9009\u57df\u540d\/IP\u8ba2\u9605"},"content":{"rendered":"\n<p>CF\u521b\u5efaworkers\uff0c\u9ecf\u8d34\u4ee3\u7801<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\n\/\/ \u90e8\u7f72\u5b8c\u6210\u540e\u5728\u7f51\u5740\u540e\u9762\u52a0\u4e0a\u8fd9\u4e2a\uff0c\u83b7\u53d6\u8ba2\u9605\u5668\u9ed8\u8ba4\u8282\u70b9\uff0c\/auto\n\nlet mytoken= 'auto';\/\/\u5feb\u901f\u8ba2\u9605\u8bbf\u95ee\u5165\u53e3, \u7559\u7a7a\u5219\u4e0d\u542f\u52a8\u5feb\u901f\u8ba2\u9605\n\n\/\/ \u8bbe\u7f6e\u4f18\u9009\u5730\u5740\uff0c\u4e0d\u5e26\u7aef\u53e3\u53f7\u9ed8\u8ba4443\uff0c\u4e0d\u652f\u6301\u975eTLS\u8ba2\u9605\u751f\u6210\nlet addresses = &#91;\n\t'icook.tw:2053#\u4f18\u9009\u57df\u540d',\n\t'cloudflare.cfgo.cc#\u4f18\u9009\u5b98\u65b9\u7ebf\u8def',\n\t'icook.hk:8443#\u9999\u6e2f',\n\t'cfip.xxxxxxxx.tk#\u5b98\u65b9\u4f18\u9009-otc\u63d0\u4f9b',\n\t'hk.100366.xyz#\u9999\u6e2f',\n\n];\n\n\/\/ \u8bbe\u7f6e\u4f18\u9009\u5730\u5740api\u63a5\u53e3\nlet addressesapi = &#91;\n\t'https:\/\/raw.githubusercontent.com\/dockkkk\/CF-WORKERS\/main\/ip.txt' \/\/\u53ef\u53c2\u8003\u5185\u5bb9\u683c\u5f0f \u81ea\u884c\u642d\u5efa\u3002\n];\n\nlet DLS = 4;\/\/\u901f\u5ea6\u4e0b\u9650\nlet addressescsv = &#91;\n\t\/\/'https:\/\/raw.githubusercontent.com\/dockkkk\/CF-WORKERS\/main\/result.csv' \/\/iptest\u6d4b\u901f\u7ed3\u679c\u6587\u4ef6\u3002\n];\n\nlet subconverter = \"api.v1.mk\"; \/\/\u5728\u7ebf\u8ba2\u9605\u8f6c\u6362\u540e\u7aef\uff0c\u76ee\u524d\u4f7f\u7528\u80a5\u7f8a\u7684\u8ba2\u9605\u8f6c\u6362\u529f\u80fd\u3002\u652f\u6301\u81ea\u5efapsub \u53ef\u81ea\u884c\u642d\u5efahttps:\/\/github.com\/bulianglin\/psub\nlet subconfig = \"https:\/\/github.com\/ACL4SSR\/ACL4SSR\/blob\/master\/Clash\/config\/ACL4SSR.ini\"; \/\/\u8ba2\u9605\u914d\u7f6e\u6587\u4ef6\n\nlet link = '';\nlet edgetunnel = 'ed';\nlet RproxyIP = 'false';\nlet proxyIPs = &#91;\n\t'proxyip.aliyun.fxxk.dedyn.io',\n\t'proxyip.multacom.fxxk.dedyn.io',\n\t'proxyip.vultr.fxxk.dedyn.io',\n];\nlet CMproxyIPs = &#91;\n\t{ proxyIP: \"proxyip.fxxk.dedyn.io\", type: \"HK\" },\n];\nlet BotToken ='';\nlet ChatID =''; \nlet proxyhosts = &#91;\/\/\u672c\u5730\u4ee3\u7406\u57df\u540d\u6c60\n\t\/\/'ppfv2tl9veojd-maillazy.pages.dev',\n];\nlet proxyhostsURL = 'https:\/\/raw.githubusercontent.com\/cmliu\/CFcdnVmess2sub\/main\/proxyhosts';\/\/\u5728\u7ebf\u4ee3\u7406\u57df\u540d\u6c60URL\nlet EndPS = '';\/\/\u8282\u70b9\u540d\u5907\u6ce8\u5185\u5bb9\n\nasync function sendMessage(type, ip, add_data = \"\") {\n\tif ( BotToken !== '' &amp;&amp; ChatID !== ''){\n\t\tlet msg = \"\";\n\t\tconst response = await fetch(`http:\/\/ip-api.com\/json\/${ip}?lang=zh-CN`);\n\t\tif (response.status == 200) {\n\t\t\tconst ipInfo = await response.json();\n\t\t\tmsg = `${type}\\nIP: ${ip}\\n\u56fd\u5bb6: ${ipInfo.country}\\n&lt;tg-spoiler&gt;\u57ce\u5e02: ${ipInfo.city}\\n\u7ec4\u7ec7: ${ipInfo.org}\\nASN: ${ipInfo.as}\\n${add_data}`;\n\t\t} else {\n\t\t\tmsg = `${type}\\nIP: ${ip}\\n&lt;tg-spoiler&gt;${add_data}`;\n\t\t}\n\t\n\t\tlet url = \"https:\/\/api.telegram.org\/bot\"+ BotToken +\"\/sendMessage?chat_id=\" + ChatID + \"&amp;parse_mode=HTML&amp;text=\" + encodeURIComponent(msg);\n\t\treturn fetch(url, {\n\t\t\tmethod: 'get',\n\t\t\theaders: {\n\t\t\t\t'Accept': 'text\/html,application\/xhtml+xml,application\/xml;',\n\t\t\t\t'Accept-Encoding': 'gzip, deflate, br',\n\t\t\t\t'User-Agent': 'Mozilla\/5.0 Chrome\/90.0.4430.72'\n\t\t\t}\n\t\t});\n\t}\n}\n\nasync function getAddressesapi() {\n\tif (!addressesapi || addressesapi.length === 0) {\n\t\treturn &#91;];\n\t}\n\t\n\tlet newAddressesapi = &#91;];\n\t\n\tfor (const apiUrl of addressesapi) {\n\t\ttry {\n\t\t\tconst response = await fetch(apiUrl);\n\t\t\n\t\t\tif (!response.ok) {\n\t\t\t\tconsole.error('\u83b7\u53d6\u5730\u5740\u65f6\u51fa\u9519:', response.status, response.statusText);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\n\t\t\tconst text = await response.text();\n\t\t\tconst lines = text.split('\\n');\n\t\t\tconst regex = \/^(\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3})(:\\d+)?(#.*)?$\/;\n\t\t\n\t\t\tconst apiAddresses = lines.map(line =&gt; {\n\t\t\t\tconst match = line.match(regex);\n\t\t\t\treturn match ? match&#91;0] : null;\n\t\t\t}).filter(Boolean);\n\t\t\n\t\t\tnewAddressesapi = newAddressesapi.concat(apiAddresses);\n\t\t} catch (error) {\n\t\t\tconsole.error('\u83b7\u53d6\u5730\u5740\u65f6\u51fa\u9519:', error);\n\t\t\tcontinue;\n\t\t}\n\t}\n\t\n\treturn newAddressesapi;\n}\n\nasync function getAddressescsv() {\n\tif (!addressescsv || addressescsv.length === 0) {\n\t\treturn &#91;];\n\t}\n\t\n\tlet newAddressescsv = &#91;];\n\t\n\tfor (const csvUrl of addressescsv) {\n\t\ttry {\n\t\t\tconst response = await fetch(csvUrl);\n\t\t\n\t\t\tif (!response.ok) {\n\t\t\t\tconsole.error('\u83b7\u53d6CSV\u5730\u5740\u65f6\u51fa\u9519:', response.status, response.statusText);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\n\t\t\tconst text = await response.text();\/\/ \u4f7f\u7528\u6b63\u786e\u7684\u5b57\u7b26\u7f16\u7801\u89e3\u6790\u6587\u672c\u5185\u5bb9\n\t\t\tconst lines = text.split('\\n');\n\t\t\n\t\t\t\/\/ \u68c0\u67e5CSV\u5934\u90e8\u662f\u5426\u5305\u542b\u5fc5\u9700\u5b57\u6bb5\n\t\t\tconst header = lines&#91;0].split(',');\n\t\t\tconst tlsIndex = header.indexOf('TLS');\n\t\t\tconst speedIndex = header.length - 1; \/\/ \u6700\u540e\u4e00\u4e2a\u5b57\u6bb5\n\t\t\n\t\t\tconst ipAddressIndex = 0;\/\/ IP\u5730\u5740\u5728 CSV \u5934\u90e8\u7684\u4f4d\u7f6e\n\t\t\tconst portIndex = 1;\/\/ \u7aef\u53e3\u5728 CSV \u5934\u90e8\u7684\u4f4d\u7f6e\n\t\t\tconst dataCenterIndex = tlsIndex + 1; \/\/ \u6570\u636e\u4e2d\u5fc3\u662f TLS \u7684\u540e\u4e00\u4e2a\u5b57\u6bb5\n\t\t\n\t\t\tif (tlsIndex === -1) {\n\t\t\t\tconsole.error('CSV\u6587\u4ef6\u7f3a\u5c11\u5fc5\u9700\u7684\u5b57\u6bb5');\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\n\t\t\t\/\/ \u4ece\u7b2c\u4e8c\u884c\u5f00\u59cb\u904d\u5386CSV\u884c\n\t\t\tfor (let i = 1; i &lt; lines.length; i++) {\n\t\t\t\tconst columns = lines&#91;i].split(',');\n\t\t\n\t\t\t\t\/\/ \u68c0\u67e5TLS\u662f\u5426\u4e3a\"TRUE\"\u4e14\u901f\u5ea6\u5927\u4e8eDLS\n\t\t\t\tif (columns&#91;tlsIndex].toUpperCase() === 'TRUE' &amp;&amp; parseFloat(columns&#91;speedIndex]) &gt; DLS) {\n\t\t\t\t\tconst ipAddress = columns&#91;ipAddressIndex];\n\t\t\t\t\tconst port = columns&#91;portIndex];\n\t\t\t\t\tconst dataCenter = columns&#91;dataCenterIndex];\n\t\t\t\n\t\t\t\t\tconst formattedAddress = `${ipAddress}:${port}#${dataCenter}`;\n\t\t\t\t\tnewAddressescsv.push(formattedAddress);\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.error('\u83b7\u53d6CSV\u5730\u5740\u65f6\u51fa\u9519:', error);\n\t\t\tcontinue;\n\t\t}\n\t}\n\t\n\treturn newAddressescsv;\n}\n\nlet protocol;\nexport default {\n\tasync fetch (request, env) {\n\t\tmytoken = env.TOKEN || mytoken;\n\t\tBotToken = env.TGTOKEN || BotToken;\n\t\tChatID = env.TGID || ChatID; \n\t\tsubconverter = env.SUBAPI || subconverter;\n\t\tsubconfig = env.SUBCONFIG || subconfig;\n\t\tconst userAgentHeader = request.headers.get('User-Agent');\n\t\tconst userAgent = userAgentHeader ? userAgentHeader.toLowerCase() : \"null\";\n\t\tconst url = new URL(request.url);\n\t\tconst format = url.searchParams.get('format') ? url.searchParams.get('format').toLowerCase() : \"null\";\n\t\tlet host = \"\";\n\t\tlet uuid = \"\";\n\t\tlet path = \"\";\n\n\t\tif (mytoken !== '' &amp;&amp; url.pathname.includes(mytoken)) {\n\t\t\thost = env.HOST || \"edgetunnel-2z2.pages.dev\";\n\t\t\tuuid = env.UUID || \"30e9c5c8-ed28-4cd9-b008-dc67277f8b02\";\n\t\t\tpath = env.PATH || \"\/?ed=2048\";\n\t\t\tedgetunnel = env.ED || edgetunnel;\n\t\t\tRproxyIP = env.RPROXYIP || RproxyIP;\n\n\t\t\tconst hasSos = url.searchParams.has('sos');\n\t\t\tif (hasSos) {\n\t\t\t\tconst hy2Url = \"https:\/\/hy2sub.pages.dev\";\n\t\t\t\ttry {\n\t\t\t\t\tconst subconverterResponse = await fetch(hy2Url);\n\t\n\t\t\t\t\tif (!subconverterResponse.ok) {\n\t\t\t\t\t\tthrow new Error(`Error fetching lzUrl: ${subconverterResponse.status} ${subconverterResponse.statusText}`);\n\t\t\t\t\t}\n\t\n\t\t\t\t\tconst base64Text = await subconverterResponse.text();\n\t\t\t\t\tlink = atob(base64Text); \/\/ \u8fdb\u884c Base64 \u89e3\u7801\n\t\n\t\t\t\t} catch (error) {\n\t\t\t\t\t\/\/ \u9519\u8bef\u5904\u7406\n\t\t\t\t}\t\n\t\t\t}\n\t\tawait sendMessage(\"#\u83b7\u53d6\u8ba2\u9605\", request.headers.get('CF-Connecting-IP'), `UA: ${userAgent}&lt;\/tg-spoiler&gt;\\n\u57df\u540d: ${url.hostname}\\n&lt;tg-spoiler&gt;\u5165\u53e3: ${url.pathname + url.search}&lt;\/tg-spoiler&gt;`);\n\t\t} else {\n\t\t\thost = url.searchParams.get('host');\n\t\t\tuuid = url.searchParams.get('uuid');\n\t\t\tpath = url.searchParams.get('path');\n\t\t\t\n\t\t\tif (!url.pathname.includes(\"\/sub\")) {\n\t\t\t\tconst responseText = `\n\t\t\t\u8def\u5f84\u5fc5\u987b\u5305\u542b \"\/sub\"\n\t\t\tThe path must contain \"\/sub\"\n\t\t\t\u0645\u0633\u06cc\u0631 \u0628\u0627\u06cc\u062f \u0634\u0627\u0645\u0644 \"\/sub\" \u0628\u0627\u0634\u062f\n\t\t\t\n\t\t\t${url.origin}\/sub?host=&#91;your host]&amp;uuid=&#91;your uuid]&amp;path=&#91;your path]\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\thttps:&#47;&#47;github.com\/dockkkk\/CF-WORKERS\n\t\t\t\t`;\n\t\t\t\n\t\t\t\treturn new Response(responseText, {\n\t\t\t\tstatus: 400,\n\t\t\t\theaders: { 'content-type': 'text\/plain; charset=utf-8' },\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (!host || !uuid) {\n\t\t\t\tconst responseText = `\n\t\t\t\u7f3a\u5c11\u5fc5\u586b\u53c2\u6570\uff1ahost \u548c uuid\n\t\t\tMissing required parameters: host and uuid\n\t\t\t\u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0636\u0631\u0648\u0631\u06cc \u0648\u0627\u0631\u062f \u0646\u0634\u062f\u0647: \u0647\u0627\u0633\u062a \u0648 \u06cc\u0648\u0622\u06cc\u200c\u062f\u06cc\n\t\t\t\n\t\t\t${url.origin}\/sub?host=&#91;your host]&amp;uuid=&#91;your uuid]&amp;path=&#91;your path]\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\thttps:\/\/t.me\/tweekpiao\n\t\t\t\t`;\n\t\t\t\n\t\t\t\treturn new Response(responseText, {\n\t\t\t\tstatus: 400,\n\t\t\t\theaders: { 'content-type': 'text\/plain; charset=utf-8' },\n\t\t\t\t});\n\t\t\t}\n\t\t\t\n\t\t\tif (!path || path.trim() === '') {\n\t\t\t\tpath = '\/?ed=2048';\n\t\t\t} else {\n\t\t\t\t\/\/ \u5982\u679c\u7b2c\u4e00\u4e2a\u5b57\u7b26\u4e0d\u662f\u659c\u6760\uff0c\u5219\u5728\u524d\u9762\u6dfb\u52a0\u4e00\u4e2a\u659c\u6760\n\t\t\t\tpath = (path&#91;0] === '\/') ? path : '\/' + path;\n\t\t\t}\n\t\t}\n\n\t\tif (userAgent.includes('telegram') || userAgent.includes('twitter') || userAgent.includes('miaoko')) {\n\t\t\treturn new Response('Hello World!');\n\t\t} else if (userAgent.includes('clash') || (format === 'clash' &amp;&amp; !userAgent.includes('subconverter'))) {\n\t\t\tconst subconverterUrl = `https:\/\/${subconverter}\/sub?target=clash&amp;url=${encodeURIComponent(request.url)}&amp;insert=false&amp;config=${encodeURIComponent(subconfig)}&amp;emoji=true&amp;list=false&amp;tfo=false&amp;scv=false&amp;fdn=false&amp;sort=false&amp;new_name=true`;\n\n\t\t\ttry {\n\t\t\t\tconst subconverterResponse = await fetch(subconverterUrl);\n\t\t\t\t\n\t\t\t\tif (!subconverterResponse.ok) {\n\t\t\t\t\tthrow new Error(`Error fetching subconverterUrl: ${subconverterResponse.status} ${subconverterResponse.statusText}`);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst subconverterContent = await subconverterResponse.text();\n\t\t\t\t\n\t\t\t\treturn new Response(subconverterContent, {\n\t\t\t\t\theaders: { 'content-type': 'text\/plain; charset=utf-8' },\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn new Response(`Error: ${error.message}`, {\n\t\t\t\t\tstatus: 500,\n\t\t\t\t\theaders: { 'content-type': 'text\/plain; charset=utf-8' },\n\t\t\t\t});\n\t\t\t}\n\t\t} else if (userAgent.includes('sing-box') || userAgent.includes('singbox') || (format === 'singbox' &amp;&amp; !userAgent.includes('subconverter'))){\n\t\t\tconst subconverterUrl = `https:\/\/${subconverter}\/sub?target=singbox&amp;url=${encodeURIComponent(request.url)}&amp;insert=false&amp;config=${encodeURIComponent(subconfig)}&amp;emoji=true&amp;list=false&amp;tfo=false&amp;scv=false&amp;fdn=false&amp;sort=false&amp;new_name=true`;\n\n\t\t\ttry {\n\t\t\tconst subconverterResponse = await fetch(subconverterUrl);\n\t\t\t\n\t\t\t\tif (!subconverterResponse.ok) {\n\t\t\t\t\tthrow new Error(`Error fetching subconverterUrl: ${subconverterResponse.status} ${subconverterResponse.statusText}`);\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tconst subconverterContent = await subconverterResponse.text();\n\t\t\t\t\n\t\t\t\treturn new Response(subconverterContent, {\n\t\t\t\t\theaders: { 'content-type': 'text\/plain; charset=utf-8' },\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn new Response(`Error: ${error.message}`, {\n\t\t\t\t\tstatus: 500,\n\t\t\t\t\theaders: { 'content-type': 'text\/plain; charset=utf-8' },\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tif(host.includes('workers.dev') || host.includes('pages.dev')) {\n\t\t\t\tif (proxyhostsURL) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst response = await fetch(proxyhostsURL); \n\t\t\t\t\t\n\t\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\t\tconsole.error('\u83b7\u53d6\u5730\u5740\u65f6\u51fa\u9519:', response.status, response.statusText);\n\t\t\t\t\t\t\treturn; \/\/ \u5982\u679c\u6709\u9519\u8bef\uff0c\u76f4\u63a5\u8fd4\u56de\n\t\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\t\tconst text = await response.text();\n\t\t\t\t\t\tconst lines = text.split('\\n');\n\t\t\t\t\t\t\/\/ \u8fc7\u6ee4\u6389\u7a7a\u884c\u6216\u53ea\u5305\u542b\u7a7a\u767d\u5b57\u7b26\u7684\u884c\n\t\t\t\t\t\tconst nonEmptyLines = lines.filter(line =&gt; line.trim() !== '');\n\t\t\t\t\t\n\t\t\t\t\t\tproxyhosts = proxyhosts.concat(nonEmptyLines);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tconsole.error('\u83b7\u53d6\u5730\u5740\u65f6\u51fa\u9519:', error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\/\/ \u4f7f\u7528Set\u5bf9\u8c61\u53bb\u91cd\n\t\t\t\tproxyhosts = &#91;...new Set(proxyhosts)];\n\t\t\t}\n\t\t\t\n\t\t\tconst newAddressesapi = await getAddressesapi();\n\t\t\tconst newAddressescsv = await getAddressescsv();\n\t\t\taddresses = addresses.concat(newAddressesapi);\n\t\t\taddresses = addresses.concat(newAddressescsv);\n\t\t\t\n\t\t\t\/\/ \u4f7f\u7528Set\u5bf9\u8c61\u53bb\u91cd\n\t\t\tconst uniqueAddresses = &#91;...new Set(addresses)];\n\t\t\t\n\t\t\tconst responseBody = uniqueAddresses.map(address =&gt; {\n\t\t\t\tlet port = \"443\";\n\t\t\t\tlet addressid = address;\n\t\t\t\n\t\t\t\tif (address.includes(':') &amp;&amp; address.includes('#')) {\n\t\t\t\t\tconst parts = address.split(':');\n\t\t\t\t\taddress = parts&#91;0];\n\t\t\t\t\tconst subParts = parts&#91;1].split('#');\n\t\t\t\t\tport = subParts&#91;0];\n\t\t\t\t\taddressid = subParts&#91;1];\n\t\t\t\t} else if (address.includes(':')) {\n\t\t\t\t\tconst parts = address.split(':');\n\t\t\t\t\taddress = parts&#91;0];\n\t\t\t\t\tport = parts&#91;1];\n\t\t\t\t} else if (address.includes('#')) {\n\t\t\t\t\tconst parts = address.split('#');\n\t\t\t\t\taddress = parts&#91;0];\n\t\t\t\t\taddressid = parts&#91;1];\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif (addressid.includes(':')) {\n\t\t\t\t\taddressid = addressid.split(':')&#91;0];\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tedgetunnel = url.searchParams.get('edgetunnel') || edgetunnel;\n\t\t\t\tRproxyIP = url.searchParams.get('proxyip') || RproxyIP;\n\t\t\t\tif (edgetunnel.trim() === 'cmliu' &amp;&amp; RproxyIP.trim() === 'true') {\n\t\t\t\t\t\/\/ \u5c06addressid\u8f6c\u6362\u4e3a\u5c0f\u5199\n\t\t\t\t\tlet lowerAddressid = addressid.toLowerCase();\n\t\t\t\t\t\/\/ \u521d\u59cb\u5316\u627e\u5230\u7684proxyIP\u4e3anull\n\t\t\t\t\tlet foundProxyIP = null;\n\t\t\t\t\n\t\t\t\t\t\/\/ \u904d\u5386CMproxyIPs\u6570\u7ec4\u67e5\u627e\u5339\u914d\u9879\n\t\t\t\t\tfor (let item of CMproxyIPs) {\n\t\t\t\t\t\tif (lowerAddressid.includes(item.type.toLowerCase())) {\n\t\t\t\t\t\t\tfoundProxyIP = item.proxyIP;\n\t\t\t\t\t\t\tbreak; \/\/ \u627e\u5230\u5339\u914d\u9879\uff0c\u8df3\u51fa\u5faa\u73af\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\tif (foundProxyIP) {\n\t\t\t\t\t\t\/\/ \u5982\u679c\u627e\u5230\u5339\u914d\u7684proxyIP\uff0c\u8d4b\u503c\u7ed9path\n\t\t\t\t\t\tpath = `\/proxyIP=${foundProxyIP}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t\/\/ \u5982\u679c\u6ca1\u6709\u627e\u5230\u5339\u914d\u9879\uff0c\u968f\u673a\u9009\u62e9\u4e00\u4e2aproxyIP\n\t\t\t\t\t\tconst randomProxyIP = proxyIPs&#91;Math.floor(Math.random() * proxyIPs.length)];\n\t\t\t\t\t\tpath = `\/proxyIP=${randomProxyIP}`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tlet \u4f2a\u88c5\u57df\u540d = host ;\n\t\t\t\tlet \u6700\u7ec8\u8def\u5f84 = path ;\n\t\t\t\tlet \u8282\u70b9\u5907\u6ce8 = EndPS ;\n\t\t\t\tif(proxyhosts &amp;&amp; (host.includes('workers.dev') || host.includes('pages.dev'))) {\n\t\t\t\t\t\u6700\u7ec8\u8def\u5f84 = `\/${host}${path}`;\n\t\t\t\t\t\u4f2a\u88c5\u57df\u540d = proxyhosts&#91;Math.floor(Math.random() * proxyhosts.length)];\n\t\t\t\t\t\u8282\u70b9\u5907\u6ce8 = `${EndPS} \u4e34\u65f6\u57df\u540d\u4e2d\u8f6c\uff01`;\n\t\t\t\t}\n\t\t\t\tconst vlessLink = `vless:\/\/${uuid}@${address}:${port}?encryption=none&amp;security=tls&amp;sni=${\u4f2a\u88c5\u57df\u540d}&amp;fp=random&amp;type=ws&amp;host=${\u4f2a\u88c5\u57df\u540d}&amp;path=${encodeURIComponent(\u6700\u7ec8\u8def\u5f84)}#${encodeURIComponent(addressid + \u8282\u70b9\u5907\u6ce8)}`;\n\t\t\t\n\t\t\t\treturn vlessLink;\n\t\t\t}).join('\\n');\n\t\t\t\n\t\t\tconst combinedContent = responseBody + '\\n' + link; \/\/ \u5408\u5e76\u5185\u5bb9\n\t\t\tconst base64Response = btoa(combinedContent); \/\/ \u91cd\u65b0\u8fdb\u884c Base64 \u7f16\u7801\n\n\t\t\tconst response = new Response(base64Response, {\n\t\t\theaders: { 'content-type': 'text\/plain' },\n\t\t\t});\n\n\t\t\treturn response;\n\t\t}\n\t}\n};<\/code><\/pre>\n\n\n\n<p>\u4ee3\u7801\u5730\u5740\uff1a<a target=\"_blank\" rel=\"noreferrer noopener\" href=\"https:\/\/raw.githubusercontent.com\/dockkkk\/CF-WORKERS\/main\/dingyue.js\">https:\/\/raw.githubusercontent.com\/dockkkk\/CF-WORKERS\/main\/dingyue.js<\/a><\/p>\n\n\n\n<p>\u4f18\u9009\u57df\u540d\u63a8\u8350<\/p>\n\n\n\n<p><a target=\"_blank\" rel=\"noreferrer noopener\" href=\"http:\/\/cfip.xxxxxxxx.tk:2096\/\">cfip.xxxxxxxx.tk:2096<\/a><\/p>\n\n\n\n<p><a target=\"_blank\" rel=\"noreferrer noopener\" href=\"http:\/\/cdn.kaiche.tk:2096\/\">cdn.kaiche.tk:2096<\/a><\/p>\n\n\n\n<p><a target=\"_blank\" rel=\"noreferrer noopener\" href=\"http:\/\/c.xf.free.hr:2087\/\">c.xf.free.hr:2087<\/a><\/p>\n\n\n\n<p><a target=\"_blank\" rel=\"noreferrer noopener\" href=\"http:\/\/cf.090227.xyz:443\/\">cf.090227.xyz:443<\/a><\/p>\n\n\n\n<p><a target=\"_blank\" rel=\"noreferrer noopener\" href=\"http:\/\/sp.rweek.top:443\/\">sp.rweek.top:443<\/a><\/p>\n\n\n\n<p><a target=\"_blank\" rel=\"noreferrer noopener\" href=\"http:\/\/hk.rweek.top:2052\/\">hk.rweek.top:2052<\/a><\/p>\n\n\n\n<p>\u63a8\u8350api\u5730\u5740<\/p>\n\n\n\n<figure class=\"wp-block-embed\"><div class=\"wp-block-embed__wrapper\">\nhttps:\/\/raw.githubusercontent.com\/ymyuuu\/IPDB\/main\/bestcf.txt\n<\/div><\/figure>\n\n\n\n<p>\u53d8\u91cf\u81ea\u52a8\uff1a<\/p>\n\n\n\n<p>UUID=UUID<\/p>\n\n\n\n<p>HOST=\u4f2a\u88c5\u57df\u540d<\/p>\n\n\n\n<p>PATH=\u8def\u5f84<\/p>\n\n\n\n<p>TOKEN=\u8ba2\u9605\u5165\u53e3<\/p>\n\n\n\n<p>\u624b\u52a8\u586b\u5199\uff1ahttps:\/\/\u751f\u6210\u5668\u5730\u5740\/sub?host=\u4f2a\u88c5\u57df\u540d&amp;uuid=\u4f60\u7684UUID&amp;path=\u8def\u5f84<\/p>\n\n\n\n<p>\u672c\u535a\u5ba2\u5185\u5df2\u53d1\u8868<a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/21\/\">cname\u4f18\u9009\u57df\u540d\u6559\u7a0b<\/a>\uff0c\u4f46\u662f\u8003\u8651\u5230\u5927\u5bb6\u6ca1\u6709\u4f18\u9009\u57df\u540d\uff0c\u4e13\u95e8\u66f4\u65b0\u4e00\u671f\u4f18\u9009\u57df\u540d<\/p>\n\n\n\n<p>\u6ce8\uff1a2024\/10\/23 \u5df2\u66f4\u65b0\u4f18\u9009\u57df\u540d<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"cl-4\"><a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/22\/#cl-4\"><\/a>\u4f18\u9009\u57df\u540d\u5217\u8868\uff1a<\/h2>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"cl-5\"><a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/22\/#cl-5\"><\/a>\u79cb\u540d\u5c71\u81ea\u5efaCF\u4f18\u9009\u57df\u540d<\/h4>\n\n\n\n<p>cf.877774.xyz<\/p>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"cl-6\"><a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/22\/#cl-6\"><\/a>\u535a\u4e3b\u63a8\u8350\uff1a<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>visa.cn | visa\u4e2d\u56fd\u5b98\u7f51\ncf.090227.xyz | CM\u5927\u4f6c\u7ef4\u62a4\u7684\u4f18\u9009\napi-ipv4.ip.sb | IP\u67e5\u8be2\u5668\nfbi.gov | \u7f8e\u56fdFBI\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"cl-7\"><a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/22\/#cl-7\"><\/a>\u5176\u4ed6\u4f18\u9009\uff1a<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>shopify.com\ntime.is\nicook.hk\nicook.tw\nip.sb\njapan.com\nmalaysia.com\nrussia.com\nsingapore.com\nskk.moe\nwww.visa.com\nwww.visa.com.sg\nwww.visa.com.hk\nwww.visa.com.tw\nwww.visa.co.jp\nwww.visakorea.com\nwww.gco.gov.qa\nwww.gov.se\nwww.gov.ua\nwww.digitalocean.com\nwww.csgo.com\nwww.shopify.com\nwww.whoer.net\nwww.whatismyip.com\nwww.ipget.net\nwww.hugedomains.com\nwww.udacity.com\nwww.4chan.org\nwww.okcupid.com\nwww.glassdoor.com\nwww.udemy.com\nwww.baipiao.eu.org\nalejandracaiccedo.com\nlog.bpminecraft.com\nwww.boba88slot.com\ngur.gov.ua\nwww.zsu.gov.ua\nwww.iakeys.com\nedtunnel-dgp.pages.dev\nwww.d-555.com\nfbi.gov\nwww.sean-now.com\ndownload.yunzhongzhuan.com\nwhatismyipaddress.com\nwww.ipaddress.my\nwww.pcmag.com\nwww.ipchicken.com\nwww.iplocation.net\niplocation.io\nwww.who.int\nwww.wto.org\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"cl-8\"><a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/22\/#cl-8\"><\/a>\u7b2c\u4e09\u65b9\u7ef4\u62a4\u7684\u4f18\u9009\u5b98\u65b9\u57df\u540d\uff08\u672a\u5907\u6ce8\u51fa\u5904\u7684\u4e3a\u672a\u77e5\uff09<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>cfip.xxxxxxxx.tk#OTC\u63d0\u4f9b\u7ef4\u62a4\u5b98\u65b9\u4f18\u9009\nbestcf.onecf.eu.org#Mingyu\u63d0\u4f9b\u7ef4\u62a4\u5b98\u65b9\u4f18\u9009\ncf.zhetengsha.eu.org#\u5c0f\u4e00\u63d0\u4f9b\u7ef4\u62a4\u5b98\u65b9\u4f18\u9009\nacjp2.cloudflarest.link#KJKKK\u7ef4\u62a4\u5b98\u65b9\u4f18\u9009\nachk.cloudflarest.link#KJKKK\u7ef4\u62a4\u5b98\u65b9\u4f18\u9009\nxn--b6gac.eu.org\nyx.887141.xyz\n8.889288.xyz\ncfip.1323123.xyz\ncf.515188.xyz\ncf-st.annoy.eu.org\ncf.0sm.com\ncf.877771.xyz\ncf.345673.xyz<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"cl-9\"><a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/22\/#cl-9\"><\/a>\u7b2c\u4e09\u65b9\u7ef4\u62a4\u7684\u4f18\u9009\u5b98\u65b9IP\u7684API<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code> https:&#47;&#47;ipdb.api.030101.xyz\/?type=bestcf&amp;country=true\n https:\/\/addressesapi.090227.xyz\/CloudFlareYes\n https:\/\/addressesapi.090227.xyz\/ip.164746.xyz\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"cl-10\"><a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/22\/#cl-10\"><\/a>\u5b98\u65b9 IP \u4f18\u9009\uff1a<\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>jp.byun.eu.org\nun.goasa.top\nemby2.misakaf.org\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"cl-11\"><a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/22\/#cl-11\"><\/a>IPv6\u4e0d\u6b7bIP\uff08\u9700\u8981\u6709IPv6\u73af\u5883\uff09<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>2606:4700::\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"cl-12\"><a href=\"https:\/\/blog.qmsdh.com\/index.php\/archives\/22\/#cl-12\"><\/a>\u5176\u4ed6\u5728\u7ebf\u4f18\u9009\u7f51\u7ad9\uff1a\uff08\u6d4f\u89c8\u5668\u8bbf\u95ee\uff09<\/h4>\n\n\n\n<p>\u4e09\u7f51\u4f18\u9009IP\uff1a<a href=\"https:\/\/stock.hostmonit.com\/CloudFlareYes\" target=\"_BLANK\" rel=\"noreferrer noopener\">\u70b9\u51fb\u524d\u5f80<\/a><br>CM\u4f18\u9009IP\uff1a<a href=\"https:\/\/cf.090227.xyz\/\" target=\"_BLANK\" rel=\"noreferrer noopener\">\u70b9\u51fb\u524d\u5f80<\/a><br><a href=\"https:\/\/monitor.gacjie.cn\/page\/cloudflare\/ipv4.html\" target=\"_BLANK\" rel=\"noreferrer noopener\">https:\/\/monitor.gacjie.cn\/page\/cloudflare\/ipv4.html<\/a><br><a href=\"https:\/\/vps789.com\/public\/sum\/cfIpTop20\" target=\"_BLANK\" rel=\"noreferrer noopener\">https:\/\/vps789.com\/public\/sum\/cfIpTop20<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>CF\u521b\u5efaworkers\uff0c\u9ecf\u8d34\u4ee3\u7801 \u4ee3\u7801\u5730\u5740\uff1ahttps:\/\/raw.githubusercontent.com&hellip; <a class=\"more-link\" href=\"https:\/\/bt.079300.xyz\/index.php\/2024\/12\/02\/cf%e6%90%ad%e5%bb%baworkers%e4%bc%98%e9%80%89%e5%9f%9f%e5%90%8d-ip%e8%ae%a2%e9%98%85\/\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">cf\u642d\u5efaworkers\u4f18\u9009\u57df\u540d\/IP\u8ba2\u9605<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-112","post","type-post","status-publish","format-standard","hentry","category-uncategorized","entry"],"_links":{"self":[{"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/posts\/112","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=112"}],"version-history":[{"count":3,"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/posts\/112\/revisions"}],"predecessor-version":[{"id":115,"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/posts\/112\/revisions\/115"}],"wp:attachment":[{"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=112"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bt.079300.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}