Перейти к содержанию

Машинный перевод

Эта страница была автоматически переведена ИИ и может содержать ошибки. Если что-то неясно, обращайтесь к английскому источнику.

Английский источник · Сообщить о проблеме перевода

Конфигурация

pplx-export хранит ваши идентификационные данные — реестр учетных записей (отображаемые имена, адреса электронной почты для входа, идентификаторы пользователей) и пространство BOT — в пользовательском TOML-файле, который находится вне репозитория. Эта страница описывает, где находится этот файл, все поля, которые он принимает, что происходит, когда он отсутствует, и как реестр управляет обработкой cookie для нескольких учетных записей.

a. Почему конфигурация находится вне репозитория

Реестр учетных записей и пространство BOT являются личными данными и никогда не фиксируются в репозитории (pplx_export/config.py:7-12). Репозиторий поставляет только шаблон-заполнитель, config.example.toml; ваши реальные значения помещаются в личную копию. Все остальное, что нужно инструменту — домен сайта, URL-адреса API, корневой каталог архива по умолчанию — является константой кода (pplx_export/config.py:50-58), а не пользовательской конфигурацией.

TOML содержит только идентификационные данные. Выбор источника cookie и транспорта осуществляется через флаги CLI при каждом вызове, а не поля конфигурации — см. Флаги CLI, а не поля конфигурации ниже.

b. Расположение и приоритет загрузки

configure() (pplx_export/config.py:113) определяет путь к конфигурации со следующим приоритетом (pplx_export/config.py:95-110):

Приоритет Источник Считается явным
1 Флаг CLI --config PATH да
2 Переменная окружения PPLX_EXPORT_CONFIG да
3 ~/.config/pplx-export/config.toml (путь по умолчанию) нет

«Явный» важен для поведения при ошибке, когда файл отсутствует — см. режим пониженной функциональности. Оба варианта CLI перезагружают конфигурацию в строгом режиме после разбора аргументов (pplx_export/cli.py:223, pplx_export/ask_cli.py:278); загрузка во время импорта (pplx_export/config.py:174-179) отказоустойчива, поэтому импорт пакета никогда не завершается ошибкой из-за отсутствующего файла.

c. Создание вашей конфигурации

Автоматическая альтернатива

pplx-export init может создать этот файл автоматически — он обнаруживает учетные записи, в которые выполнен вход, из cookie вашего браузера и записывает TOML с правами 0600. См. pplx-export → init.

mkdir -p ~/.config/pplx-export
cp config.example.toml ~/.config/pplx-export/config.toml
chmod 600 ~/.config/pplx-export/config.toml

Затем отредактируйте копию. Шаблон использует чистые заполнители — скопируйте структуру, замените каждое значение:

# Default account used when --account is not given (a key of [accounts.<name>] below)
default_account = "alice"

# Account registry: key = account username (the username in thread URLs / library)
[accounts.alice]
# Full display name: used for archive directory naming (web_archive/<display name>/…)
display_name = "Alice Example"
# Login email: verifies cookie ownership
email = "alice@example.com"
# Account uid (required for thread-viewed telemetry)
user_id = "00000000-0000-4000-8000-0000000000aa"

[accounts.bob]
display_name = "Bob Example"
email = "bob@example.com"
user_id = "00000000-0000-4000-8000-0000000000bb"

# BOT space: where threads created by pplx-ask are collected after completion
[bot_space]
uuid = "00000000-0000-4000-8000-0000000000b0"
slug = "bot-EXAMPLE"

Стиль заполнителей: alice/bob — вымышленные имена пользователей учетных записей, адреса электронной почты используют example.com, а UUID — форму со всеми нулями 00000000-0000-4000-8000-…. В вашем реальном файле ключ таблицы должен быть фактическим именем пользователя учетной записи, как оно отображается в URL-адресах обсуждений и вашей библиотеке.

Храните в тайне

Реальная конфигурация содержит личные данные (адреса электронной почты, идентификаторы пользователей). Рекомендуемые права доступа — 0o600; никогда не фиксируйте ее в каком-либо git-репозитории (config.example.toml:4-6).

d. Справочник полей

d.1 Верхний уровень

Поле Тип Значение
default_account строка Ключ одной таблицы [accounts.<name>], используемый, когда --account не указан (pplx_export/commands/common.py:84-85). Пусто/отсутствует = режим пониженной функциональности.
archive_root строка Необязательный. Корневой каталог вывода архива, используемый как запасной вариант для --out, чтобы повседневные команды могли опускать --out. Приоритет: --out > archive_root > ./web_archive (pplx_export/config.py, загружается в ARCHIVE_ROOT; разрешается в cli.py / ask_cli.py). ~ раскрывается.
[models] (таблица) таблица Автоматически управляемая, не создаваемая вручную. Обновляемый каталог моделей, записываемый pplx-ask models --refresh и заполняемый pplx-export init; он переопределяет фиксированную базовую версию в pplx_export/sites/perplexity/platform.py. Ключи: last_refreshed (UTC), source_version, auto_refresh (логическое), mode_defaults, council_defaults, search_models и полный [models.catalog] (id → {label, provider, mode}). Запросы читают его (с базовой версией platform.py в качестве запасного варианта); TTL в 7 дней выводит напоминание об обновлении или автоматически обновляется, когда auto_refresh = true. Циклическая запись сохраняет ваши другие таблицы и комментарии (через зависимость времени выполнения tomlkit) и остается 0600.

