如何使用 python 避免机器人检测并抓取网站?

2024-04-11

我的问题:

我想抓取以下网站:https://www.coches.net/segunda-mano/ https://www.coches.net/segunda-mano/。 但每次我用 python selenium 打开它时,我都会收到消息,他们将我检测为机器人。 我怎样才能绕过这个检测? 首先我尝试使用 selenium 编写简单的代码:

from selenium import webdriver
from bs4 import BeautifulSoup

browser = webdriver.Chrome('C:/Python38/chromedriver.exe')
URL = 'https://www.coches.net/segunda-mano/'
browser.get(URL)

然后我按照要求尝试了它,但我也不起作用。

from selenium import webdriver
from bs4 import BeautifulSoup

from fake_useragent import UserAgent

import requests

ua = UserAgent()

headers = {"UserAgent":ua.random}

URL = 'https://www.coches.net/segunda-mano/'
r = requests.get(URL, headers = headers)

print(r.statuscode)

在这种情况下,我收到消息 403 = 状态代码,表明禁止访问该 URL。

不知道如何在不被阻止的情况下访问该网页。我将非常感谢你的帮助。提前致谢。


Selenium 很容易被检测到,尤其是被所有主要的反机器人提供商(Cloudflare、Akamai 等)检测到。

Why?

  1. Selenium 和大多数其他主要网络驱动程序设置一个浏览器变量(网站可以访问),称为navigator.webdriver to true。您可以通过前往 Google Chrome 控制台并运行来自行检查console.log(navigator.webdriver)。如果您使用的是普通浏览器,则会出现错误。

  2. 用户代理,通常所有设备都有所谓的“用户代理”,这是指访问网站的设备。 Selenium 的用户代理看起来像这样:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/59.0.3071.115 Safari/537.36。你明白了吗?HeadlessChrome包括在内,这是另一种检测途径。

这些只是检测 Selenium 浏览器的多种方法中的两种,我强烈建议阅读this https://stackoverflow.com/a/56529616/6126726 and this https://stackoverflow.com/questions/53039551/selenium-webdriver-modifying-navigator-webdriver-flag-to-prevent-selenium-detec/53040904#53040904以及。

最后,如果您想要一个简单的、直接的解决方案来绕过检测,实现我们讨论过的几乎所有这些概念,我建议使用未检测到的 chromedriver https://github.com/ultrafunkamsterdam/undetected-chromedriver。这是一个开源项目,尽力让您的 Selenium chromedriver 看起来更人性化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 python 避免机器人检测并抓取网站? 的相关文章

