鍍金池/ 問答/數(shù)據(jù)分析&挖掘  Java  HTML/ node登錄segmentfault,登錄成功,但是有個sf_remember參

node登錄segmentfault,登錄成功,但是有個sf_remember參數(shù)找不到來源?

最近學(xué)習(xí)node爬蟲,想練習(xí)下需要登錄的數(shù)據(jù)爬蟲,于是就拿segmentfault來練練手,已經(jīng)成功解決了每一次登錄請求的隨機query和cookie同步的問題,然后直接用superagent請求這個接口:https://segmentfault.com/api/...,也已經(jīng)成功返回狀態(tài)碼200,但是想要繼續(xù)爬取數(shù)據(jù),會發(fā)現(xiàn)登錄成功后每次請求的request header的cookie都有一個fs_remember,值貌似是自動生成一串隨機字符串,簡單分析可知這個cookie應(yīng)該是登錄是否成功的標(biāo)志,但是這個參數(shù)的來源我查看了它源代碼也沒有找到,導(dǎo)致之后的爬蟲無法進(jìn)行下去,請問有大神遇到過同樣的情況么,先謝謝了!
相關(guān)代碼如下:

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)
        }
        })
  }
])

直接執(zhí)行node index phoneNumber password即可登錄成功,如果在繼續(xù)爬取其他接口就會返回not found,求大神幫助

回答
編輯回答
熟稔

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

2017年9月23日 18:41