【问题标题】:Error using cfhttp to retrieve page contents from bitly url使用 cfhttp 从 bitly url 检索页面内容时出错
【发布时间】:2015-10-19 21:07:54
【问题描述】:

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

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

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

这段代码已经运行了很长时间。

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

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

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

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

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

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

任何想法都将不胜感激。

谢谢,

迈克尔

【问题讨论】:

    标签: coldfusion cfhttp lucee


    【解决方案1】:

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

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

    <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 地址存在特定问题(例如,由于所有抓取而被列入黑名单),您是否可以访问不同的服务器进行测试?

    您是否尝试过根据How to emulate a real http request via cfhttp? 调整 cfhttp 用户代理和/或任何其他标头

    【讨论】:

    • 我在 cfhttp 调用周围使用 cftry/cfcatch 测试了您的代码,它适用于所有网址。我唯一的解释是首先运行没有重定向的代码然后拉入文件内容所花费的额外时间。我很高兴。西弗,非常感谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多