【发布时间】:2015-09-07 07:19:02
【问题描述】:
注意:出于显而易见的原因,我已将会话 ID 的最后 5 个字符替换为“x”
我正在抓取一个网站。我可以在浏览器中看到,登录设置了一个名为PHPSESSID 的cookie 值。没问题,我可以刮一下:
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 会话 ID。伟大的!现在使用会话 ID:
superagent
.get(loggedInURL)
.set('Cookie', 'PHPSESSID'=sessionID)
.end(err, res)
将我重定向到登录页面。但是我从浏览器手动获取的会话 ID,格式完全相同,工作正常:
var fakeSessionID = 'a1oslk341uoht8p6009q5xxxxx'
superagent
.get(loggedInURL)
.set('Cookie', 'PHPSESSID='+fakeSessionID)
将返回loggedInURL,以及登录用户的完整HTML。
为什么我正在抓取的会话 ID 不起作用?
- 格式相同
- 字符数相同(26 个字符)
除了会话 ID 之外,工作代码和非工作代码之间没有什么不同。
有什么不同?
【问题讨论】:
-
抓取的cookie是否包含控制字符,例如最后换行?
标签: javascript php node.js screen-scraping session-cookies