2015-02-17 4 views
0

У меня возникли проблемы с входом в мою учетную запись на сайте this с использованием запросов python. Страница входа в систему - www.utahrealestate.com/auth/login. Учетные данные для входа в систему отправляются на сайт www.utahrealestate.com/auth/authenticate.python просит аутентификацию пользователя

Это процедура, с которой я пытаюсь войти в систему (г сеанса запросов):

>>> login = r.post('http://www.utahrealestate.com/auth/authenticate', data={'login':'my_login','pass':'my_password'}) 
>>> login.text 
u'{"error":"Username or password was invalid. Please try again or click on \\"Reset it\\" above to reset your password."}' 

Я знаю, что учетные данные являются правильными. Я также знаю, что поля имеют имя login и pass, за исключением того, что на странице генерируется некоторая комбинация цифр и добавляется к каждому имени поля, но это происходит только при проверке элемента в моем браузере. В моем терминале эти поля просто называются login и pass.

Использование запросов и BeautifulSoup, здесь Логин элемент в моем терминале:

<input id="login" name="login" tabindex="1" type="text"/> 

Здесь при проверке элемент в браузере:

<input id="login" type="text" tabindex="1" name="login_666832525"> 

Элемент пароля аналогично строится, кроме него имеет имя: «pass» с той же комбинацией цифр, что и поле ввода, добавленное в конец. Кажется, в форме нет скрытых полей. Цифры, следующие за именем поля (login _ ### или pass _ ###), кажутся изменяющимися каждый раз, когда я обновляю страницу в своем браузере, но ее нет, когда я получаю содержимое, используя запросы в моем терминале.

Я предполагаю, что мои проблемы с подключением связаны с тем, что я не смог воспроизвести цифры из названий полей. Итак, я попытался изменить значение «User-Agent» в заголовке request.get, чтобы зеркально отобразить его в моем браузере, но, похоже, не воспроизводил имена нумерованных полей. Связано ли это с каким-то сеансом cookie? Возможно, файл cookie PHPSESSIONID, который я вижу? Или это не имеет ничего общего с именами полей?

EDIT:

Я нашел пост запрос, который автоматически отправляется после запроса GET на страницу входа в систему (сообщений авторизовать/login.form /). Ответ на этот почтовый запрос содержит номера, которые добавляются к именам полей. Однако даже после того, как вы перешли в строку цифр к именам полей, я все еще не в состоянии работать.

form_id = u'418622340' 
loginauth_post = r.post('http://www.utahrealestate.com/auth/authenticate/', headers=authpost_header, data={'login_'+form_id: 'my_login', 'pass_'+form_id: 'my_pass'}) 
+2

Некоторые сайты добавляют случайные маркеры CSRF и проверяют, был ли запрос создан с того же сайта, чтобы защитить атаки именно так. –

+0

@ kiran.koduru Я бы не назвал это атакой, просто пытаясь получить доступ к контенту, за который я плачу. Почему я не могу получить запросы на получение одинаковых результатов, сначала запустив страницу входа в систему? –

ответ

1

Я был в состоянии работать его. По-видимому, мне нужно было получить страницу входа в систему, а затем отправить начальный запрос на запись auth/login.form/с помощью файла cookie, предоставленного при получении страницы входа. Это отвечает идентификационным номером, который необходимо добавить к именам полей. Затем отправьте сообщение для авторизации/аутентификации с использованием того же файла cookie. Кажется, что трюк включал в заголовок параметры «X-NewRelic-ID» и «X-Requested-With».

0

попытка написать:

data = urllib.urlencode({'login':'my_login','pass':'my_password'}) 
+0

Я не верю, что это была проблема, но все равно попробовал ... нет кубиков –

Смежные вопросы