Как можно избежать ошибки доступа 403 и ошибки проверки CSRF при заполнении и отправке формы?

Как исправить ошибку 403 при парсинге  сайта https://notariat.ru/ru-ru/help/probate-cases/ с использованием библиотеки Selenium? Правильно ли заполняется форма и нажимается кнопка ENTER, но форма не отправляется. Приведенный ниже код показывает мои попытки решить проблему, но ничего не работает:

```python
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManager
url = 'https://notariat.ru/ru-ru/help/probate-cases/'

ip = '5.181.211.244'
port = '8888'

s = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=s)
driver.implicitly_wait(5)

try:
    driver.maximize_window()
    driver.get(url=url)

    name_input = driver.find_element(By.XPATH, "//input[@name='name']")
    name_input.clear()
    name_input.send_keys('левин леонид семенович')

    name_input.send_keys(Keys.ENTER)
    sleep(10)

except Exception as _ex:
    print(_ex)
finally:
    driver.close()
    driver.quit()
    
options = webdriver.ChromeOptions()
options.add_argument(f"user-agent={UserAgent().random}")
options.add_argument("--disable-blink-features=AutomationControlled")
options.add_argument(f"--proxy-server={ip}:{port}")
```
  • 29 сентября 2023 г. 9:08
Ответы на вопрос 2
Для избежания ошибки доступа 403 (Forbidden) и ошибки проверки CSRF (Cross-Site Request Forgery) при заполнении и отправке формы, необходимо выполнить следующие действия:

1. Убедитесь, что вы авторизованы на сайте. Если требуется аутентификация, вам нужно будет предоставить правильные учетные данные (логин и пароль) через Selenium, чтобы получить доступ к заполняемой форме.
2. Проверьте, нет ли на странице специальных параметров или полей, связанных с CSRF-защитой (обычно это поле csrfmiddlewaretoken). Если такие поля есть, необходимо получить CSRF-токен из исходного кода страницы и отправить его вместе с остальными данными формы.
3. Установите правильные заголовки в HTTP-запросе, такие как User-Agent, Referer и другие, чтобы сделать запрос более похожим на нормальное взаимодействие пользователя с веб-сайтом.
4. Проверьте, нет ли других форм на странице, которые должны быть заполнены перед отправкой вашей формы. Некоторые веб-сайты требуют, чтобы все формы на странице были заполнены перед отправкой какой-либо из них.
5. Убедитесь, что ваши действия не нарушают правила использования веб-сайта. Если веб-сайт имеет ограничения на количество запросов, скорость парсинга или другие ограничения, убедитесь, что вы соблюдаете эти правила.
6. Возможно, веб-сайт блокирует автоматические инструменты, такие как Selenium. В этом случае вы можете попробовать использовать другую библиотеку, такую как Requests или Scrapy, которые предназначены специально для парсинга веб-сайтов.

Чтобы исправить ошибку 403 при парсинге сайта https://notariat.ru/ru-ru/help/probate-cases/ с использованием библиотеки Selenium, вам следует принять описанные выше рекомендации. Более конкретные рекомендации по исправлению ошибки не могут быть даны без более подробного анализа проблемы, включая проверку наличия CSRF-токена и анализ заголовков HTTP-запроса, отправляемых веб-сайту.
Проблема не связана с Selenium. Ошибка возникает и при использовании обычного браузера. Вероятно, на сайте используется Django, и некоторые настройки были пропущены. В данном случае, возможно, речь идет о государственном учреждении.
Похожие вопросы