我想用curl来获取某个网站的内容,可是最近这个网站禁用了curl。 
file_get_contents等函数都屏蔽了。
ajax、iframe又不能获得跨域内容
想问下还有什么办法可以得到呢?

解决方案 »

  1.   

    用curl自定义user-agent, 设置为某款浏览器的UA
    比如, 使用FireFox的UA请求百度主页:
     curl -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:14.0) Gecko/20100101 Firefox/14.0.1 FirePHP/0.7.1' http://www.baidu.com用tcpdump观察发送的HTTP请求头:
    GET / HTTP/1.1
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:14.0) Gecko/20100101 Firefox/14.0.1 FirePHP/0.7.1
    Host: www.baidu.com
    Accept: */*
    原理解释:
    http是一个文本协议, 服务端能够判定你的客户端是什么, 是通过User-Agent来确认的, 而一般的http客户端工具比如curl, 是支持自定义UA的, 因此, 可以完全的蒙蔽服务端.
      

  2.   

    我猜他的意思是说服务器给禁用了curl的扩展吧...
      

  3.   

    fsockopen或者pfsockopen是否可用呢?
    如果没有的话可以用他们啊!!!
      

  4.   


    我想用curl来获取某个网站的内容,可是最近这个网站禁用了curl。这个意思应该是说目标网站服务器端禁用了吧
      

  5.   

    呵呵呵 这里好多帖子有时候你会发现理解的不是那个意思.碰过太多次了,好多时候都要去猜是啥意思。
    按照他的意思的话 网站怎么能禁用curl呢,curl是啥咱们都清楚...所以就只能猜,他究竟想描述什么。
      

  6.   


    呵呵, 你说的是不过网站是可以禁用CURL的, 根据UA
      

  7.   


    snoopy试了一下,也被禁用了,一些流文件都被禁用,头痛中
      

  8.   

    本帖最后由 PhpNewnew 于 2012-10-03 10:50:54 编辑
      

  9.   

    敝公司就是禁curl的ua的
    伪造ua即可
      

  10.   

    curl 默认发送的ua是什么内容呢?如果有那的确是可以,不过也是比较多余的,大约稍微有点经验的人都知道这个东西是可以随意改.话说回来单纯这么禁就没啥意义了.
      

  11.   

    也不是多余。有一次高峰期php有点撑不住,禁了curl之后马上就不抛502了…………
      

  12.   

    $ curl -v http://www.baidu.com
    * About to connect() to www.baidu.com port 80 (#0)
    *   Trying 61.135.169.125... connected
    * Connected to www.baidu.com (61.135.169.125) port 80 (#0)
    > GET / HTTP/1.1
    > User-Agent: curl/7.21.4 (universal-apple-darwin11.0) libcurl/7.21.4 OpenSSL/0.9.8r zlib/1.2.5
    > Host: www.baidu.com
    > Accept: */*
    > 如上, User-Agent即为默认的curl产生UA
      

  13.   

    那就是可以针对curl了.那么针对网站限制curl是成立的。
      

  14.   

    其实楼主一直都没有说明
    是他程序所在服务器禁用了 curl 之类的函数
    还是他想抓取的页面所在的服务器做了限制如果是前者,那可以费点事在家里抓好在传上去
    如果是后者,那么只要目标页面还能用浏览器访问到,就总是可以模拟的
    诸如 USERAGENT、REFERER、COOKIE 等等
      

  15.   

    楼主的意思就没表达清楚。真正的原因是他的服务器禁用了curl,所以他用不了。对方服务器禁用CURL的话,只会影响对方服务器上的脚本无法使用CURL函数。至于判断UA,来决定是否禁用CURL,表示目前还没发现有这样的网站。因为UA轻松就可以模拟成任何东西。综上所述,楼主的意思是他的PHP用不了CURL。
      

  16.   

    服务器禁用curl,那还模拟什么啊。