d.2 [accounts.<name>]

Одна таблица на учетную запись; <name> — это имя пользователя учетной записи. Реестр загружается в три словаря, ключом которых является имя пользователя: ACCOUNT_DISPLAY_NAMES, ACCOUNT_EMAIL, ACCOUNT_UID (pplx_export/config.py:65-75).

Поле Тип Обязательное Значение
display_name строка нет Полное отображаемое имя, используется для именования каталогов архива (web_archive/<display name>/…); при отсутствии используется имя пользователя. См. Структура архива.
email строка рекомендуется Адрес электронной почты для входа. Транспорт проверяет принадлежность cookie по нему, предотвращая «экспорт для учетной записи B с сессией учетной записи A» (pplx_export/config.py:69-72). При несовпадении инструмент перечисляет токены сессии для каждой учетной записи в браузере и переключается автоматически — см. Модель cookie для нескольких учетных записей.
user_id строка для телеметрии pplx-ask Идентификатор учетной записи, необходимый для телеметрии просмотров обсуждений (pplx_export/config.py:73-75). Прочитайте его из GET /api/auth/linked-accounts, который возвращает user_id / email / display_name для каждой учетной записи, в которую выполнен вход — см. Аутентификация API.

d.3 [bot_space]

Пространство BOT — это точка сбора для обсуждений, созданных pplx-ask после их завершения (pplx_export/config.py:76-79). Создайте само пространство с помощью pplx-ask space-create (см. pplx-ask), затем зарегистрируйте его здесь.

Поле Тип Значение
uuid строка UUID пространства. pplx-ask перемещает завершенные обсуждения сюда (pplx_export/ask_cli.py:156-158); если пусто, шаг перемещения пропускается.
slug строка URL-слаг пространства. Загружается в BOT_SPACE_SLUG (pplx_export/config.py:79); CLI времени выполнения не читает его — его использует инструмент обслуживания тестовых данных, создавая из него пару для замены идентификаторов (tests/scrub_fixtures.py:446-447).

d.4 Флаги CLI, а не поля конфигурации

TOML не содержит настроек транспорта или cookie. Они выбираются при каждом вызове:

Аспект Где задается
Путь к файлу конфигурации --config PATH, или PPLX_EXPORT_CONFIG
Источник cookie --cookies-from BROWSER / --cookies FILE
Транспорт --transport cookie\|webbridge (только pplx-export; по умолчанию cookie)
Пропустить проверку учетной записи при запуске --skip-auth-check (оба варианта) — см. Модель cookie для нескольких учетных записей

Полный справочник флагов см. в pplx-export.

e. Отсутствие конфигурации: режим пониженной функциональности

Если ничего не загружено, реестры на уровне модуля остаются пустыми, а LOADED_CONFIG_PATH равен None (pplx_export/config.py:83-85). Поведение по сценариям (resolve_cli_account, pplx_export/commands/common.py:51-90):

Сценарий Поведение
Нет конфигурации по пути по умолчанию, --account не указан Режим пониженной функциональности: регистрируется предупреждение, и команды выполняются с учетной записью-заполнителем (username='default'); проверка принадлежности электронной почты пропускается. Повседневные автономные команды не затрагиваются (pplx_export/commands/common.py:86-90).
Нет конфигурации, явный --account SystemExit с указанием порядка поиска и ссылкой на config.example.toml (pplx_export/commands/common.py:67-74).
Конфигурация загружена, --account не зарегистрирован SystemExit с указанием загруженного файла и просьбой добавить [accounts.<name>] (pplx_export/commands/common.py:77-82).
Явный путь (--config / переменная окружения) не существует ConfigError в строгом режиме (pplx_export/config.py:140-146).
Файл существует, но не может быть разобран Всегда ConfigError — поврежденная конфигурация не должна незаметно деградировать (pplx_export/config.py:147-150).
--account опущен, конфигурация загружена Используется default_account (pplx_export/commands/common.py:84-85).

Что подразумевается под «автономными командами» и как работа в режиме пониженной функциональности взаимодействует с архивом, подробно описано в Автономные операции.

