【问题标题】:How to scan a page using curl after the browser interpretation浏览器解释后如何使用 curl 扫描页面
【发布时间】:2016-10-09 02:20:04
【问题描述】:

我需要扫描一个页面,但它只将 javascript 返回给我的 curl 调用。

当我第一次加载页面时,它首先加载 javascript,然后浏览器显示 html 和内容。

我得到的回报:

</script>

<script type="text/javascript" src="/TSPD/0851c0e08fab2000635c4968f73c790ee15b1914cdfc52e8e993db11b34b6a908f83b4ff6e1ec064?type=10"></script>

<script>

(function(){
    var securemsg;
    var dosl7_common;

window["blobfp"] = "11111111102000003e82493d514d300000000300000020http://re.security.f5aas.com/re/";


})();

</script>

<script type="text/javascript" src="/TSPD/0851c0e08fab2000635c4968f73c790ee15b1914cdfc52e8e993db11b34b6a908f83b4ff6e1ec064?type=11"></script>
<noscript>Please enable JavaScript to view the page content.</noscript>
</head><body>

有没有办法扫描页面内容?

谢谢

【问题讨论】:

  • 如果页面内容是由Javascript生成的,则只能通过执行Javascript来检索。时期。当然,您可以在没有成熟浏览器的控制台中执行此操作,方法是安装 JS 引擎(如 V8)并通过它传递代码。
  • 好点@JohannesH。但是,如果需要 DOM,仅按节点的 V8 可能还不够
  • 是的,@Endless,你当然是对的。没有浏览器的 JS 引擎能否提供帮助取决于执行的 JS 代码。在这种情况下可能不需要 DOM,但是如果 JS 只加载 HTML 内容并将其作为一个整体插入。
  • 嗨,我有类似的问题,您采用什么方法成功地废弃了此类网站

标签: javascript php curl encryption


【解决方案1】:

您可以尝试ScrapeGoat 之类的方法,它实际上会在浏览器中呈现网站并注入您用来响应的 javascript。

有一些jsfiddle示例here

var fd = {
    url: prompt("url", "http://"),
    inject: `
      var body = document.querySelector("body").innerText;
      response.send(body);
    `
}

fetch("https://scrapegoat.p.mashape.com/", {
  method: 'POST',
  body: JSON.stringify(fd),
  headers: {
    "Content-Type": "application/json",
    "X-Mashape-Key": "dFYPWXxpp3mshKD6Kimb4pVfvYLvp1YWcWfjsnErOY3HN8zs4a"
  }
})
.then(res => res.text())
.then(text => {
  document.body.style.whiteSpace = "pre"
  document.body.innerText = text
})

你可能应该得到自己的 mashape 密钥

它看起来像这样

curl -X POST --include 'https://scrapegoat.p.mashape.com/' \
  -H 'X-Mashape-Key: <required>' \
  -H 'Content-Type: application/json' \
  --data-binary '{"url":"http://example.com","inject":"response.send(document.querySelector("body").innerText);"}'

【讨论】:

    【解决方案2】:

    curl 请求没有等待页面上的脚本执行的概念。但是,您可以使用无头浏览器(即phantomjs)来实现您的目标。使用无头浏览器,您可以访问 D.O.M.和真实网络浏览器的其他属性,使您能够在页面生命周期的任何时候获取所需的数据。

    【讨论】:

    • 您有任何关于如何在我的代码中使用它的示例吗?
    • 您发布的代码与我的建议无关,因此我无法以此为例。您需要做的是使用无头浏览器来检索信息,而不是使用 cURL。一个示例将取决于您使用的服务器语言和无头浏览器。如果您的知识有限,请联系approach suggested by Endless
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2011-12-13
    • 2015-11-22
    • 1970-01-01
    • 2020-01-11
    • 2020-12-04
    • 1970-01-01
    相关资源
    最近更新 更多