alsotang / node-lessons

:closed_book:《Node.js 包教不包会》 by alsotang
16.54k stars 4.7k forks source link

node 编写的爬虫程序遇到了 HttpOnly 怎么解决呢? #125

Closed yumexupanic closed 7 years ago

yumexupanic commented 7 years ago

使用 Node 去登陆模拟网站,获取到登陆后到 set-cookie ,带上 cookie 去请求登陆后都操作 却说我没有登陆。

可以确认的是已经登陆成功了,这是服务器给我回的 cookie

JSESSIONID=204051A28629D11FCC8461E48FEED32F; Path=/hr/; HttpOnly

如果手动在浏览器中获取 cookie 并且设置到我的爬虫里面 是可以进行登陆后的操作的。(浏览器中获取的 cookie 没有上面的 HttpOnly)

大家有遇到这类的问题吗? 我去查了资料 都说是因为 HttpOnly 属性禁止这些操作 具体也不是太明白 ,难道服务器通过设置 HttpOnly 属性就可以解决反爬虫登陆吗?

alsotang commented 7 years ago

httponly 只是禁止页面中的 js 获取 cookie,如果已经在用 node 的话,这个属性可以忽略。排查一下其他问题吧

yumexupanic commented 7 years ago

嗯,在检查过一次之后 我把原来的 superagent 换成了 request ,这一次我的操作是登陆成功之后 获取到爬虫的 cookie ,然后用这个 cookie 来验证是否登陆成功 但还是失败了。

这是我登陆成功之后获取到 cookie

使用这个 cookie 发送登陆之后到操作又给我跳转到登陆页面了。

登陆之后到操作没有问题,因为我已经尝试把浏览器中的 cookie 拿过来 访问 都可以正常操作的。