如何防止依赖于XPath的抓取工具获取页面内容

6 html css php xpath parsing

一个php库让evreybody能够攻击我(比如cURL).然后我有一个想法来阻止它,我想为我的元素使用动态类名.看这个:

<div class="<?php $ClassName ?>">anything</div> // $className is taken from the database
Run Code Online (Sandbox Code Playgroud)

注意: $ClassName会有不同的时间.

在这种情况下,任何人都不知道我的类名是什么来选择我的元素然后复制我的数据.现在我有两个问题:

  1. 我如何在$ClassName.$ClassName (在css文件中)之间进行通信?换句话说,我如何使用php变量的css类名?(动态css类)
  2. 是否优化从数据库中获取所有类名?

Sha*_*deh 3

使用数据库获取类名并不是最佳选择,除非可以在本地完成。您应该定义一个包含所有类名的数组,然后通过array_rand,如下所示:

\n\n
// php code\n   <?php\n     $classes = array(\'class1\',\'class2\',\'class3\',\'class4\'); \n     $class_name = $classes[array_rand($classes)];\n   ?>\n\n\n// html code\n     <div class="<? php echo $class_name; ?>">anything</div>\n\n\n// css code\n   <style>\n     .<? php echo $class_name; ?> {\n      // your css codes\n     }\n   </style>\n
Run Code Online (Sandbox Code Playgroud)\n\n

注意:您必须知道您不能在.css文件中使用 php 代码,那么您应该在文件中编写所有您想要动态的 css 代码.php并使用<style> stuff </style>.

\n\n
\n

同时,正如@s\xd1\x94\xd0\xbcs\xd1\x94\xd0\xbc所说,你可以创建动态html标签。

\n
\n\n

像这样的事情:(完整代码)

\n\n
// php code\n   <?php\n     // dynamic class\n     $classes = array(\'class1\',\'class2\',\'class3\',\'class4\'); \n     $class_name = $classes[array_rand($classes)];\n\n     // dynamic tags\n     $tags_statr = array(\'\',\'<div>\',\'<div><div>\',\'<div><p>\',\'<span><div>\');\n     $tags_end = array(\'\',\'</div>\',\'</div></div>\',\'</div></p>\',\'</span></div>\');\n     $numb = array_rand($tags_statr);\n   ?>\n\n\n// html code\n     <?php echo $tags_statr[$numb]; ?>\n     <div class="<? php echo $class_name; ?>">anything</div>\n     <?php echo $tags_end[$numb]; ?>\n\n\n// css code\n   <style>\n     .<? php echo $class_name; ?> {\n      // your css codes\n     }\n   </style>\n
Run Code Online (Sandbox Code Playgroud)\n\n

为了获得更高的安全性,您可以放置​​您的内容(此处为“任何内容”) (除了外部动态标签)。例如:

\n\n
<span1>anything</span1> // <span1> changed to <span2,3,4....>\n
Run Code Online (Sandbox Code Playgroud)\n\n

在这种情况下,带有数据的相邻标签也是动态的,这使得爬虫变得更加困难。

\n\n

最后,我必须说,你无法完全阻止爬虫,你只会让它变得困难。如果您确实想保护您的数据,您可以执行以下操作:

\n\n
    \n
  • 增加了对用户的限制。(例如只有注册用户才能看到重要信息)
  • \n
  • 监控使用您网站的 IP (如果可疑,则阻止它)
  • \n
  • 使用相关软件。(例如限制每天对IP的搜索)
  • \n
\n