node登录segmentfault,登录成功,但是有个sf_remember参数找不到来源?

最近学习node爬虫,想练习下需要登录的数据爬虫,于是就拿segmentfault来练练手,已经成功解决了每一次登录请求的随机query和cookie同步的问题,然后直接用superagent请求这个接口:https://segmentfault.com/api/...,也已经成功返回状态码200,但是想要继续爬取数据,会发现登录成功后每次请求的request header的cookie都有一个fs_remember,值貌似是自动生成一串随机字符串,简单分析可知这个cookie应该是登录是否成功的标志,但是这个参数的来源我查看了它源代码也没有找到,导致之后的爬虫无法进行下去,请问有大神遇到过同样的情况么,先谢谢了!
相关代码如下:

const superagent = require('superagent')
const async = require('async')
const getRandom = require('./getRandom')
let random = ''
let cookie = ''
async.series([
  (cb) => {
    superagent
      .get('https://segmentfault.com')
      .end((err, res) => {
        if (err) console.log(err)
        cookie = res.headers['set-cookie'].join(',').match(/(PHPSESSID=.+?);/)[1]
        // console.log(cookie)
        random = getRandom.getToken(res.text)
        // console.log(res)
        cb(null)
      })
  },
  (cb) => {
    const username = process.argv[2]
    const password = process.argv[3]
    console.log(cookie)
    console.log(random)
    let header = {
      'accept': '*/*',
      'accept-encoding': 'gzip, deflate, br',
      'accept-language': 'zh-CN,zh;q=0.9',
      'content-length': '47',
      'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',
      'cookie': `PHPSESSID=${cookie};`,
      'origin': 'https://segmentfault.com',
      'referer': 'https://segmentfault.com/',
      'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
      'x-requested-with': 'XMLHttpRequest'
    }
    superagent
      .post(`https://segmentfault.com/api/user/login`)
      .query({'_': random})
      .set('Referer', 'https://segmentfault.com/user/login')
      .set('X-Requested-With', 'XMLHttpRequest')
      .set(header)
      .type('form')
      .send({
        username: username,
        password: password,
        remember: 1
      })
      .end(function(err, res) {
        if (err) {
          console.log(err.status);
        } else {
          console.log('yay got ' +  res.status)
          cb(null, cookie)
        }
        })
  }
])

直接执行node index phoneNumber password即可登录成功,如果在继续爬取其他接口就会返回not found,求大神帮助

阅读 2.3k
1 个回答

sf_remember在cookie里面,而且不是httpOnly的,js可以读到

推荐问题