Хочу получить данные с сайта (true или false) через запросы, а именно requests.get('ссылка на сайт'). Ответ приходит в виде <[Response 401]>. Я смотрел в интернете, но не понял, в основном там писали про HTTPBasicAuth (но посмотрев про это, я тоже не понял, откуда взять логин и пароль и для чего они нужны).
Если запрашиваемая страница требует аутентификации, то в запрос нужно передать соответствующую информацию, чтобы запрос был авторизован. Скорее всего это cookie аутентификация, может быть и Basic, и какие либо другие.
Так же проблема может быть в том, что не передаются нужные заголовки запроса, тот же user-agent.
Смотрите, какой запрос отправляет браузер и повторяйте его через requests.
import sys
import requests
from requests.auth import HTTPBasicAuth
REQUEST_HEADERS = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/91.0.4472.77 Safari/537.36',
}
# Пример авторизации по HTACCESS логину и паролю
HT_LOGIN = ''
HT_PASSWORD = ''
url = f'https://....'
# Работать лучше через сессии
s = requests.session()
try:
# GET запрос
result = s.get(
url,
auth=HTTPBasicAuth(HT_LOGIN, HT_PASSWORD),
timeout=60,
headers=REQUEST_HEADERS,
verify=True
)
result.raise_for_status()
html = result.text
except requests.exceptions.RequestException as e:
print(f'Не получилось подключиться к сайту: {url}\n{e}')
sys.exit(-1)
# Далее пример если кроме HTACCESS имеется ещё и
# форма авторизации, например, с полями 'login' и 'password'
LOGIN = ''
PASSWORD = ''
try:
# Для передачи данных формы требуется POST запрос
result = s.post(
url,
auth=HTTPBasicAuth(HT_LOGIN, HT_PASSWORD),
data=[('login', LOGIN), ('password', PASSWORD)],
timeout=60,
headers=REQUEST_HEADERS,
verify=True
)
result.raise_for_status()
html = result.text
except requests.exceptions.RequestException as e:
print(f'Не получилось подключиться к сайту: {url}\n{e}')
sys.exit(-1)