1

我正在使用 cfhttp (Lucee Server) 通过以下方式从 url 中抓取页面内容:

<cfhttp url="#libs.originalAdPage#" method="GET" />

然后,我将此内容放在页面上的 div 中。

这段代码已经工作了很长时间。

我需要报告因内容而被抓取的 url,并且该信息被放入另一个不受我控制的网站表单中。我决定将网址转换为缩短的位网址。我将该过程构建到页面中以创建一个位链接并返回该 url 以替换现有 url。

如果我使用带有来自linkedin的缩短网址的页面,页面将被抓取并正确显示在div中。

<cfhttp url="http://bit.ly/1NPhPgc" method="GET" />

但是,如果我对一个简短的 URL 的 Indeed.com 页面执行相同的 cfhttp 调用,我会收到连接失败错误。

<cfhttp url="http://bit.ly/1RQvlim" method="GET" />[![cfdump of connection failure][1]][1]

如果我直接在浏览器中打开此 URL,则页面将正确显示。

任何想法将不胜感激。

谢谢,

迈克尔

4

1 回答 1

2

我无法访问 Lucee 服务器进行测试,但是 ColdFusion 服务器上的 cfhttp 对我来说对于这两个位 URL 来说都很好。cfhttp 遵循重定向,并且 FileContent 包含预期的 Indeed.com 页面。

如果您阻止 cfhttp 自动跟踪重定向以便您可以手动调试和跟踪重定向,您是否验证过 Bitly Indeed URL 会发生什么?IE

<cftry>
    <cfhttp url="http://bit.ly/1RQvlim" method="GET" redirect="no" />
    <cfdump var="#cfhttp.responseHeader#" />
    <cfhttp url="#cfhttp.responseHeader.Location#" method="GET" />
    <cfdump var="#cfhttp#" label="cfhttp2" />
<cfcatch>
    <cfdump var="#cfcatch#" label="cfcatch" />
</cfcatch>
</cftry>

Indeed.com 确实关注爬虫和用户代理——只需查看他们的robots.txt即可获得证据。

如果 Lucee 的 cfhttp 实现或您的 IP 地址(例如,由于所有抓取而被列入黑名单)有特定的东西,您是否可以访问不同的服务器进行测试?

您是否尝试过按照如何通过 cfhttp 模拟真实的 http 请求来调整 cfhttp 用户代理和/或任何其他标头?

于 2015-10-19T23:57:25.723 回答