chore(compliance): ta bort den forbjudna WAF-bypass-/evasionstacken (CLAUDE.md §1) #7
Closed
admin
wants to merge 1 commits from
compliance/remove-evasion-stack into main
pull from: compliance/remove-evasion-stack
merge into: :main
:main
:fix/prod-restore-2026-09-29
:fix/source-bundle-20261104
:fix/prod-evidence-2026-09-29
:docs/deploy-runbook
:fix/keycloak-portal-trust-20261102
:fix/smoke-main-sha
:chore/optimize-pipelines
:chore/remove-stale-package-lock-20261101
:fix/trivy-skip-sbom-evidence-20261101
:fix/doctor-fixture-v3-20261101
:fix/next-16.4.1-20261031
:wip/asus-20261005/Documents_0pt-9cad5f9
:feat/import-dispatch-policy
:opt-vehiq-work-salvage-20260927/0pt-p060-p068_0pt-uncommitted-wip
:fix-chore/normalize-sax3l-ci-refs-20260925
:salvage/20260925/siax-arkiv/siax-work/0pt-feature/0pt-remove-noncompliant-scrapers
:salvage/20260925/siax-arkiv/siax-platforms-work/0pt-feat/p014-data-os-hardening
:salvage/20260925/siax-arkiv/siax-work/0pt-oai/devos-band29-0pt
:salvage/20260925/siax-arkiv/siax-work/0pt-stash-stash0
:feat/golden-standard-scaffold
:docs/coolify-deploy-hook-is-live-opus5
:docs/bi-canonical-stack-correction-opus5
:feat/p060-p068-ingestion-plane
:chore/siax-repo-v3-manifest
:feat/p014-data-os-hardening
:feat/p010-data-os-completion
:feat/siax-platforms-p0-data-os
:fix/coolify-app-id
:docs/repo-hygiene-v2-standard
:fix/honest-health-check
:docs/compliance-blockers-2026-08-11
:security/auth-gate-anonymous-api-routes
:fix/remove-vercel-deploy-target
:unify/github-main-2026-07-28
:docs/1p-egress-measurement-point
:foundation/hardening
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Varför
CLAUDE.md§1 ("Legal sourcing only") förbjuder uttryckligen att vi bygger, behåller eller utökar: WAF-/botskyddsbypass (inkl. FlareSolverr, "stealth"-browsers, undetected-*), fingerprint-/proxyrotation för att kringgå blockeringar, skrapning bakom inloggning och automatiserad falskkontoskapning. Samma förbud upprepas iREADME.md,docs/02-architecture.md,docs/06-data-engine.mdochdocs/07-dependencies.md.Trädet hade drivit ifrån policyn — konkret sedan commit
4a164c5(2026-07-13), som ordagrant heter "refactor: remove compliance restrictions". Den här PR:en återställer trädet så att det matchar repots egen uttalade policy. Förbudstexten iCLAUDE.mdär oförändrad och byte-identisk mot båda remotes; den har aldrig försvagats.Detta är en kirurgisk borttagning. Den rör inte auth-härdningen.
Vad som tagits bort
services/scrapers/— hela motornwaf_bypass.py(316 rader)ProxyRotator+_load_free_proxies(gratis proxypool från 3 GitHub-listor),get_tor_proxy(SOCKS5),try_flaresolverr,cloudscraper,curl_cffi-impersonationsnivåer (chrome124/chrome110/edge99/safari17), Cloudflare-challengedetektering, Playwright som sista utvägengine.py(243 rader)engine_v2.py(256 rader)METHOD_RANKING— en tabell som mappar varje enskild källa till det TLS-fingerprint som slår igenom just den sajtens botskydd — samtScraperEngine-orkestreringenrun_pipeline.py(235 rader)ScraperEngineper land/källarun_benchmark.py(86 rader)clickhouse_pipeline.py(261 rader)scrape_log.cf_blocked,scrape_stats.cf_blocked)s3_sync.py(57 rader)Dockerfile+docker-compose.ymlpython -m scrapers.run_pipelinesom 5 långlivade tjänster + s3-syncrequirements.txtcurl_cffiochcloudscraper__pycache__/engine.cpython-314.pyc__pycache__/engine_v2.cpython-314.pycengine_v2.pycinnehåller helaMETHOD_RANKING,impersonate,cloudscraperochcheck_cf_blocked— den var körbar som den låg, även utan källkoden. Hade lätt missats.services/infra/docker-compose.data-stack.ymlflaresolverr(ghcr.io/flaresolverr/flaresolverr:latest, port 8191) — borttagentor-proxy(dperson/torproxy:latest, SOCKS5 9050 + control 9051) — borttagenclickhouse,trino,supersetochpostgresär orörda. Rubrikkommentaren som listade FlareSolverr/Tor som en del av stacken är rättad, och en explicit "återinför inte"-not ligger kvar på platsen.Vad som rättats
services/api/workers/adaptive_router.pyinleddes med:Själva koden hade aldrig någon bypass-nivå — det var bara en tabell
MARKET_SOURCES+plan_for_market(). Det var alltså docstringen som ljög, inte logiken.Den ursprungliga, compliant docstringen kunde återställas ordagrant ur den incheckade
.pyc-filen, som är äldre än4a164c5och därför bevarade förlagan:Även funktionsdocstringen är återställd till
"Return the ordered, compliant source plan for a market."(tidigare"...Deep scraping via b0ts service.").docs/architecture/ARCHITECTURE.mdbeskrev den borttagna koden som närvarande (§1 "Uttryckligt förbud som koden BRYTER MOT", lucka S9, deploy-tabellen §5 och öppen fråga 2). Alla fyra ställena är uppdaterade så att docen är korrekt efter borttagningen — S9 är markerad åtgärdad, inte raderad, så historiken går att följa.Vad som medvetet behållits
services/api/sources/connectors.py— det compliant sourcinglagret. Artighttpx-klient som identifierar sig (0pt-data-engine/0.1 (+https://0pt.app; SIAX Technology AB; hej@siax.io)), respekterar timeouts/rate limits och returnerar provenance per fält. Detta är ersättningen och den är helt orörd, liksomservices/api/requirements.txt("compliant stack only. No bypass/stealth/proxy libs").services/scrapers/output/(50 filer, 8,4 MB) — data, inte kapacitet. Poster från Norges officiella öppna Enhetsregister-API (data.brreg.no), som är öppet licensierat och inte kräver någon bypass för att läsas. Radering av data ingår inte i en kapacitetsborttagning.⚠️ Öppen fråga till dig, Simon: datan hämtades genom den nu borttagna motorn —
METHOD_RANKING["no-brreg-api"]skickade även detta officiella API viacloudscraper/curl_cffi-impersonation, helt i onödan. Innehållet är öppen offentlig data, men proveniensen är därmed fläckad. Beslut om att hämta om via en ren compliant klient eller kasta datan bör tas separat — jag har inte tagit det åt dig. Dokumenterat iservices/scrapers/README.md.Verifiering
pnpm run test(vitest)pnpm run typecheck(tsc -p tsconfig.check.json)pnpm run build(next build)Inga testfiler rörda, inga hängande importer — inget i repot importerade
services/scrapers/(verifierat med grep över.py/.ts/.tsx/.yml/.json/.md); paketet var redan frikopplat och refererades bara frånARCHITECTURE.md.Auth-arbetet är intakt
Explicit kontrollerat att fail-closed-auth-vågorna inte rörts:
src/auth/zitadel.ts(213 rader) — finns kvartests/auth/zitadel.test.ts+tests/auth/context.test.ts— finns kvarvitest.config.ts— finns kvarDiffen är 17 filer / 1 655 borttagna rader, och varje radering ligger under
services/scrapers/.Grep efter borttagning
waf_bypass,flaresolverr,tor-proxy,proxy_rotation,rotate_proxy,undetected,cloudscraper,impersonate,__cf_chl— samt en bredare svepning eftercurl_cffi,nodriver,socks5,ProxyRotator,rotate_headers,challenge-form,"Just a moment".proxy_rotation,rotate_proxy,impersonateoch__cf_chlger noll träffar i hela trädet. Samtliga kvarvarande träffar är antingen policytext (CLAUDE.md,docs/*,README.md) eller negativa påståenden av typen "finns inte här, lägg aldrig till" — inga är exekverbar kod.Att göra härnäst (utanför denna PR)
services/scrapers/README.mdpekade tidigare påb0ts-repot som den nya hemvisten för skrapkoden, med körinstruktioner. Den pekaren är borttagen här, menb0tsligger utanför den här PR:ens omfång och bör granskas mot samma §1-krav.__pycache__/är fortfarande spårat på flera ställen i repot (services/api/**) och saknas i.gitignore. Ingen av dem innehåller förbjuden kod — jag lät dem vara för att hålla diffen kirurgisk — men incheckad bytecode är värd en egen städning.🤖 Generated with Claude Code
Pull request closed