如题,经过我的研究以后,大致原因是Node.js的TLS指纹被CF识别并拦了
解决方案:
使用Python本地反代加入浏览器特征
代码
from http.server import HTTPServer, BaseHTTPRequestHandler
import urllib.request
import json
class ProxyHandler(BaseHTTPRequestHandler):
def do_POST(self):
# Read request body
content_length = int(self.headers.get('Content-Length', 0))
body = self.rfile.read(content_length)
# Forward to actual API
req = urllib.request.Request(
f'https://api.ark717.com{self.path}',
data=body,
headers={
'Content-Type': self.headers.get('Content-Type', 'application/json'),
'Authorization': self.headers.get('Authorization', ''),
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
'Accept': 'application/json',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
)
try:
with urllib.request.urlopen(req) as resp:
response_body = resp.read()
self.send_response(resp.status)
for key, value in resp.getheaders():
if key.lower() not in ('transfer-encoding', 'connection'):
self.send_header(key, value)
self.end_headers()
self.wfile.write(response_body)
except urllib.error.HTTPError as e:
self.send_response(e.code)
self.end_headers()
self.wfile.write(e.read())
def do_GET(self):
req = urllib.request.Request(
f'https://api.ark717.com{self.path}',
headers={
'Authorization': self.headers.get('Authorization', ''),
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
'Accept': 'application/json',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
)
try:
with urllib.request.urlopen(req) as resp:
response_body = resp.read()
self.send_response(resp.status)
for key, value in resp.getheaders():
if key.lower() not in ('transfer-encoding', 'connection'):
self.send_header(key, value)
self.end_headers()
self.wfile.write(response_body)
except urllib.error.HTTPError as e:
self.send_response(e.code)
self.end_headers()
self.wfile.write(e.read())
if __name__ == '__main__':
server = HTTPServer(('127.0.0.1', 8889), ProxyHandler)
print('Proxy running on http://127.0.0.1:8889')
server.serve_forever()