Add simple proxy for replacing inline extension with 4chan X.
This commit is contained in:
parent
f8fef832bd
commit
c5eb74ba5f
41
tools/proxy.py
Executable file
41
tools/proxy.py
Executable file
@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import http.server, http.client, sys, re
|
||||||
|
|
||||||
|
proxyConfig = b'''function FindProxyForURL(url, host) {
|
||||||
|
if (/^http:\/\/s\.4cdn\.org\/(js\/extension\.min\.\d+\.js)?$/.test(url)) {
|
||||||
|
return 'PROXY localhost:8000';
|
||||||
|
}
|
||||||
|
return 'DIRECT';
|
||||||
|
}
|
||||||
|
'''
|
||||||
|
|
||||||
|
class ExtensionReplacer(http.server.BaseHTTPRequestHandler):
|
||||||
|
def do_HEAD(self):
|
||||||
|
self.do_GET()
|
||||||
|
|
||||||
|
def do_GET(self):
|
||||||
|
if self.path == '/proxy.pac':
|
||||||
|
self.send_response(200, 'OK')
|
||||||
|
self.send_header('Content-Length', len(proxyConfig))
|
||||||
|
self.end_headers()
|
||||||
|
if self.command != 'HEAD':
|
||||||
|
self.wfile.write(proxyConfig)
|
||||||
|
elif re.match(r'http://s\.4cdn\.org/js/extension.min.\d+.js$', self.path):
|
||||||
|
self.send_response(302, 'Found')
|
||||||
|
self.send_header('Location', 'https://ccd0.github.io/4chan-x/builds/4chan-X.user.js')
|
||||||
|
self.end_headers()
|
||||||
|
else:
|
||||||
|
conn = http.client.HTTPConnection('s.4cdn.org')
|
||||||
|
conn.request(self.command, self.path, headers=self.headers)
|
||||||
|
response = conn.getresponse()
|
||||||
|
self.send_response(response.status, response.reason)
|
||||||
|
for header, value in response.getheaders():
|
||||||
|
if header not in ('Date', 'Connection'):
|
||||||
|
self.send_header(header, value)
|
||||||
|
self.end_headers()
|
||||||
|
self.wfile.write(response.read())
|
||||||
|
conn.close()
|
||||||
|
|
||||||
|
port = int(sys.argv[1]) if 1 < len(sys.argv) else 8000
|
||||||
|
httpd = http.server.HTTPServer(('localhost', port), ExtensionReplacer)
|
||||||
|
httpd.serve_forever()
|
||||||
Loading…
x
Reference in New Issue
Block a user