【问题标题】:How to track queries made through xpath from my website?如何从我的网站跟踪通过 xpath 进行的查询?
【发布时间】:2021-03-25 10:49:18
【问题描述】:

假设我有一个网站,我不希望其他人使用 xpath 从我这里获取数据。

我刚刚做了一个快速实验。

我有一个 websiteA.com,我从中复制了 xpath。

我已在 websiteB.com 上上传了 xpath 查询代码。

<?php

$html_string = file_get_contents('https://www.websiteA.com/' );
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html_string);
libxml_clear_errors();
$xpath = new DOMXpath($dom);
$values = array();
$row = $xpath->query('//query');
foreach($row as $value) {
   print($value->nodeValue);
}

?>

在网站 A 上,我安装了 Google Analytics。

有趣的是,当我在 websiteB.com 上进行查询时(从 websiteA 打印数据), 谷歌分析根本不显示任何东西。好像没有人访问过我的网站。

我的问题是,您如何知道是否有人使用 xpath 从您的站点获取数据?

您如何跟踪和识别它?

或者这是否可以在数据库查询级别上以某种方式识别?

【问题讨论】:

  • 您的网络服务器日志应显示请求已发生。有点奇怪,分析没有显示 任何东西 - 我不太熟悉它,但它不计算请求吗?你具体看的是什么报告?我认为它可以以多种方式对数据进行切片和切块。
  • is this somehow identifiable on a database query level...仅当调用该 URL 时也会调用您的数据库。但是数据库不知道请求的来源。 HTTP 网络服务器日志可能取决于它们的配置方式。
  • 我明白了。是的,奇怪的是网络分析根本没有显示任何东西。它计算来自真实人和机器人的访问。我怀疑它可以计算数据库请求。好的,谢谢你的回答。
  • 无论如何,您的服务器 A(和分析)只会看到一个 HTTP 请求,他们不知道服务器 B(xpath)接下来会发生什么。您能做的最好的就是猜测,使用请求频率/模式、IP 地址、用户代理等信息,但这些都可以由废弃您的网站 A 的人控制/修改。

标签: php mysql database web-scraping xpath


【解决方案1】:

此操作称为抓取您的网页。您向我们展示的 php 程序将页面下载到文本字符串中,然后使用-&gt;xpath() 代码从字符串中提取信息。

为防止抓取,您必须阻止下载。但这很困难:要显示页面,网络浏览器也会下载它。而且,搜索引擎爬虫也是如此。

如果您必须防止抓取,您可能需要在允许下载之前要求用户身份验证(用户名/密码/可选的第二个因素)。

为什么分析没有捕获页面下载?通常页面中的一些 Javascript 会发布分析数据。浏览器运行页面的 Javascript,但 file_get_contents() 不运行。

您知道网络上的信息是如何向所有人开放的吗?这就是原因。

【讨论】:

    猜你喜欢
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 2022-01-13
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多