node爬虫遇上301重定向Moved Permanently

遇到场景:在爬取相关网站时,刚开始一段时间可以爬,过了一段时间后则爬取报错 301 Moved Permanently,浏览器打开网站是正常打开。
以下是遇到该报错时的代码:

const charset = require('superagent-charset')
const request = require('superagent')
// 通过该网址和指定字符编码来爬取文章
request.get(url)
      .charset(charset)
      .timeout(20000)
      .end(res=>{
      		console.log(res.text)
      )

为什么会遇到301?

因为网站通过识别cookie来进行反爬虫措施,当用户向目标网站发送请求时,会在请求数据中携带Cookie,网站通过校验请求信息是否存在Cookie,以及校验Cookie的值来判定发起访问请求的到底是真实的用户还是爬虫,第一次打开网页会生成一个随机cookie,如果再次打开网页如果这个Cookie不存在则会返回一个cookie,这就形成了301重定向的报错返回。有些网站也会通过访问次数、访问频率或请求的header来判断是否为爬虫
此处,是由于爬虫默认不保存cookie,所以网站不断返回301,不断返回cookie,导致报错

解决思路:爬虫在第一次访问网站时保存cookie,然后在第二次访问时带上cookie访问网站即可
代码:

const charset = require('superagent-charset')
const request = require('s
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值