如何用PHP识别google/yahoo/msn的网络爬虫?

2024-07-01

AFAIK,

$_SERVER['REMOTE_HOST'] 应该以“google.com”或“yahoo.com”结尾。

但这是最有保障的方法吗?

还有其他出路吗?


您通过以下方式识别搜索引擎用户代理和IP地址 http://www.jafsoft.com/searchengines/webbots.html。更多信息可以在以下位置找到如何识别搜索引擎蜘蛛和网络机器人 http://www.jafsoft.com/searchengines/spider_hunting.html。还值得注意的是这个清单 http://www.user-agents.org/。然而,您不应该将用户代理(甚至远程主机)视为必然确定的。用户代理实际上只不过是另一端告诉您的内容,当然它可以自由地告诉您任何信息。编写代码来冒充 Googlebot 很简单。

在 PHP 中,这意味着查看$_SERVER['HTTP_USER_AGENT'] and $_SERVER['REMOTE_HOST'].

有很多搜索引擎,但老实说,一般来说,您真正关心的只是少数几个。谷歌和雅虎共同占据了几乎所有的市场。但这当然取决于您想要实现的目标。

Note:对待搜索引擎与普通用户要非常小心(就像乔尔所说的“邪恶的连字符网站”)当谈到内容时。在特别恶劣的情况下,这可能会使您的网站从该搜索引擎中删除。即使这种情况没有发生,您也可能会让一些出于期待而访问网站的用户望而却步。如果他们随后看到“请注册才能查看本文”框,那么,请感谢您的高跳出率。

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

如何用PHP识别google/yahoo/msn的网络爬虫? 的相关文章

  • 如何从 SELECT 查询中获取行数?错误:mysqli_affected_rows() 期望参数 1 为 mysqli,给定对象

    我正在努力对表单进行服务器端验证 使用 AJAX 表单将 用户名 输入字段中的值发送到我的 php 页面 然后检查该用户名是否已存在于数据库中 这是我的 php 代码 result mysqli query dblink SELECT FR
  • 如何使用 preg_match 在数组中搜索?

    如何使用 preg match 在数组中搜索 Example 在这篇文章中 我将为您提供三种不同的方法来完成您的要求 我实际上建议使用最后一个片段 因为它最容易理解并且代码非常简洁 如何查看数组中哪些元素与我的正则表达式匹配 有一个函数专门
  • 请求参数和 phpdoc [重复]

    这个问题在这里已经有答案了 可能的重复 是否有记录 GET POST 参数的标准 https stackoverflow com questions 2121710 is there a standard for documenting g
  • 将数组项合并到字符串中[重复]

    这个问题在这里已经有答案了 如何将所有数组项合并为一个字符串 Use the implode功能 http php net manual en function implode php 例如 fruits array apples pear
  • 使用 php 脚本从不同网站读取文件

    如何从完全不同的服务器读取文件的内容 然后显示内容 我稍后将更改代码以正确地使用返回的信息 您可以使用file get contents http php net file get contents or cURL http php net
  • Recaptcha - 表单定制

    有谁知道 recaptcha 是否可以在没有默认框架的情况下完全自定义 我需要验证码图像和输入字段只有一定的宽度 以前有人成功做到过吗 您可以使用 自定义 主题选项指定自定义标记 方法是在页面上包含类似以下内容 然后 您在页面上创建一个 d
  • 使用 PHP 连接到 MSSQL Server 2008

    我们在 Windows Server 2008 R2 上使用 MS SQL Server 2008 并已安装Apache 2 2 19 and PHP 5 2 17 分别地 我们已经安装了 PHP 的 MSSQL 模块并使用以下连接字符串
  • 我想在我的 Wordpress BootStrap 导航中添加一行

    我有一个简单的网站 我想在导航上方添加一行 其中包含电话号码 也许还有一些社交链接 我的主题名为 Hestia Pro 找不到在哪里添加此额外行 我正在寻找一些关于将其添加到网站主题中的位置的指示 网站是 www gpoint co uk
  • MVC:我应该在哪里格式化数据?

    我从模型 带有数据的数组 获取数据 并且需要以特定格式显示 我需要迭代数组 格式化数据然后显示它 我应该在哪里格式化数据以显示 在模型 控制器还是视图中 谢谢 对数组的迭代并显示数据是在视图中完成的 因此我也会在视图中进行格式化 如果格式化
  • 分页打印所有数据

    我在打印数据表中具有分页的所有数据时遇到问题 我已经做过研究并在此链接中发现了同样的问题 仅打印 https stackoverflow com questions 468881 print div id printarea div onl
  • 如何对 bcmath 数字进行向上、向下和舍入?

    我需要模仿的确切功能ceil http php net manual en function ceil php floor http www php net manual en function floor php and round ht
  • 有没有办法在 PHP 中创建匿名对象

    我可以开始使用如下代码吗 new Controllers ServiceController gt fbdump 所以我不必创建一个 var 来执行单个方法 是的 但是您需要添加一组括号 因为 gt 优先级高于new new Control
  • php 字符串与通配符 * 匹配?

    我想提供将字符串与通配符匹配的可能性 Example mystring dir folder1 file pattern dir file stringMatchWithWildcard mystring pattern gt Return
  • argv 和 argc 未定义或为 null

    当我在 construct 中尝试这个时 var dump argc var dump argv var dump SERVER argv 它返回错误 未定义的变量 argc 和未定义的变量 argv 和数组 大小 0 空 当我在全局中声明
  • HTACCESS 404 错误无法正常工作

    问题 在此服务器上找不到请求的 URL welcome php 此外 尝试使用 ErrorDocument 处理请求时遇到 404 Not Found 错误 事情是这样的 当我访问 www mysite com page 时它工作正常 如果
  • 正确使用 GuzzleHttp/Psr7/Response

    不确定在 php 页面中显示 Psr7 Guzzle Response 的正确方法是什么 现在 我正在做 use GuzzleHttp Psr7 BufferStream use GuzzleHttp Psr7 Response class
  • 删除一行或多行后,在 auto_increment 列上使用下一个可能的主键

    我有一个带有主键 自动增量 ID 列的表 当我删除具有最高 ID 的行 例如 ID 100 时 我想仅使用 mysql 触发器将该 ID 100 用于新行 我怎么做 当我删除时 例如 ID 1 并且最高 ID 是 100 我不想再次使用 I
  • 使用 AJAX 提交表单,将表单数据传递给 PHP,无需刷新页面 [重复]

    这个问题在这里已经有答案了 谁能告诉我为什么这段代码不起作用
  • 购物车商品未显示在客户视图中

    运行 Magento 1 7 2 当在管理员的客户视图中时 它显示客户购物车中的 1 件商品 但不显示详细信息 我附上了屏幕截图 有谁知道问题可能是什么 或者您能否验证它是否正常工作 以便我知道这是我的安装 Thanks 在此处查看屏幕截图
  • awk 单引号或双引号的用法

    为什么 awk 命令使用单引号和双引号不能产生相同的结果 root vm90 root who awk print 2 root vm90 root who awk print 2 我想在 PHP shell exec 函数中使用 awk

