当前位置: 首页 > news >正文

如何绕过谷歌反爬策略爬取搜索结果

背景

尝试开发一个爬虫,绕过谷歌反爬策略并获取谷歌搜索的结果。

技术栈

  • docker管理开发环境,操作系统为centos7
  • puppeteer-extra-plugin-stealth插件 + chromium浏览器模拟真实用户
  • xvfb模拟图形界面环境
    相关的实现代码很多,这里不再赘述,只讲解决问题的过程。

问题

开发完成后,发现了一个奇怪的问题。本地运行得很顺利,但同样的docker镜像,同样的代码,部署到数据中心docker环境后,却发现必被google反爬策略拦截(返回验证码界面)。当时分析可能有两个地方有问题:

  1. ip问题,ip已被google拉黑。
  2. 宿主机环境问题,虽然镜像一样,但实际上本地和服务端仍然有地方存在区别导致了反爬策略的触发。

一番分析后首先排除问题1,因为本身已经使用了民用ip代理池,但仍然稳定返回验证码,可见并不是ip的问题。

进一步仔细观察docker镜像,发现自己使用的docker镜像配置同步了宿主机的时区,而本地时区为Asia/Shanghai,数据中心的机器时区为UTC。Docker默认会用UTC作为时区,而正常用户的Windows,MacOS系统往往使用的是Asia/Shanghai这种IANA 时区(Area/Location 格式),并不会使用UTC时区。猜测谷歌可能以此作为依据,直接默认对所有时区为UTC的请求返回验证码。利用js修改浏览器能获取到时区后,成功解决问题。

其实谷歌完全可以采取更激进的反爬策略,就是判断用户时区是否与ip属地一致,但猜测可能误伤率过高,并没有开启。

http://www.rkmt.cn/news/3943.html

相关文章:

  • Rust 生命周期详解 - 实践
  • 笔记《机器人动力学理论及其应用》上交桂凯博士-中科深谷机器人大讲堂第10期
  • [豪の学习笔记] 软考中级备考 基础复习#9
  • 2025CCPC南昌邀请赛游记
  • 软件工程第二次作业-个人项目
  • 2025年API安全建设方案最佳实践:七步五方法
  • Redis为什么适合做分布式锁? - 浪矢
  • 2024年以来,数学领域已有多位在国外顶尖高校取得终身教职的学者回国
  • form表单和表单控件
  • form表单
  • 【Zotero7】使用Attanger和百度同步空间如何进行同步?
  • 【重点!!!】必知必会必须掌握的serializers序列化器类之Serializer和ModelSerializer核心区别
  • 助教工作总结
  • [AGC022F] Checkers 题解
  • 程序员的副业变现之路:我的双平台矩阵打法
  • MyBatis注解的运用于条件搜索实践
  • 利用k8s client-go库创建CRD的informer的操作流程
  • Golang并发编程及其高级特性
  • 元推理agi不是象人思维,而是教人思维,人类脸上挂不住啊
  • 优惠券
  • 基于ArcGIS Pro SDK 3.4.2 + C# + .NET 8 的自动化制图系统初探
  • 单例模式:线程安全,以及volatile关键字
  • 用 Python 和 Tesseract 实现验证码识别
  • 基于 Weiler–Atherton 算法的 IoU 求解
  • 25.9.13 字符编码标准
  • 哭了,散了,明白了
  • 用 Java 和 Tesseract 实现验证码识别
  • Microsoft-Activation-Scripts,好用,记录一下。
  • 9.13 模拟赛 T3
  • Docker应用 - FileBrowser