Today some testing with these python modules: flask, request and playwright.
I used pip to install flask python package:
pip install flask
Collecting flask
Downloading flask-3.1.1-py3-none-any.whl.metadata (3.0 kB)
...
Installing collected packages: markupsafe, itsdangerous, blinker, werkzeug, jinja2, flask
Successfully installed blinker-1.9.0 flask-3.1.1 itsdangerous-2.2.0 jinja2-3.1.6 markupsafe-3.0.2 werkzeug-3.1.3
pip install requests
...
Installing collected packages: urllib3, idna, charset_normalizer, certifi, requests
Successfully installed certifi-2025.6.15 charset_normalizer-3.4.2 idna-3.10 requests-2.32.4 urllib3-2.5.0
pip install playwright
Collecting playwright
...
Installing collected packages: pyee, greenlet, playwright
Successfully installed greenlet-3.2.3 playwright-1.52.0 pyee-13.0.0
...
playwright install
Downloading Chromium 136.0.7103.25 ...
This will download a lot fo files and the will install the playwright tool.
First script is simple one will try to get cloudflare header on default ip:
from flask import Flask, request
app = Flask(__name__)
@app.route("/")
def detecteaza_ipuri():
ip_client = request.headers.get('CF-Connecting-IP', 'Necunoscut')
ip_cloudflare = request.remote_addr
return (
f"IP real vizitator: {ip_client}
"
f"IP Cloudflare (vizibil de server): {ip_cloudflare}"
)
if __name__ == "__main__":
app.run(debug=True)
The next one will check more ...
from flask import Flask, request
import requests
import ipaddress
app = Flask(__name__)
def este_ip_cloudflare(ip):
try:
raspuns = requests.get("https://www.cloudflare.com/ips-v4")
raspuns.raise_for_status()
subneturi = raspuns.text.splitlines()
for subnet in subneturi:
if ipaddress.ip_address(ip) in ipaddress.ip_network(subnet):
return True
return False
except Exception as e:
return f"Eroare la verificarea IP-ului Cloudflare: {e}"
@app.route("/")
def detecteaza_ipuri():
ip_client = request.headers.get('CF-Connecting-IP', 'Necunoscut')
ip_cloudflare = request.remote_addr
rezultat = este_ip_cloudflare(ip_cloudflare)
return (
f"IP real vizitator: {ip_client}
"
f"IP Cloudflare (forwarder): {ip_cloudflare}
"
f"Este IP-ul din rețeaua Cloudflare? {'DA' if rezultat == True else 'NU' if rezultat == False else rezultat}"
)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
Now, the script with the request python module:
import requests
url = "https://cobalt.tools"
headers = {
"User-Agent": "Mozilla/5.0", # Simulează un browser real
}
try:
r = requests.get(url, headers=headers, timeout=10)
content = r.text.lower()
print(f"Cod răspuns HTTP: {r.status_code}")
if "cloudflare" in content or "cf-ray" in content or "attention required" in content:
print("Cloudflare a intermediat cererea sau a blocat-o cu o pagină specială.")
else:
print("Cererea a fost servită normal.")
except Exception as e:
print(f"Eroare la conexiune: {e}")
The last one will use the playwright python module:
import sys
import re
from urllib.parse import urlparse
from pathlib import Path
from playwright.sync_api import sync_playwright
def converteste_url_in_nume_fisier(url):
parsed = urlparse(url)
host = parsed.netloc.replace('.', '_')
path = parsed.path.strip('/').replace('/', '_')
if not path:
path = 'index'
return f"{host}_{path}.txt"
if len(sys.argv) != 2:
print("Utilizare: python script.py https://exemplu.com")
sys.exit(1)
url = sys.argv[1]
fisier_output = converteste_url_in_nume_fisier(url)
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
pagina = browser.new_page()
pagina.goto(url, wait_until='networkidle')
continut = pagina.content()
Path(fisier_output).write_text(continut, encoding='utf-8')
browser.close()
print(f"Conținutul a fost salvat în: {fisier_output}")
This will create a file with the source code of web page.