WebMagic0.73版本无法爬取到数据
初学爬虫, 今天稍微接触了WebMagic, 刚搭建环境就遇到了问题, 我所使用的版本是最新的 0.73, 该版本对SSL的并不完全,如果是直接从Maven中央仓库下载依赖,在爬取只支持TLS1.2, 即只能用https协议访问的网站时会有SSL的异常抛出 javax.net.ssl.SSLException: Received fatal alert: protocol_version, 并且无法爬取到数据
参考作者的 github 得知解决方法大致有两个, 一是等作者更新发布的 0.74 版本(已更新), 二是修改 HttpClientGenerator 类中的 buildSSLConnectionSocketFactory 方法, 可以直接在本项目中解决, 详情参考 WeJan's Blog
但是这种方法只能在当前项目中使用, 要想一劳永逸, 最好还是直接在本地maven仓库中修改, 首先可以下载 github 上的源码到本地
将 webmagic-core导入到idea中, 找到 HttpClientGenerator
按照作者所提供的解决办法, 找到 buildSSLConnectionSocketFactory 方法并修改
private SSLConnectionSocketFactory buildSSLConnectionSocketFactory() throws KeyManagementException, NoSuchAlgorithmException { return new SSLConnectionSocketFactory(createIgnoreVerifySSL(), new String[]{"SSLv3", "TLSv1", "TLSv1.1", "TLSv1.2"}, null, new DefaultHostnameVerifier()); }
因为抛出了异常, 所以在使用 buildSSLConnectionSocketFactory 方法时需要处理异常, 所以修改上面的构造方法为:
public HttpClientGenerator() { Registry<ConnectionSocketFactory> reg = null; // 处理异常 try { reg = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", PlainConnectionSocketFactory.INSTANCE) .register("https", buildSSLConnectionSocketFactory()) .build(); } catch (KeyManagementException e) { e.printStackTrace(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } connectionManager = new PoolingHttpClientConnectionManager(reg); connectionManager.setDefaultMaxPerRoute(100); }
修改完之后将 webmagic-core 项目导入本地 maven 库
安装成功后再使用 WebMagic 0.73 版本抓取https协议网站就没问题了
分类:
java网络爬虫
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!