Включення та завантаження списку проксі в розгорнутому проєкті Scrapy
Включіть ресурс списку проксі Scrapy у дистрибутив і завантажуйте його за розташуванням пакета, а не за розгорнутим робочим каталогом.
Файл проксі поруч із клоном розробки не обов'язково присутній у розгорнутому пакеті сканера. Є два завдання: включити байти в дистрибутив, а потім знайти їх у встановленому пакеті.
Для проєкту Setuptools з crawl_app/resources/proxies.txt усередині його Python-пакета запис у pyproject.toml може включити його:
[tool.setuptools.package-data]
crawl_app = ["resources/*.txt"]
Об'єднайте це з наявною конфігурацією пакета проєкту. Інший бекенд збірки має власний інтерфейс включення даних.
Для проміжного програмного забезпечення, здатного споживати рядки endpoint, Python 3.11+ може читати ресурс пакета безпосередньо:
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()]
Використовуйте фактичну назву пакета й перевіряйте очікуваний формат URL у читачі. Для розповсюджуваних публічних даних endpoint використовуйте адреси з безкоштовного списку проксі у протоколі та форматі URL, яких очікує проміжне програмне забезпечення. Пошук не залежить від поточного робочого каталогу розгортання.
Налаштування PROXY_LIST від третьої сторони може вимагати шляху файлової системи замість цих рядків. Використовуючи importlib.resources.as_file для цього інтерфейсу, тримайте його контекст відкритим, доки проміжному програмному забезпеченню потрібен вилучений файл. Повернення тимчасового шляху після закриття контексту може призвести до втрати ресурсу.
Зберігайте виробничі списки з обліковими даними в призначеному для розгортання сховищі секретів або конфігурації. Дані пакета підходять для розповсюджуваних даних endpoint, а не для припущення, що все, упаковане з кодом, залишається приватним.