随机推荐

  • 画笔和钢笔使用指南

    制作 GDI 画笔和钢笔有多贵 我应该在添加所需的基础上创建它们并将它们包装在 using 中以便快速处理它们 还是应该创建一个类似于 System Drawing Brushes 类的静态类 IMO 它们足够高效 您通常不应该创建在多个方
  • 使用按键选择 PrimeNG 表上的行

    我正在使用 PrimeNG 表 并尝试选择pSelectableRow通过按键 我有一个全局搜索输入 它将过滤表的所有结果 当用户完成搜索时 我希望他们能够单击键盘上的按钮并从过滤的选项中选择行 目前 如果用户正在搜索并且输入框获得焦点 则
  • Mac 上缺少 spring-boot-starter-web hibernate-validator 依赖项

    我在STS Spring工具套件 上创建了Spring Boot项目 Spring Starter Project Window和Mac都有 这是我的pom xml
  • 尝试创建测试时注入自动装配依赖项失败

    我正在尝试创建一个junit测试存储库 我得到了这个很好的异常 完全例外 org springframework beans factory BeanCreationException Error creating bean with na
  • 多处理冻结计算机

    我通过使用多处理提高了执行时间 但我不确定 PC 的行为是否正确 它会冻结系统 直到所有进程完成 我使用的是 Windows 7 和 Python 2 7 也许我做错了 这就是我所做的 def do big calculation sub
  • 解析 Apple Mach O-Linker 错误?

    我正在使用解析框架 突然出现 39 个错误 即使我删除框架 它仍然有错误 我已经检查了构建阶段 设置和路径 但没有任何效果 另外 我正在使用 xcode 4 6 3 我有一台过时的 macbook Ld Users anikakablan
  • 修改 %in% 运算符以查找列表中的对象

    我必须修改 in 运算符将在列表中查找对象 我有一个清单 list1 lt list c 5 6 6 list 2 c 5 6 string 未修改 in 测试这些值后的运算符 c 5 6 in list1 6 in list1 2 in
  • ggplot2 每个美学的多个尺度/图例,重新审视[重复]

    这个问题在这里已经有答案了 我有一个例子 我想使用 ggplot 突出显示序列比对的几个属性 我正在使用 geom tile 并希望为两个分数属性提供两组不同颜色的图块 我只能想象一个 我意识到每种审美的一个尺度的限制 以及其背后的逻辑 h
  • 选择数据结构

    根据需求使用不同的数据结构 但我如何知道应该使用哪种数据结构 我只是想知道如何选择合适的数据结构 谢谢 此流程图适用于 C 中的 STL 但您可以用 C 实现 STL 容器支持的任何数据结构 列表是一个链接列表 Vector是一个动态数组
  • 检测 Citrix“应用程序模式”?

    请原谅我可能用错了这个 应用程序模式 的术语 我们的应用程序在启动过程中遇到问题 直到主窗口打开后才显示任务栏图标 即使在此之前屏幕上有加载进度窗口 登录窗口等 我们更改代码来修复此问题 但不幸的是 当通过 citrix 运行应用程序时 此
  • 变量值传递到另一个表单,VB.NET

    我确实有两个公共变量 每个变量都来自两种不同的形式 Form1 VB Public UserNo As String Form2 VB Public MyUserNo As String 在我的 Form2 VB 文件中 我为 Form1
  • Android 6.0 中的打瞌睡和应用程序待机模式

    Google 在 Android 6 0 操作系统中引入了 Doze 和应用程序待机模式 设备将进入Doze如果设备被拔掉并且在一段时间内未使用并且应用程序在一段时间内保持不活动状态 则该应用程序将进入模式StandBy模式 如果我错了请纠
  • Android Fragment 后台事务

    我正在开发一个带有片段的应用程序 它有一个 JavaScript 接口 在主 Activity 中调用 并具有片段替换逻辑 当应用程序位于前台时 一切正常 但当应用程序位于后台时 片段事务替换不起作用 当我返回应用程序时 我仍然看到旧片段
  • 调用exe中定义的函数

    我需要知道一种从 python 脚本调用 exe 中定义的函数的方法 我知道如何从 py 文件调用整个 exe 除非您的 EXE 是 COM 对象 或者像 dll 那样专门导出某些函数 否则这是不可能的 对于 COM 方法 请查看以下资源
  • Elasticsearch 字段名称区分大小写

    我正在寻找有关 ElasticSearch 中字段名称区分大小写的建议和最佳实践 以及是否有全局配置来使字段名称不区分大小写 另外 如果映射中不存在 是否可以禁止 ES 添加不同的字段 这是一个例子来说明这一点 1 使用小写的一个字段 名称
  • Android 自定义进度条不旋转

    我想更改默认动画ProgressBar 所以我在我的主题中添加了自定义样式 样式 xml 我在我的内部调用这种风格ProgressBar具有以下内容 进度条 xml
  • 从 iso 货币符号获取 NativeEnglishName,而不依赖于登录用户的当前文化

    我所拥有的是货币IsoCode EUR 此属性也可以在 RegionInfo 类 gt ri ISOCurrencySymbol 但 RegionInfo 类取决于当前登录的用户 我想要的是获得像 Euro 这样的 NativeEnglis
  • 如何使用 awk 在文本文件的第一行之前添加一个空行

    我有一些文本文件 我想在每个文本文件的第一行之前添加一个空行 我怎样才能用 awk 做到这一点 我会比较喜欢GNU sed对于此任务 要在文件开头添加空格 sed 1s file txt 要使用以下命令对多个文本文件执行此操作 txt扩展名
  • @AfterReturning 方面在切入点方法的同一事务中执行?

    我需要在执行函数后执行任务 我为此使用了 Aspect 但我有些困惑 我在 Spring 服务中有一个函数 A Transactional readOnly false isolation Isolation DEFAULT propaga
  • 如何用PHP识别google/yahoo/msn的网络爬虫?

    AFAIK SERVER REMOTE HOST 应该以 google com 或 yahoo com 结尾 但这是最有保障的方法吗 还有其他出路吗 您通过以下方式识别搜索引擎用户代理和IP地址 http www jafsoft com s