feat(bizin): scraper final com bypass Cloudflare + monitor de auto-reinício
- bizin_scraper_final.py: scraper híbrido curl_cffi + undetected-chromedriver com suporte a distritos e categorias, escrita segura (fsync) e enriquecimento externo - monitor_scraper.sh: watchdog que reinicia o processo automaticamente em crash - IMPLEMENTADO.md + README.md: actualizados para reflectir estado Abril 2026 - GEMINI.md: instruções técnicas de automação - test_curl.py, test_curl_clean.py, test_playwright.py: scripts de teste/diagnóstico Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
|
||||
from curl_cffi import requests
|
||||
|
||||
def test_curl():
|
||||
url = "https://pt.bizin.eu/por/Lisboa-1069"
|
||||
print(f"Acedendo a {url} com curl_cffi...")
|
||||
try:
|
||||
# Tentar diferentes impersonations
|
||||
for imp in ["chrome120", "chrome110", "safari15_5", "edge101"]:
|
||||
print(f"Tentando com impersonate='{imp}'...")
|
||||
resp = requests.get(url, impersonate=imp, timeout=20)
|
||||
print(f"Status: {resp.status_code}")
|
||||
if "Just a moment..." in resp.text or "Um momento…" in resp.text:
|
||||
print(f"Bloqueado com {imp}")
|
||||
else:
|
||||
print(f"SUCESSO com {imp}!")
|
||||
print(f"Título: {resp.text[:500]}") # Ver se pegamos o título
|
||||
return
|
||||
except Exception as e:
|
||||
print(f"Erro: {e}")
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_curl()
|
||||
Reference in New Issue
Block a user