使用curl获取地址的时候,显示Bad Request.但是这个地址在浏览器里有可以打开,程序也没有问题。采集别的网址是可以的

解决方案 »

  1.   

    没人,只有机器Bad Request要么url写错了,要么对方对你有限制,检测了你的客户端header
      

  2.   

    几种情况
    1.远端有检测客户端过滤行为
    2.远端有redir行为
    3.请求中间层
    4.近端有过滤行为
    5.某个过程有缓存机制
    6.未知几种情况大致都是你并非直达“真实内容”无终极解决方案,有的话,可以拿出来取笑一下某校长
      

  3.   

    补充一下,我这边即使普通浏览也经常bad request,需要刷新一下,因为我本地应用了上述3+4+5的策略
      

  4.   

    如何查看  
    远端是否有检测客户端过滤行为    
    远端是否有redir行为
      

  5.   

    redir可以用些http检测工具就知道看有没有过滤,我是凭经验的,主要方法是更换一些客户端就知道
    例如某些日本站,直接去就是403(绕道也不行),屏蔽浏览器头去可以
    经过几次筛选,发现他们居然检查我的浏览器支持语言为“zh-cn”就403,damn it!
      

  6.   

    还是 如楼主的标题
    但是我这边的情况是 域名没有解析 只能通过 127.0.0.1  localhost 这种本地解析
    才能访问服务器上的 网站  但是用file_get_contents()获取值时,报错  failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request  后来在网上说用CURL比较好 就用了 curl ,  但是 也是直接报错:bad request!
    不知道描述的能看明白不? 希望能帮帮忙!
      

  7.   

    会不会是人家用了重写模块,你访问的URL地址并不是真正的URL地址呢?
      

  8.   


    没有!就是真正的URL地址!
      

  9.   

    我遇到过这种情况,就是没有获取到真是的地址!
    可以试试firefox的插件httpfox,看看能否获取到真实地址,如果不行
    你可以下载一个获取真实地址的软件试试。