Если в один и тот же браузер выполнен вход с несколькими учетными записями, хранилище содержит один сессионный cookie для каждой учетной записи, а поле email конфигурации сообщает инструменту, какая из них нужна:

  • Каждая учетная запись, в которую выполнен вход, имеет cookie __Secure-pplx.session.<uid> (ACCOUNT_SESSION_PREFIX, pplx_export/core/cookies/loaders.py:171); суффикс <uid> — это user_id учетной записи.
  • Активная учетная запись — это та, чей токен в данный момент находится в __Secure-next-auth.session-token (ACTIVE_SESSION_COOKIE, pplx_export/core/cookies/loaders.py:172). Переключение учетных записей = запись значения cookie целевой учетной записи в этот cookie — без необходимости в интерфейсе браузера (pplx_export/core/cookies/loaders.py:180-187).
  • При запуске транспорт проверяет GET https://www.perplexity.ai/api/auth/session и сравнивает возвращенный адрес электронной почты с accounts.<name>.email (pplx_export/commands/common.py:126-130).
  • При несовпадении _try_switch_account (pplx_export/commands/common.py:190-215) перечисляет все токены учетных записей в браузере через list_account_tokens (pplx_export/core/cookies/loaders.py:175-206, отдавая предпочтение записям на поддомене www.), пробует каждый из них в __Secure-next-auth.session-token и перестраивает транспорт при первом совпадении.
  • Если ни один токен не совпадает, команда завершается с указанием обоих адресов электронной почты и просьбой сначала выполнить вход в целевую учетную запись в браузере (pplx_export/commands/common.py:142-145) — см. Устранение неполадок.
  • Учетная запись без зарегистрированного email обрабатывается без проверки, с предупреждением, предлагающим вам самостоятельно подтвердить вход в браузер (pplx_export/commands/common.py:146-149).

Полный процесс переключения и семантика конечных точек сессии описаны в Ask и учетные записи и Аутентификация API.

Пропуск проверки (--skip-auth-check). Описанный выше зондирующий запрос сессии при запуске обменивает несколько секунд — иногда минут при плохом сетевом соединении — на защиту от использования «учетной записи B в качестве учетной записи A». Когда вы знаете, что в браузере выполнен вход в правильную учетную запись, --skip-auth-check (общий для pplx-export и pplx-ask) пропускает этот зондирующий запрос полностью и сразу приступает к работе (pplx_export/commands/common.py, make_transport):

  • Нет GET /api/auth/session при запуске, поэтому нестабильная сеть больше не вызывает долгого молчаливого ожидания (теперь с пульсацией) перед первым реальным запросом.
  • Инструмент доверяет той учетной записи, которая в данный момент вошла в систему; упреждающая проверка принадлежности электронной почты и автоматическое переключение между несколькими учетными записями, описанные выше, не выполняются.
  • Отложенная защита: в batch, после накопления общих ошибок экспорта (три сбоя), выполняется однократная проверка учетной записи, которая предупреждает вас о том, что было обнаружено — срок действия cookie истек, учетная запись не соответствует целевой или учетная запись в порядке (значит, ошибки связаны с сетью / ограничением скорости, а не с аутентификацией) (pplx_export/commands/common.py, report_account_status; pplx_export/commands/batch_cmd.py).
  • Компромисс: отложенная проверка обнаруживает cookie с истекшим сроком действия, но она не может обнаружить неправильную, но действительную учетную запись, которая экспортируется без ошибок — с --skip-auth-check вы берете на себя ответственность за то, что вошедшая в систему учетная запись является целевой.

Используйте этот флаг для быстрых, неавтоматизированных запусков с заведомо правильным входом; опускайте его, когда вы полагаетесь на упреждающую защиту принадлежности или автоматическое переключение учетных записей.

После успешной проверки разрешенные cookie кэшируются, чтобы последующие запуски пропускали браузер:

Свойство Значение
Путь <archive root>/index/.cookies.json — следует за --out (pplx_export/commands/common.py:111)
Свежесть 12 часов (CACHE_MAX_AGE_S = 12 * 3600, pplx_export/core/cookies/cache.py:22); устаревший или поврежденный кэш считается отсутствующим
Содержимое fetched_at, source, account_email, cookies (pplx_export/core/cookies/cache.py:62-66)
Запись Атомарно: временный файл создается с режимом 0o600, затем os.replace (pplx_export/core/cookies/cache.py:49-67)
Git Охватывается .gitignore (**/index/.cookies.json)

Порядок разрешения cookie (cookies.resolve, pplx_export/core/cookies/loaders.py:270-302): явный --cookies-from → явный файл --cookies → свежий кэш → автоматическое обнаружение браузеров (edge → chrome → firefox → safari). Кэш обновляется после каждой успешной проверки учетной записи (pplx_export/commands/common.py:150).

h. Защита ваших файлов

  • chmod 600 ваш config.toml — он содержит личные данные (адреса электронной почты, идентификаторы пользователей).
  • Кэш cookie уже записывается с режимом 0o600 инструментом; сессионные cookie являются учетными данными, эквивалентными входу в систему.
  • Если вы вручную создаете файл cookie для --cookies, примените к нему chmod 600.

i. Когда аутентификация не удается

Просроченные cookie, учетная запись, которую не может найти автоматическое переключение, ошибки разрешений связки ключей браузера и другие сбои аутентификации описаны в Устранение неполадок.