直接通过get请求获取网站首页,发现出现授权错误
模拟浏览器使用cookie获取首页,还是授权错误
禁用浏览器cookie、js、图片等,发现浏览器能正常获取首页,因此排除cookie
网友说可能是reference的问题,可我在头部没发现reference属性
使用wireshark查看HTTP流,看看HTTP流中有没有相关的安全认证信息
通过wireshark发现每次请求主页都发起了三个HTTP请求,前两个失败,第三个成功
看到有个NTLM安全认证相关的信息,baidu了一下,感觉没多大用
给网友截图说明情况,网友说NTLM他不懂
再次在Stackverflow网上搜nodejs NTLM安全认证,发现了一个帖子,上面有NTLM协议的一个连接,进去后发现NTLM协议中有个三次握手,解决了wireshark三个HTTP请求的原因,所以将问题定位到NTLM认证
使用httpmtlm.js模块模拟浏览器发起带NTLM验证的GET请求(参数按照要求填写,具体的取值通过wireshark看),发现成功获取了网站主页
使用POST请求爬取通讯录时发现出现超时等待,通过wireshark与浏览器比较分析发现我的爬虫没有出现NTLM的三次握手协议
本以为是POST请求的NTLM协议不一致导致的,但我在把POST的options用到GET上后发现GET也不能用了,通过和之前的GET的OPTIONS对比发现是新增加的headers导致的
将Option中的headers删除后POST请求也能正常使用
大功告成