随机推荐

  • 是否可以在已经存在的对象中模拟单个方法?

    对于集成测试 我需要在 java 服务客户端中模拟特定方法 而不破坏其中的其余信息 它没有自构造函数 所以这样的解决方案是不可能的 private DBClient mockClient new DBClient alreadyExisti
  • MUI 文本字段上的省略号效果

    如何在 MUI 文本字段上添加省略号效果 他们有一个用于文本换行的多行选项 但我想要单行 像您可以做的那样换行文本
  • Xamarin:未找到绑定属性

    这个应用程序在 UWP 中运行得很好 除了在 Android 上失败的一个更基本的属性之外 我已经删除了所有内容 它看起来像这样 我的页面 xaml
  • 使用 apikey 从 Google Sheets API 获取 403 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我一直在使用 Google Sheets 作为我的一些应用程序的简单数据后端 基本上 这些是 20 行 x 20 列 客户希望能够
  • 调整图像大小,同时保持纵横比

    大家好 我从互联网上下载了一张图像 需要将其大小调整为其大小的 1 4 同时保留其纵横比 关于如何最简单地做到这一点有什么想法吗 WebRequest requestPic WebRequest Create imageURL WebRes
  • 关于并行任务的 `srun ... >output_file` 的语义

    抱歉 这个问题需要大量的积累 但总而言之 它是关于许多并行实例的条件srun gt output file会或不会导致某些进程 任务破坏其他进程 任务产生的输出 案例 0 仅 bash 无 SLURM 假设prog 0 sh是以下玩具脚本
  • Overflow:hidden 隐藏边框但不隐藏溢出的元素

    我正在研究带有过渡的标题 但有些东西不起作用 我将 ul 设为 120px li 设为 60px 我给 li hover 一个translateY 60px 这样当您将鼠标悬停在 li 上时它就会弹出 我想隐藏溢出的内容 直到您将鼠标悬停在
  • 自定义日期选择器对话框

    目前 我正在使用经过修改的本机对话框来隐藏日期微调器 并且工作正常 但现在我想以这样的格式设置日期 当我旋转月份微调器或年份微调器时 对话框仅显示月份和年份而不是完整的日历日期 我的日期选择器对话框的自定义代码如下 Override pro
  • 如何同时按名称或标准差选择列?

    Solution 我采用了 thelatemail 提供的解决方案 因为我试图坚持使用 tidyverse 和 dplyr 我对 R 仍然很陌生 所以我正在采取一些小步骤并利用辅助库 感谢大家花时间贡献解决方案 df new lt df i
  • IE6 不解析加载的 JavaScript 文件(由 Google 托管的 Recaptcha)

    这是一个非常奇怪的问题 我尝试在其中一个网站上使用 Recaptcha 它适用于除 IE6 之外的所有测试浏览器 我参考了google的js http www google com recaptcha api challenge k the
  • 我如何知道机器上特定 Perl 安装最初提供了哪些模块?

    我如何知道机器上特定 Perl 安装最初提供了哪些模块 这是not的副本 如何判断 Perl 模块是核心还是标准安装的一部分 https stackoverflow com questions 2049735 如何判断 Perl 模块是核心
  • 在发布中部署 PDB 文件

    我有 CI 服务器设置来构建和部署我的所有环境 包括我的生产环境 据我所知 我的所有项目文件的设置和 CI 设置在我的暂存环境构建和生产环境构建之间都是相同的 但是 当我部署到生产环境时 并没有像暂存中那样与 DLL 文件并排放置 PDB
  • CSS“>”与“>”?

    In CSS a gt b是相同的 a gt b 但这两个符号中哪一个更正确呢 我看到在 Chrome 开发者工具中使用了第二个变体 两者都不是 更正确 两者同样有效 唯一的一点就是spec http www w3 org TR selec
  • 在 Ionic 2 中添加自定义图标

    我正在使用 Ionic 2 来开发我的应用程序 我想在我的应用程序中使用我的自定义图标 就像我们使用 ionic 2 图标一样标签 例如
  • 将库发布到 Maven 存储库

    我有一个稳定的开源库 http github com fernandezpablo85 scribe并想知道如何 以及是否 我可以将我的库发布到 Maven 官方存储库 以便人们可以将其包含在他们的pom xml文件并自动下载依赖项 将您的
  • sql server 查询中的明智移位日期时间检查

    我的一个项目中的 sql 查询有一个问题 实际上 我必须检查某个具有三个班次的表中的一个 DateTime 列 即 我必须根据相应班次中的 RegisteredDateTime 列获取记录 我们的轮班时间如下 轮班时间为 24 小时制 Sh
  • Python-PostgreSQL psycopg2 接口 -->executemany

    我目前正在分析维基百科转储文件 我使用 python 从中提取大量数据并将其保存到 PostgreSQL 数据库中 我总是试图让事情进展得更快 因为这个文件很大 18GB 为了与 PostgreSQL 交互 我使用 psycopg2 但该模
  • 自动扩展 Axon 的跟踪事件处理器

    我使用 Axon 框架 4 0 3 和 Spring Boot 来进行事件溯源 并有一个跟踪处理器 该处理器配置为具有多个段 线程来同时处理事件 axon eventhandling processors my processor init
  • 设计confirmation_token无效

    我的用户 rb class User lt ActiveRecord Base devise database authenticatable registerable confirmable token authenticatable r
  • 如何使用 python 避免机器人检测并抓取网站?

    我的问题 我想抓取以下网站 https www coches net segunda mano https www coches net segunda mano 但每次我用 python selenium 打开它时 我都会收到消息 他们将