【问题标题】:checking programmatically that a remote websites 'shows' a particular html element以编程方式检查远程网站“显示”特定的 html 元素
【发布时间】:2011-07-12 17:56:40
【问题描述】:

我想要求我的免费用户向我的网站添加链接。但是,我想以编程方式检查它是否确实添加了我提供的 linkback html 元素,并且没有被某种 CSS 和 Javascript 隐藏。

有什么好的建议吗?

【问题讨论】:

  • 手动访问并查看。其他任何东西都将被绕过/压制/伪造。检测来自您的服务器的自动抓取工具并仅向该 IP 地址提供不同的内容是微不足道的。但除此之外......糟糕。需要链接?俗气...非常俗气。
  • 每月设置一次 Mechanical Turk 任务/blue-moon

标签: php curl html-parsing screen-scraping


【解决方案1】:

不是这方面的专家,但我想说最简单和最可靠的方法是在浏览器中实际呈现他们的页面,以确保所有 CSS 和 JavaScript 都以用户看到的相同方式应用。

显然您不希望自己执行此操作,但我假设您的网站有一个页面,用户会告诉您他们已在其中添加了链接,或者他们根据该链接请求免费使用。此时,您可以将他们的页面加载到隐藏的 IFrame 中,然后使用 JavaScript(JQuery 无疑是最简单的)来查找您的链接并查询其可见性。

这可能会因跨域安全问题(访问 IFrame 的内容)而变得复杂,但您服务器上的代理可以轻松解决此问题。

如果不使用浏览器和 JavaScript,我可以想象在服务器端解析其 HTML、CSS 和 JavaScript 并查找链接不可见的任何提示将是一项艰巨的工作 - 因为有很多方法可以被隐藏(即使是偶然的)。

【讨论】:

    【解决方案2】:
    $my_link = '<a href="http://www.myamazingsite.com/" title="Magic Stuff">Total Amazing Magic Tricks</a>';
    $remote_html = file_get_contents('http://www.remotesite.com/some-amazing-page.php');
    if(strpos($remote_html, $my_link) === false){
        // link was not found
    }
    

    除非您有足够的计算能力和编程知识来设置模拟,否则您将无法轻松判断链接是否被 CSS 或 JS 隐藏。

    【讨论】:

      猜你喜欢
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2014-07-02
      • 2010-11-04
      • 2020-11-27
      • 2013-10-10
      • 1970-01-01
      相关资源
      最近更新 更多