- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的网站有一个数据库查询;填写验证码会给您 5 分钟的查找时间。还有一些自定义代码可以检测任何自动化脚本。我这样做是因为我不希望有人对我的网站进行数据挖掘。
问题是 Google 在抓取我的网站时看不到查找结果。如果有人正在搜索查找结果中存在的字符串,我希望他们通过谷歌搜索找到该页面。
对我来说显而易见的解决方案是使用 PHP 变量 $_SERVER['HTTP_USER_AGENT']
来绕过 Google 机器人的验证码和自定义安全代码。我的问题是这是否明智。
人们随后可以使用 Google 的缓存查看查找结果而无需填写验证码,但 Google 自己的脚本检测方法会阻止他们对这些页面进行数据挖掘吗?
或者人们是否可以通过某种方式让 $_SERVER['HTTP_USER_AGENT']
显示为 Google 以绕过安全措施?
提前致谢。
最佳答案
Or would there be some way for people to make $_SERVER['HTTP_USER_AGENT'] appear as Google to bypass the security measures?
当然。用户代理很容易伪造。参见例如User Agent Switcher for Firefox .垃圾邮件机器人也很容易将其用户代理 header 设置为 Google 机器人。
不过,它可能仍然值得一试。我会说只是尝试一下,看看结果是什么。如果遇到问题,您可能需要考虑其他方法。
识别 Google 机器人的另一种方法可能是它使用的 IP 范围。我不知道机器人是否使用定义的 IP 范围 - 可能不是这种情况,您必须找出答案。
更新:似乎可以通过分析其 IP 来验证 Google Bot。来自 Google Webmaster Central: How to verify Googlebot
Telling webmasters to use DNS to verify on a case-by-case basis seems like the best way to go. I think the recommended technique would be to do a reverse DNS lookup, verify that the name is in the googlebot.com domain, and then do a corresponding forward DNS->IP lookup using that googlebot.com name; eg:
host 66.249.66.1 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
host crawl-66-249-66-1.googlebot.com crawl-66-249-66-1.googlebot.com has address 66.249.66.1
I don't think just doing a reverse DNS lookup is sufficient, because a spoofer could set up reverse DNS to point to crawl-a-b-c-d.googlebot.com.
关于php - 允许 Google 绕过 CAPTCHA 验证 - 明智与否?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2621533/
我有一个包含 1+N 个线程和 N 个 FIFO 队列的程序,例如:FIFO_queue_t* fifo_queque[N]。一个线程负责填充这 N 个 FIFO 队列。并且其他每个线程都与 1 个
我正在使用 Wise Installer Editor 编写 .msi,并且我想将所有文件复制到注册表项中指定的目录中。 我如何在 Wise 中指定这一点? 提前致谢, 埃内斯托 最佳答案 您可以尝试
我们有一个场景,其中我们尝试获取附加的磁盘虚拟机以及分配给这些磁盘的相应总空间。是否有任何命令或脚本可以获取详细信息? 我已使用命令 Get-AzureDisk 获取输出,但它没有显示列表中的所有虚拟
我有一个包含多个派生类的类,每个派生类都有自己的构造函数。 class A { public: static A *create_new_A(int child_ID);
我有一个小问题:) 我计划建立一个相当不寻常的 web 项目,大约有 1000 个页面,其中不会有经典的导航(仅适用于关于页面和联系人),并且所有页面都不会链接到一个又一个。 它的索引 > 打开随机页
我们的应用程序中有一些数据。有时它会被保存,所以我们为它做了一个实体和一个 NSManagedObject 子类。但是,通常情况下,对象将被实例化并且永远不会保存。我正在考虑使用另一个具有 NSInM
假设我有一个表如下: Class | Subject | Student | Marks ---------------------------------------- 1
刚刚在我正在编写的一些代码中偶然发现了这种情况,并且很好奇“正确”的方法是什么。举例来说,我有一大堆对象,我需要按某个属性对其进行分组,但组的顺序很重要。 例如。对象: var obj = {
如何在 Android 应用 Activity 中启用 Mutli 窗口选项? 我尝试在两个单独的 Activity 中使用 AndroidManifest Activity 属性 android:r
我发现 ear 插件覆盖了 war 插件并阻止调用 war 任务。我通过直接调用它来绕过它。 这是远程明智的还是我应该放弃并转向 eclipse 和 gradle 中的多项目设置? ear {
我们的安装程序是用 Inno Setup 编写的,我们实际上对它非常满意。然而,一些客户不断要求他们可以更轻松地通过 Active Directory 分发 MSI 安装程序。通过扩展 Inno Se
我正在尝试使用 Visual Studio 2017 (v15.4.5) 将现有的 WCF Web API(针对 .NET Framework 4.6.1)移植到 ASP.Net Core 2,但在找
我是一名优秀的程序员,十分优秀!