Update server.py

This commit is contained in:
Namhyeon Go 2024-02-17 21:21:24 +09:00 committed by GitHub
parent ef690c705b
commit d5dc43a9a9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -13,6 +13,7 @@ import base64
import json import json
import ssl import ssl
import time import time
import re
from subprocess import Popen, PIPE from subprocess import Popen, PIPE
from datetime import datetime from datetime import datetime
from platform import python_version from platform import python_version
@ -129,12 +130,14 @@ def proxy_connect(webserver, conn):
return (conn, data) return (conn, data)
def proxy_check_filtered(response, webserver, port): def proxy_check_filtered(response, webserver, port):
filtered = response.find(b'@misskey.io') > -1 or response.find(b'ctkpaarr') > -1 text = response.decode(client_encoding, errors='ignore')
filtered = text.find('@misskey.io') > -1 or text.find('ctkpaarr') > -1 or re.search(r'\b\w{10}@\w+\.\w+\b', text)
if filtered: if filtered:
print ("[*] filtered from %s:%s" % (webserver.decode(client_encoding), str(port))) print ("[*] filtered from %s:%s" % (webserver.decode(client_encoding), str(port)))
print ("[*] ====== start response data =====") print ("[*] ====== start response data =====")
print ("%s" % (response.decode(client_encoding))) print ("%s" % (text))
print ("[*] ====== end response data =====") print ("[*] ====== end response data =====")
return filtered return filtered
@ -179,11 +182,14 @@ def proxy_server(webserver, port, scheme, method, url, conn, addr, data):
if not chunk: if not chunk:
break break
response += chunk response += chunk
if proxy_check_filtered(response, webserver, port): #if proxy_check_filtered(response, webserver, port):
break # break
conn.send(chunk) #conn.send(chunk)
i += 1 i += 1
if proxy_check_filtered(response, webserver, port):
conn.sendall(response)
print("[*] Received %s chunks. (%s bytes per chunk)" % (str(i), str(buffer_size))) print("[*] Received %s chunks. (%s bytes per chunk)" % (str(i), str(buffer_size)))
else: else:
@ -212,11 +218,14 @@ def proxy_server(webserver, port, scheme, method, url, conn, addr, data):
relay = requests.post(server_url, headers=proxy_data['headers'], data=raw_data, stream=True) relay = requests.post(server_url, headers=proxy_data['headers'], data=raw_data, stream=True)
for chunk in relay.iter_content(chunk_size=buffer_size): for chunk in relay.iter_content(chunk_size=buffer_size):
response += chunk response += chunk
if proxy_check_filtered(response, webserver, port): #if proxy_check_filtered(response, webserver, port):
break # break
conn.send(chunk) #conn.send(chunk)
i += 1 i += 1
if proxy_check_filtered(response, webserver, port):
conn.sendall(response)
print("[*] Received %s chunks. (%s bytes per chunk)" % (str(i), str(buffer_size))) print("[*] Received %s chunks. (%s bytes per chunk)" % (str(i), str(buffer_size)))
print("[*] Request and received. Done. %s" % (str(addr[0]))) print("[*] Request and received. Done. %s" % (str(addr[0])))