2015-06-21 3 views
0

Примечания: Я заменил последние 5 символов из идентификаторов сеансов с иксами по понятным причинамЗачистка: идентификатор сеанса из браузера работает, но идентификатор сеанса из соскоба не

Я соскабливание Веб-сайт. Я вижу, что в браузере этот вход в систему устанавливает значение cookie под названием PHPSESSID. Нет проблем, я не могу наскрести, что:

superagent 
    .post(loginUrl) 
    .send(loginDetails) 
    .end(function(err, res){ 
     var setCookieValue = res.headers['set-cookie'][0] 
     var sessionID = cookieParser.parse(setCookieValue).PHPSESSID 
     console.log(sessionID) 

Возвращает:

37c3bog3tf6erp2i6ss5vxxxxx 

который похож на PHP идентификатор сессии. Большой! Теперь использовать идентификатор сеанса:

superagent 
.get(loggedInURL) 
.set('Cookie', 'PHPSESSID'=sessionID) 
.end(err, res) 

Переадресовывает меня на страницу входа. Но идентификатора сеанса, я вручную из браузера, в том же формате, работает отлично:

var fakeSessionID = 'a1oslk341uoht8p6009q5xxxxx' 
superagent 
.get(loggedInURL) 
.set('Cookie', 'PHPSESSID='+fakeSessionID) 

Возвратит loggedInURL, с полной HTML от зарегистрированного пользователя.

Почему нет идентификатора сеанса, с которым я работаю?

  • Формат идентичен
  • Количество символов одинакова (26 символов)

Там нет ничего отступлений от идентификатора сеанса, который отличается между рабочим и нерабочим кодом.

Что может быть причиной разницы?

+0

Имеет ли скребковый файл cookie контрольные символы, например. новая линия в конце? – halfer

ответ

2

PHP имеет некоторые dubious extra security for sessions такие как checking Referer.

Некоторые сайты могут дополнительно check User-Agent.

+0

Я переключился на постоянную опцию суперагента, например, 'var agent = superagent.agent()'.Для меня это касается рефери, куки и другие вопросы, связанные с сохранением. Поскольку ответ выше был самым близким к этому решению, я отмечаю его как правильное и даю вам эту кукурузу emoji: – mikemaccana

1

Вы можете попробовать бросать различные атрибуты агента пользователя в заголовке в вызове суперагент как для GET и POST:

.set('User-Agent','Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0') 
+0

Отличное предложение, но без изменений. – mikemaccana

+1

Вы можете попробовать прочитать это сообщение: https://contourline.wordpress.com/2012/09/20/using-superagent-to-authenticate-a-user-agent-in-node-js/ –

0

Вы код выглядит, как вы не заменяете строку «SESSIONID» с фактическое значение sessionID ...

superagent 
.get(loggedInURL) 
.set('Cookie', 'PHPSESSID=sessionID') 
.end(err, res) 

Должно быть что-то типа?

superagent 
.get(loggedInURL) 
.set('Cookie', 'PHPSESSID='+sessionID) 
.end(err, res) 

Я думаю ...

+0

Вы правы , но это была ошибка при создании тестового примера для StackOverflow. У моего реального кода есть цитата в нужном месте. Спасибо, что указали на это. – mikemaccana

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