Войдите в систему моделирования Python, чтобы узнать (последняя версия)

задняя часть Python JavaScript регулярное выражение

Зачем писать эту статью?
(главным образом потому, что кто-то из группы qq пытается симулировать вход в Zhihu, но безуспешно). сложность была значительно улучшена.

начать захват

Сначала откройте домашнюю страницу Zhihu, затем введите пароль учетной записи, войдите в систему (не забудьте ввести неправильный пароль)

Итак, мы можем видеть заголовок запроса (заголовок запроса выглядит следующим образом)

Мы обнаружили, что эти заголовки запросов отличаются от обычных (в красной рамке)

  1. authorization(Похоже, он должен быть сгенерирован js, см. далее
  2. Content-Type(Сзади есть еще border=xxx. Что это значит? Посмотрите параметры запроса позже.
  3. cookie: обратите внимание на это, файл cookie не пуст перед входом в систему, что указывает на то, что перед входом в систему должна быть выполнена операция set-cookie.
  4. x-udid,x-sxrftokenЭти два параметра являются проверочными, и предполагается, что их можно найти в исходном коде веб-страницы.

Посмотрите еще раз параметры запроса

Вы можете видеть, что параметры отображаются в виде полезной нагрузки.

Люди, увидевшие это впервые, вероятно, будут ошеломлены.

Это должно быть объединено с запросом

Content-Type:

multipart/form-data; boundary=----WebKitFormBoundary2KNsyxgtG28t93VF

приди и посмотри

multipart/form-dataЭто метод отправки формы, а следующая граница = xxx — это способ разделить форму. Что это значит? Просто посмотрите на простой маленький пример, и вы поймете

------WebKitFormBoundary2KNsyxgtG28t93VFОн разделен на разные параметры, поэтому вы можете просто игнорировать его (это определяется границей за Content-Type выше, вы можете изменить ее по своему желанию)

После удаления разделительной линии приведенное выше эквивалентноclient_id=c3cef7c66a1843f8b3a9e6a1e3160e20,

grant_type=password.

Тогда эту полезную нагрузку легко понять.

Давайте посмотрим, какие параметры есть в сумме.

Параметров довольно много, вы можете видеть, что многие параметры фиксированы, такие как номер счета, пароль, временная метка и т.д.

Есть два client_id, подписи которых изменились

начать искать параметры

authorization:

В хроме напрямую нажимаем ctrl+shift+f (глобальный поиск, поиск по js, css и т.д.), видим, что обыскали, и написано прямо в js, а потом просто меняем аккаунт и хватаем пакет еще раз, и обнаруживаем, что значение авторизации все еще фиксировано, значит, авторизация написана непосредственно в js, а не динамически модифицируется (тогда мы уже нашли значение авторизации)

cookie:

Перед входом в систему я обнаружил, что значение файла cookie не является пустым, что указывает на то, что после открытия веб-страницы должна быть выполнена операция установки файлов cookie.Если мы хотим проверить, сначала откройте браузер в режиме инкогнито (в основном, чтобы очистить все предыдущие файлы cookie, не отвлекайтесь), затем включитеzhihu.com, мы обнаружили, что у него есть несколько действий set-cookie

Затем, если мы хотим смоделировать, очень простой способ — напрямую использовать request.session.

x-udid,x-sxrftoken:

Как правило, этот параметр проверки находится в исходном коде веб-страницы, поэтому просмотрите исходный код веб-страницы напрямую.

Вы можете видеть, что он был найден. Далее следует, как узнать это. Вы можете использовать обычный или xpath, чтобы найти его.

client_id:

Вы обнаружите, что client_id точно такой же, как авторизация выше

signature:

Или используйте ctrl+shift+f для глобального поиска

Я обнаружил, что нашел, но параметры динамически генерируются js...

В основном, чтобы найти, как зашифровать, а затем использовать Python для его имитации.

Шаг 1: Загрузите этот js, отформатируйте его (улучшите внешний вид кода)

Шаг 2: Используйте скрипку, чтобы заменить исходный js и использовать только что отформатированный js

Шаг 3: Отлаживайте медленно. . . Пока я не узнаю, как генерировать...

Шаги, вероятно, такие

但是假如你js像我一样很渣的话,你可以直接找到这段加密的js,然后Python执行这段js就可以了。 . .

Выше мы нашли все параметры, которые должны искать, а дальше осталось только смоделировать отправку.

Чтобы получить код, обратите внимание на общедоступную учетную запись WeChat [совместное использование поискового робота python] и отправьте «код входа в систему zhihu», чтобы увидеть ~~~