【问题标题】:curl can not get complete response from a urlcurl 无法从 url 获得完整的响应
【发布时间】:2011-09-24 16:06:38
【问题描述】:

我在 centos 5.5 中使用 curl 并像下面这样 curl 从 url 获取响应:

curl 7.21.2 (x86_64-unknown-linux-gnu) libcurl/7.21.2 OpenSSL/0.9.8b zlib/1.2.3     libidn/0.6.5
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smtp smtps  telnet tftp 
Features: IDN IPv6 Largefile NTLM SSL libz

http://www.51buy.com/portal.html,我可以得到响应但它不完整,例如你找不到'934',但'934'确实在那个html源代码上。

另一方面,在我的 Windows 上,我使用了 curl 版本,如下所示

curl 7.21.2 (i386-pc-win32) libcurl/7.21.2 OpenSSL/0.9.8o zlib/1.2.5 libidn/1.18 libssh2/1.2.7 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap pop3 pop3s rtmp rtsp  scp sftp smtp smtps telnet tftp
Features: AsynchDNS IDN Largefile NTLM SSL SSPI libz

获取相同的url,就可以得到完整的响应。

谁能给我一些线索来帮助我解决问题? 提前谢谢你。

【问题讨论】:

    标签: curl libcurl


    【解决方案1】:

    当您收到不同的响应时,通常是因为该网站会根据您的用户代理或类似内容尝试做不同的事情。

    要伪造它,找出浏览器发送的确切请求,然后尝试尽可能接近地模仿它通常是一种成功的方法。

    在这种情况下,由于 windows 版本的 curl 似乎可以工作,您可以尝试将 linux 案例中的用户代理设置为看起来像 windows curl 版本...

    由于您没有提供任何具体的协议细节,我们无法进一步猜测实际内容。

    【讨论】:

    • 感谢您的回复。根据你的建议,我在wins和x64 centos上使用了curl -v 51buy.com/portal.html之类的命令,windows上的用户代理是:User-Agent: curl/7.21.2 (i386-pc-win32) libcurl/7.21.2 OpenSSL /0.9.8o zlib/1.2.5 libidn/1.18 libssh2/1.2.7 librtmp/2.3,在centos上是: User-Agent: curl/7.21.2 (x86_64-unknown-linux-gnu) libcurl/7.21.2 OpenSSL/ 0.9.8b zlib/1.2.3 libidn/0.6.5,区别是系统版本,然后我通过H选项将centos中curl的版本改成wins,但是没有任何效果。
    猜你喜欢
    • 2020-07-12
    • 2020-05-15
    • 1970-01-01
    • 2011-04-27
    • 2017-09-16
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多