做爬虫系统,如果用java实现,在jdk11之前能用的应该只有Apache的Httpclient组件了。
但是Apache的这个组件本身就比较老,更新也较慢。对于抓取现在很多https版本较高的网站时,总会碰到一些问题,而且难以解决。
还一个方面就是使用Apache的这个组件,需要写的代码量也比较大。其中的各种参数设置,如果不熟悉,会导致抓取的性能问题。
个人也是使用了3个多月后才熟悉了这个东西。
现在jdk11里,推出了jdk内置的HttpClient,代码编写非常的精简。这几天试用了下,觉得很不错。
但今天在对它设置IP代理后,抓取网页后总是报407错误,也就是有代理的认证问题。
查了googel后才发现原来jdk8之后,basic authentication被默认禁用掉了,需要修改jdk的默认设置。
参考了以下两个链接:
https://stackoverflow.com/questions/53333556/proxy-authentication-with-jdk-11-httpclient
最后吐槽下度娘。
为了这个问题,度娘上居然搜了好久都没找到正确的解决方案。
后来google一次就可以了。
度娘真烂,宏彦获水,换做我,直接灌一桶。。。