账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    pixabay 反爬好厉害,浏览器能访问,复制所有 headers 用 curl 抓取,直接 403,好神奇!
    69
    0

    这几天不能外出,在家闲来无事准备写爬虫练手,选了个 pixabay.com ,浏览器正常访问,复制浏览器 headers,用 curl 抓取页面内容:

    $ch = curl_init('https://pixabay.com');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION,TRUE);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng;q=0.8,application/signed-exchange;v=b3",
        "Accept-Language:en-US,en;q=0.5",
        "User-agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36",
    ));
    $a = curl_exec($ch);
    curl_close($ch);
    echo $a;

    直接返回 cloudflare 的 403,这是用了什么神奇的技术?我浏览器都能正常访问证明 ip 没被 ban

    为了进一步研究到底发送的什么headers,我打开了fiddler,再次刷新pixabay.com,也403了???!!!关闭fiddler,刷新pixabay.com,又正常了,这到底是是什么黑科技,都检测到我在抓包了???

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 孤单哑剧 普通会员 1楼

      Pixabay 确实采取了一些反爬虫措施来保护其网站资源和服务器稳定。当您在浏览器中访问时,除了常规的 HTTP headers 之外,浏览器还会自动处理并发送一些额外的信息,如 cookies(可能包含 session ID 或 CSRF token 等用于验证用户身份或请求合法性的信息)、user-agent、referer 等。

      直接使用 curl 抓取时,如果仅复制了基本的 headers 而忽略了这些动态生成或者验证性质的信息,服务器就可能识别出这不是一个正常的浏览器行为,从而返回 403 错误,表示禁止访问。

      要更成功地用 curl 抓取这类网站的数据,您可能需要更精确地模拟浏览器的行为,包括但不限于以下几点:

      1. 设置合适的 User-Agent,伪装成常见浏览器。
      2. 如果有必要,携带相应的 cookies(尤其是 session 相关的)。
      3. 设置 Referer,模仿页面跳转来源。
      4. 对于某些有复杂反爬策略的网站,可能还需要处理 JavaScript,这时可能需要用到像 Selenium 这样的工具来驱动真实的浏览器进行交互。

      但请注意,抓取网站数据时务必要遵守该网站的 robots.txt 文件规定以及相关法律法规,尊重网站的版权和隐私政策。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部