今天跟大家唠唠我折腾《金融时报中文版》的那些事儿,纯粹是自己瞎摸索,希望能给感兴趣的朋友一点启发。
就是想看看能不能更方便地浏览《金融时报中文版》的内容,毕竟天天刷网页有点烦。我寻思着,能不能自己搞个小工具,把内容抓下来,然后舒舒服服地看。
说干就干,我先是到处搜资料,看看有没有现成的API或者爬虫可以用。结果发现,《金融时报中文版》的反爬机制还挺厉害的,直接用requests库硬怼,十有八九会被ban。这下有点头疼了,看来得想点别的办法。
后来我琢磨着,既然直接爬不行,那能不能曲线救国?我想到了RSS订阅。有些网站会提供RSS源,这样就可以用阅读器或者自己写的程序来订阅内容。我赶紧去找《金融时报中文版》的RSS源,费了九牛二虎之力,终于找到了几个。但是,找到的RSS源更新频率不高,而且内容也不全,没法满足我的需求。
RSS这条路走不通,我又开始想其他办法。我发现,《金融时报中文版》的手机App还挺好用的,而且内容更新也很快。于是我就想,能不能通过抓取App的数据来实现?这听起来有点复杂,但我还是决定试试。
抓App数据,要解决的就是抓包的问题。我用的是Charles抓包工具,这玩意儿挺好用的,可以抓到App和服务器之间的数据交互。我打开《金融时报中文版》App,然后用Charles开始抓包,很快就抓到了一堆数据。我仔细分析了一下这些数据,发现大部分都是加密的,根本看不懂。这下更头疼了,看来《金融时报中文版》在数据安全方面下了不少功夫。
不过我并没有放弃。我继续分析抓到的数据,发现其中有一些请求是获取文章列表的,这些请求的返回值虽然也是加密的,但是加密方式比较简单。我花了一些时间,用Python写了一个解密算法,总算可以把文章列表解密出来了。这让我看到了希望,只要能解密文章列表,那就可以进一步解密文章内容。
我就开始研究如何解密文章内容。我发现,文章内容的加密方式比文章列表复杂得多,而且每次请求的加密参数都不一样。这让我有点绝望,感觉自己要放弃了。但是,我不甘心,都走到这一步了,放弃太可惜了。
我决定换个思路。既然无法直接解密文章内容,那能不能通过模拟用户行为来获取?我想到了Selenium,这是一个自动化测试工具,可以模拟用户在浏览器中的操作。我可以用Selenium打开《金融时报中文版》的网页,然后模拟用户点击文章,获取文章内容。这样虽然比较慢,但是总比没有
于是我就用Selenium写了一个程序,可以自动打开《金融时报中文版》的网页,然后模拟用户点击文章,获取文章内容。这个程序虽然可以工作,但是效率很低,而且很容易被《金融时报中文版》的反爬机制ban掉。不过我还是用这个程序抓取了一些文章,凑合着看。
后来我又尝试了一些其他的办法,比如用OCR识别图片中的文字,用JavaScript脚本注入网页等等,但是效果都不太这回折腾《金融时报中文版》的经历,让我深刻体会到了反爬虫技术的强大。虽然我没有完全成功,但是也学到了很多东西。
我还是主要通过《金融时报中文版》的手机App来浏览内容,毕竟这是最方便的方式。不过我并没有放弃研究,以后有机会还会继续尝试其他的办法。说不定哪天我就能找到一个更好的解决方案!
- 一开始想爬网页,发现反爬厉害。
- 然后试了RSS,发现内容不全。
- 接着抓App包,发现数据加密。
- 用Selenium模拟用户行为,但效率太低。
虽然没完全搞定,但学到不少东西,也算是有所收获。以后有机会再继续折腾!
还没有评论,来说两句吧...