Cloudflare 5秒盾指的是一种cdn服务,是针对域名的保护机制。任何访问经过Cloudflare5秒盾的url地址,不管是接口,图片,js,视频都要过人机验证,才能正确的访问到页面内容。
那采集数据,爬虫代码编写的时候,怎么越过Cloudflare 5秒盾呢?
第一种是所采集的数据在页面上或者是GET接口,目前除了付费的代理之外,就只剩下了flaresolverr这个服务能用了。
用法也很简单,也是启动一个http代理
第二种是数据是POST接口的形式异步返回的,这需要在GET的curl发送的时候,带上postdata,记得postdata必须是application/x-www-form-urlencoded格式的,比如a=a&b=b.如果原请求是json的,也要注意换成form-urlencoded格式,且注意特殊字符串要encode之后再次请求。
第三种就是图片和视频的资源如何下载,FlareSolverr 只是个代理,无法直接返回图片和视频的字节流,返回还是原来的图片地址,直接request还是一样的返回的是just a moment。
这个,只能求助chatgpt了,这是下载图片的办法之一。还有一种是找到域名的原始ip,既可以用原始ip的方式请求资源了。
from playwright.sync_api import Playwright, async_playwrightasync def run(playwright: Playwright) -> None: browser = await playwright.chromium.launch() page = await browser.new_page() await page.goto('https://example.com/image.jpg') await page.screenshot(path='image.png') await browser.close() with async_playwright() as playwright: playwright.run(run)
视频下载,chatgpt说不行,法律风险太大,不建议采集!