Я хочу узнать больше о том, как Scrapy можно использовать для входа на веб-сайты. Я просмотрел некоторые документы и руководства и в итоге получил Использование FormRequest.from_response () для имитации входа пользователя в систему . Используя инструменты разработчика Chrome, я просматриваю ответ «login» после входа со страницы https://eventbrite.ca/signin/login.
Некоторые вещи, на которые стоит обратить внимание, это то, что при попытке войти в браузер, в Интернетестраница направит вас на https://eventbrite.ca/signin,, где вы введете адрес электронной почты и отправите форму.
Это отправляет запрос POST на https://www.eventbrite.ca/api/v3/users/lookup/ только с указанным адресом электронной почты, и если все будет в порядке, веб-страница будет использовать JS, чтобы "перенаправить" вас на https://eventbrite.ca/signin/login и сгенерироватьэлемент ввода "пароль".
После того, как вы введете свой пароль и нажмете кнопку формы, в случае успеха он перенаправит + сгенерирует ответ на вход в систему в результате POST, отправленного на https://www.eventbrite.ca/ajax/login/ с электронной почтой, pw и некоторыми другимиинформация (которую можно найти в моем фрагменте кода).
Сначала я попытался сделать это шаг за шагом: переходя из .ca / signup, отправляя POST с моим письмом в конечную точку поиска, но я получаю ошибку 401. Затем я попытался напрямую зайти в .ca / signup / login и отправить всю информацию, найденную в ответе на вход в систему, но получить 403.
Я уверен, что что-то упустил, хотя кажется, что я POSTingна правильные URL-адреса и найти правильную форму, но не могу понять, что осталось. Также, попробовав некоторое время, задаюсь вопросом, будет ли Selenium лучшей альтернативой для входа в систему и некоторой автоматизации на веб-странице, на которой загружено JS. Любая помощь приветствуется.
def login(self, response):
yield FormRequest.from_response(
response,
formxpath="//form[(@novalidate)]",
url='https://www.eventbrite.ca/ajax/login/',
formdata={
'email': 'email@email.com',
'password': 'password',
'forward':'',
'referrer': '/',
'pckg': '',
'stld': ''
},
callback=self.begin_event_parse
)
.ca / попытка регистрации / входа (403):
[scrapy.core.engine] DEBUG: Crawled (403) <POST https://www.eventbrite.ca/ajax/login/> (referer: https://www.eventbrite.ca/signin/login)
.ca / попытка регистрации (401):
[scrapy.core.engine] DEBUG: Crawled (401) <POST https://www.eventbrite.ca/api/v3/users/lookup/> (referer: https://www.eventbrite.ca/signin/login)