背景
尝试抓取一个网站的资源做一些分析,发现直接curl或者Python的request请求下来的资源不对,用html打开发现是Cloudflare的一个保护页。有此可知这个网站是被保护了,一般的请求肯定是不行了。
方案
在进行很多尝试之后发现一个python库可以解决这个问题(cfscrape) ,这个库只支持python3+。
import cfscrape scraper = cfscrape.create_scraper() # returns a CloudflareScraper instance # Or: scraper = cfscrape.CloudflareScraper() # CloudflareScraper inherits from requests.Session print scraper.get("http://somesite.com").content # => "<!DOCTYPE html><html><head>..."
使用很简单,可以使用,但是我发现一个问题,用这个库请求到的页面居然和我直接打开浏览器的不一样。
比如有个列表,我直接用浏览器打开的数据已经更新到11月份了,但是用这个库请求的数据才到10月份,很奇怪,不知道什么原理。。。难道已经被Cloudflare给反向hack了? 哈哈