【问题标题】:Prevent specific information being copied from my website in PHP?防止在 PHP 中从我的网站复制特定信息?
【发布时间】:2018-04-03 09:59:59
【问题描述】:

请提出一些在网站上呈现数据的方法,使任何人都无法像 justdail (https://www.justdial.com/Delhi/Cafe-La-Pinoz-Near-Alchemist-Hospital-Sector-53/) 一样复制该数据。请打开无法从此网页复制电话号码的 URL。我想要 PHP 中类似的东西。 我不想从网站上隐藏信息,只是防止用户从网站上复制或抓取数据。没有图像方法。

【问题讨论】:

  • 请记住,用户可以选择只关闭 JavaScript,因此总有办法。如果您想保护某些东西,请不要将其置于公共领域。
  • 请检查这个 URL (justdial.com/Delhi/...) 我正在寻找类似的东西。无法抓取电话号码的地方
  • 该页面的大部分内容似乎由每个字母的单独 <span> 元素组成,并使用 CSS ::before 规则填充实际字母。那是……是的……有点疯狂,但在防止随意复制和粘贴方面也有点有效。这也使得它对用户极具敌意。而且仍然很有可能为该混淆方法编写自定义刮板,只是这样做稍微复杂一些。
  • 如果你真的想走那条路,是什么阻止你以完全相同的方式去做?

标签: php web-scraping


【解决方案1】:

我真诚地建议你不要这样做。

想想你想做这件事的原因。您可能想阻止人们窃取数据并为自己使用,对吗?

问题是,没有人通过手动复制和粘贴来窃取数据。如果有人要窃取您的数据,那么他们将使用完全绕过浏览器用户界面的抓取工具,并且不会受到您为阻止它而设置的任何前端系统的影响。

另一方面,阻止手动复制+粘贴会影响您的普通用户,这些用户可能对窃取数据不感兴趣,但可能出于正当原因想要复制数据——例如将电话号码复制到通讯簿等他们可以拨打它。

因此,按照您的要求,您会惹恼您的真实用户,并且对您真正想要屏蔽的人没有任何影响。说真的,不要这样做。

【讨论】:

  • 完全同意您的意见,但您能否建议一种方法来阻止从黄页和 Yelp 等网站上抓取数据,因为它们的关键数据是餐厅电话号码。在这个 URL ((justdial.com/Delhi/…) 中。提取电话号码真的很困难,因为他们正在使用某种算法为号码随机分配 css 类。
  • @SajanKaundal - 简单地说,你不能。如果可以在浏览器中查看该页面,则可以对其进行抓取。你也许可以让它更难一些,但最终一旦可以下载某些东西,你就必须假设它可以被复制。
  • 我能建议的最佳解决方案就是写下坚如磐石的条款和条件,并在发现有人抄袭您的作品时强制执行。一个很好的技巧是在你的真实数据库中包含一些“假”数据,以便在复制时很容易发现。地图绘制公司就是这样做的——他们在道路布局中故意犯了一些小错误,这让他们很容易看到竞争对手是否抄袭了他们的地图,而不是实际为自己绘制道路。
【解决方案2】:

您也可以使用 jQuery 来实现。您可以使用以下代码来防止用户通过 Ctrl+C Ctrl-V,或使用鼠标。该代码允许用户选择文本,但他无法从页面复制文本。

$('body').bind('copy paste cut drag drop', function (e) {
   e.preventDefault();
});

请找到示例 jsfiddle here

更新

如果您想禁用某些字段的剪切-复制-粘贴操作 - 例如密码输入字段或文本区域,以下 sn-p 应该会有所帮助。当复制或剪切事件被触发时,什么都不会发生。

$('input[type=text],textarea').bind('copy paste cut drag drop', function (e) {
   e.preventDefault();
});

以上代码将禁用所有文本框和文本区域的复制操作。您可以通过将 $('input[type=text],textarea') 替换为您的控件来为您的控件实现相同的功能。

【讨论】:

  • 请检查这个 URL (justdial.com/Delhi/…) 我正在寻找类似的东西。无法抓取电话号码的地方
  • @SajanKaundal 已更新更新部分下的代码。请参考并根据您的控制进行修改。
  • 禁止使用上述代码复制数据,但如何阻止某人抓取我的内容或使其更加困难,例如在 CSS 中使用 ::before。
猜你喜欢
  • 2011-06-17
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-21
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
相关资源
最近更新 更多