Я пытаюсь почистить веб-форум, и у меня возникают проблемы с доступом к страницам, которые находятся за логином. Изучив элементы страницы входа, я обнаружил, что идентификатор элементов ввода имени пользователя и пароля меняется каждый раз, когда я обновляю sh страницу. Моя текущая стратегия состоит в том, чтобы
- Создать и использовать сеанс запросов
- Сделать GET-запрос для страницы входа на форум
- Используйте BeautifulSoup для извлечения идентификаторов имени пользователя и элементы ввода пароля
- Используйте извлеченные идентификаторы в качестве ключей, а имя пользователя и пароль моей учетной записи в качестве значений для запроса полезной нагрузки, который передается в запрос POST для страницы входа в систему
- Выполнить запрос GET для страницы на форуме
Я столкнулся с проблемой на шаге 4: код состояния запроса POST равен 400, что указывает на то, что я что-то делаю не так.
Вот MWE, в котором переменные KIWIFARMS_USERNAME
и KIWIFARMS_PASSWORD
были изменены, чтобы они не были моими реальными именем пользователя и паролем учетной записи:
import os
import requests
from bs4 import BeautifulSoup
# login url for forum, and fake forum credentials (they're real in my script)
LOGIN_URL = 'https://kiwifarms.net/login/'
KIWIFARMS_USERNAME = 'username'
KIWIFARMS_PASSWORD = 'password'
with requests.Session( ) as session:
# step 1
r = session.get( LOGIN_URL )
# step 2
soup = BeautifulSoup( r.content, 'lxml' )
# step 3
username_id = soup.find( 'input', { 'autocomplete' : 'username' } )[ 'id' ]
password_id = soup.find( 'input', { 'type' : 'password' } )[ 'id' ]
payload = {
username_id: KIWIFARMS_USERNAME,
password_id : KIWIFARMS_PASSWORD }
# step 4
post = session.post( LOGIN_URL, data = payload )
# failure of step 4 (prints 400)
print( post.status_code )
Я много смотрел страниц и ссылок, включая это , это , это и это , но я до сих пор не могу понять, почему мой пост запрос получает ошибку 400 Bad Request.
У меня есть версия этой работы в Selenium, но я бы очень хотел знать, какую ошибку я совершаю, и заставить ее работать с помощью запросов. Любая помощь будет принята с благодарностью.