Eine Proxydatei neben einem Entwicklungs-Checkout ist nicht automatisch im bereitgestellten Paket des Crawlers enthalten. Es sind zwei Aufgaben: die Bytes in die Distribution aufnehmen und sie dann im installierten Paket finden.

Für ein Setuptools-Projekt mit crawl_app/resources/proxies.txt innerhalb seines Python-Pakets kann ein pyproject.toml-Eintrag sie einbinden:

[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]

Führen Sie dies mit der vorhandenen Paketkonfiguration des Projekts zusammen. Ein anderes Build-Backend hat seine eigene Schnittstelle zur Dateneinbindung.

Für Middleware, die Endpoint-Strings verarbeiten kann, kann Python 3.11+ die Paketressource direkt lesen:

from importlib.resources import files

text = files('crawl_app').joinpath('resources', 'proxies.txt').read_text(
    encoding='utf-8'
)
proxy_urls = [line.strip() for line in text.splitlines() if line.strip()]

Verwenden Sie den tatsächlichen Paketnamen und validieren Sie das erwartete URL-Format im Leser. Für verteilbare öffentliche Endpoint-Daten verwenden Sie Adressen aus der kostenlosen Proxyliste im von der Middleware erwarteten Protokoll- und URL-Format. Die Suche hängt nicht vom aktuellen Arbeitsverzeichnis der Bereitstellung ab.

Eine PROXY_LIST-Einstellung eines Drittanbieters kann einen Dateisystempfad statt dieser Strings erfordern. Wenn Sie importlib.resources.as_file für diese Schnittstelle verwenden, halten Sie dessen Kontext offen, solange die Middleware die extrahierte Datei benötigt. Die Rückgabe eines temporären Pfads nach dem Schließen des Kontexts kann die Ressource verlieren.

Bewahren Sie produktive Listen mit Anmeldedaten im vorgesehenen geheimen Speicher oder in der Konfigurationsablage der Bereitstellung auf. Paketdaten eignen sich für verteilbare Endpoint-Daten, nicht für die Annahme, dass alles, was mit Code gebündelt wird, privat bleibt.

Ähnliche Artikel