sfun commited on
Commit
aef0b8f
1 Parent(s): 4070c52

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -20
app.py CHANGED
@@ -73,33 +73,31 @@ async def extract_and_transform_proxies(input_text):
73
 
74
  transformed_proxies.append(", ".join(parts))
75
 
76
- return "\n".join(transformed_proxies) if transformed_proxies else "未找到有效的SS或Trojan代理配置"
77
 
78
  async def handle_request(request):
79
  if request.path == '/':
80
  query_params = parse_qs(request.query_string)
81
  if 'url' in query_params:
82
  url = query_params['url'][0]
 
83
 
84
  if url in cache:
85
- print(f"Cache hit for URL: {url}", flush=True)
86
- return web.Response(text=cache[url], content_type='text/plain')
 
 
 
 
 
 
 
 
 
 
87
 
88
- try:
89
- print(f"Fetching URL: {url}", flush=True)
90
- async with aiohttp.ClientSession(connector=TCPConnector(ssl=False)) as session:
91
- input_text = await fetch_url(url, session)
92
- print(f"URL content length: {len(input_text)}", flush=True)
93
- result = await extract_and_transform_proxies(input_text)
94
- print(f"Transformed result length: {len(result)}", flush=True)
95
-
96
- cache[url] = result
97
-
98
- return web.Response(text=result, content_type='text/plain')
99
- except Exception as e:
100
- print(f"Error processing request: {str(e)}", flush=True)
101
- traceback.print_exc()
102
- return web.Response(text=f"Error: {str(e)}", status=500)
103
  else:
104
  usage_guide = """
105
  <html>
@@ -120,8 +118,17 @@ async def logging_middleware(request, handler):
120
  try:
121
  response = await handler(request)
122
  end_time = datetime.datetime.now()
123
- print(f"{end_time.strftime('%Y-%m-%d %H:%M:%S')} - {request.remote} - \"{request.method} {request.path}\" {response.status} {response.content_length}", flush=True)
124
- print(f"Request processing time: {end_time - start_time}", flush=True)
 
 
 
 
 
 
 
 
 
125
  return response
126
  except Exception as e:
127
  end_time = datetime.datetime.now()
 
73
 
74
  transformed_proxies.append(", ".join(parts))
75
 
76
+ return "\n".join(transformed_proxies)
77
 
78
  async def handle_request(request):
79
  if request.path == '/':
80
  query_params = parse_qs(request.query_string)
81
  if 'url' in query_params:
82
  url = query_params['url'][0]
83
+ cache_hit = False
84
 
85
  if url in cache:
86
+ result = cache[url]
87
+ cache_hit = True
88
+ else:
89
+ try:
90
+ async with aiohttp.ClientSession(connector=TCPConnector(ssl=False)) as session:
91
+ input_text = await fetch_url(url, session)
92
+ result = await extract_and_transform_proxies(input_text)
93
+ cache[url] = result
94
+ except Exception as e:
95
+ print(f"Error processing request: {str(e)}", flush=True)
96
+ traceback.print_exc()
97
+ return web.Response(text=f"Error: {str(e)}", status=500)
98
 
99
+ proxy_count = result.count('\n') + 1 if result and result != "未找到有效的代理配置" else 0
100
+ return web.Response(text=result, content_type='text/plain', headers={'X-Proxy-Count': str(proxy_count), 'X-Cache-Hit': str(cache_hit)})
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  else:
102
  usage_guide = """
103
  <html>
 
118
  try:
119
  response = await handler(request)
120
  end_time = datetime.datetime.now()
121
+
122
+ timestamp = end_time.strftime('%Y-%m-%d %H:%M:%S')
123
+ client_ip = request.remote
124
+ target_url = request.query.get('url', '-')
125
+ status_code = response.status
126
+ proxy_count = response.headers.get('X-Proxy-Count', '0')
127
+ cache_hit = "Hit" if response.headers.get('X-Cache-Hit') == 'True' else "Miss"
128
+
129
+ log_message = f"{timestamp} - {client_ip} - \"{request.method} /?url={target_url}\" - Status: {status_code} - Proxies: {proxy_count} - Cache: {cache_hit}"
130
+ print(log_message, flush=True)
131
+
132
  return response
133
  except Exception as e:
134
  end_time = datetime.datetime.now()