Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+4

Ошибка "405 Not Allowed" при попытке авторизоваться на сайте через скрипт на Python

Пишу парсер с авторизацией, но я так понял сайт блокирует POST запрос и я не могу этого сделать, что делать?
Код:

1234567891011121314151617181920
 import requests
 
session = requests.Session() 

login = "my_login" 
password = "my_password" 
authUrl = "https://login.feature.fm/login/" 
 
headers = { 
     
    'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0' 
} 
 
data = { 
    'username': login, 
    'password': password 
} 
 
response = session.post(authUrl, data=data, headers=headers).text
print(response) 

Вот сама ошибка:

12345678
 C:\Users\PC\Scripts\ParserFuture>python main.py 
<html> 
<head><title>405 Not Allowed</title></head> 
<body> 
<center><h1>405 Not Allowed</h1></center> 
<hr><center>nginx/1.23.3</center> 
</body> 
</html> 
По дате
По рейтингу
Аватар пользователя
Новичок

Заходишь на сайт в браузере, нажимаешь F12, авторизуешься и во вкладке "Сеть" внимательно изучаешь, какие именно заголовки (включая куки) и какое тело запроса браузер передаёт серверу и что именно сайт возвращает браузеру.

И воспроизводишь это в Python-запросе.

Для нормально сделанного сайта недостаточно единственного 'User-Agent' и передачи только логина / пароля.

Аватар пользователя
Мудрец

Возможно, сайт требует использование определенного типа запроса или заголовков. Попробуйте добавить заголовок "Content-Type" с значением "application/x-www-form-urlencoded" и изменить запрос на использование метода "GET" или "PUT". Также может помочь использование библиотеки Selenium для автоматизированного взаимодействия с сайтом, которая может обойти блокировки на уровне браузера.