from flask import Flask, request, jsonify, render_template from bs4 import BeautifulSoup import requests app = Flask(__name__) @app.route('/') def index(): return '

OK

' @app.route('/proxy') def proxy(): url = request.args.get('url') if not url: return jsonify({'error': 'URL parameter is missing'}), 400 try: headers = {key: value for (key, value) in request.headers if key != 'Host'} cookies = request.cookies method = request.method data = request.get_data() response = requests.request( method=method, url=url, headers=headers, cookies=cookies, data=data, # allow_redirects=False ) print(response.headers.items()) if response.headers.get('content-type', '').startswith('text/html'): soup = BeautifulSoup(response.text, 'html.parser') for tag in soup.find_all(href=True): tag['href'] = '/proxy?url=' + tag['href'] for tag in soup.find_all(src=True): tag['src'] = '/proxy?url=' + tag['src'] content = soup.prettify(formatter="html") return render_template("forward.html", content=content) else: return Response(response.content, status=response.status_code) except requests.RequestException as e: return jsonify({'error': str(e)}), 500 if __name__ == '__main__': app.run(host="0.0.0.0", port=7860) # Use 'adhoc' to enable HTTPS locally