大致 原理.用 socket 连接对方 WEB 服务器.
先把登陆表单里的表单变量POST到登陆页. 取得设置的SID(可能在URL中,可能在COOKIE中),大部分是COOKIE了. 取得COOKIE 然后.再GET附件URL即可(记得附上取得的COOKIE值.如果你觉得烦,可以找人付费制作.

解决方案 »

  1.   

    大致 原理.用 socket 连接对方 WEB 服务器.
    先把登陆表单里的表单变量POST到登陆页. 取得设置的SID(可能在URL中,可能在COOKIE中),大部分是COOKIE了. 取得COOKIE 然后.再GET附件URL即可(记得附上取得的COOKIEasp
    xml4组建,原理类似,不是socket 编程,直接发送
      

  2.   

    你php登录时把cookie发上去就行了。
      

  3.   

    先用抓包工具到 登陆完成的页网。 
    查看成功后,包头。然后用socket 伪造 包头登陆即可。PS:如果对方网站检验特别严格的话,这种方法可能失败。
      

  4.   

    用JavaScript结合XMLHTTP也可以啊ps:
    Discuz是的登录是使用Cookie的
    这样每次操作都需要连接数据库验证用户身份
    是不是效率很低?
    挺郁闷的
      

  5.   

    GaoXX(我即老高,老高即我) 兄
    用JavaScript结合XMLHTTP的方法具体如何实现呢?
      

  6.   

    Gdj(陈水.智商只有129.非卖品) 兄如何将客户端的cookie通过客户端的php发送到另一服务器端?俺不知用什么函数呀
      

  7.   

    mrshelly(Shelly)兄,很想得到您的具体帮助呀。
      

  8.   

    你用一个正常的网页登录。然后找个工具查看一下它的header。php用socket打开网页时把header一模一样的发上去。这是最简单的做法。
      

  9.   

    什么工具查看header的?谢谢。
      

  10.   

    Mozilla到下面地址装个live http headers就可以看到和服务器交互的整个过程
    http://livehttpheaders.mozdev.org/installation.html#
      

  11.   

    PEAR 里有个 HTTP 的类,用那个类,就可以实现POST GET等操作.
    我一般用www.k1m.com 的类,很小巧.功能也不错.
      

  12.   

    又有人问这种问题
    http://www.tianjiaonet.com/blog.php?aid=7&BlogID=1
      

  13.   

    live http header要Mozilla浏览器才行吗?如何使用?xpi是什么文件?
      

  14.   

    mrshelly(Shelly) 兄,有无PEAR 里 HTTP 类的中文用户手册或简要说明?
      

  15.   

    Meteorlet(www.dictworld.com)兄,谢谢您的指导,可以我不知该如何调用您的函数。可以给出以下这个例子的具体函数调用代码吗?谢谢。代码目的,获取pdafans的漫画链接。
    登录页面:http://bbs.pdafans.com/logging.php?action=login
    用户名:testphp
    口令:123456
    欲获取的html代码的页面:http://bbs.pdafans.com/viewthread.php?tid=14020&extra=page%3D1谢谢。
      

  16.   

    使用php的扩展模块curl库比较简单
      

  17.   

    同意  piner(nadmin 简称难民) 的使用curl扩展来模拟post和get操作比较简单!
    详细参考手册,另外,PEAR的手册在 pear.php.net 中有下载或者在线看。
      

  18.   

    我试着运行如下代码,可是不成功
    /* 构造用户名,密码字符串 */ 
    $str = ("action=login&formhash=be21cb66&referer=index.php&cookietime=2592000&username=testphp&password=123456");  //准备传输登录参数$response = GetWebContent("bbs.pdafans.com","POST /logging.php HTTP/1.0", $str,"");  //调用GetWebContent函数
    echo $response['location'].$response['content']."<br>";  //显示登录后结果
    echo $response['sessid']."<br>";  //显示Session ID号
    if ( preg_match('/error\.php/i',$response['location'])) 

        echo "登陆失败<br>"; 
    } else { 
        echo "登陆成功<br>"; 
        // 不可以访问user.php,因为不带sessid参数 
        $response = GetWebContent("bbs.pdafans.com","GET /viewthread.php HTTP/1.0", 'tid=14020', ''); 
        echo $response['location']."<br>"; // 结果:error.php?errcode=2     // 可以访问user.php 
        $response = GetWebContent("bbs.pdafans.com","GET /viewthread.php HTTP/1.0", 'tid=14020', $response['sessid']); 
        echo $response['location']."<br>"; // 结果:user.php 
    } 请帮看看有什么不足?
      

  19.   

    Meteorlet(www.dictworld.com) 兄,请帮看看以上调用程序有什么不足?
      

  20.   

    用网页代理的思想,很容易就能登上去!
    不过,具体代码我没时间写.你吧他的代码放在你的服务器上,自己登自己的,若能登成功,那么你吧哪个登陆页面的session,cookie 都打印出来,再用下面代码发送出去,至于如何吧
    session,cookie 装入数组,那就是你的事了!function HttpRequire()
    {
        global $host,$path,$url,$cookieval,$postval,$length,$headers,$html,$link,$port;


    /////////////////连上指定端口并发送构造的HTTP报文
    $fp = fsockopen($host, $port, $errno, $errstr, 30);
        if (!$fp)
    {
        echo "$errstr ($errno)<br />\n";
    exit();
        }
    else
    {
        $out = "POST $link HTTP/1.0\r\n";
            $out .= "Host: $host\r\n";
            $out .= "User-Agent: Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)\r\n";
            $out .= "Referer: $url\r\n";
    if(count($cookieval)>0)
    {
        
        foreach($cookieval as $k=>$v)
    {
        $out .= "Cookie: $k=$v;\r\n";

    }
    }
            $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
            $out .= "Content-Length: $length\r\n";
            $out .= "\r\n";
            $out .= $postval;
    }
        fwrite($fp, $out);
    $fheader=1;$headers="";$html="";$line="";
    while (!feof($fp)) 
    {
            $line=fgets($fp, 128);
    if($fheader==1)
    {
        if($line=="\r\n")
        $fheader=0;
    else
        $headers.=$line;
    }
    else
    {
        $html.=$line;
    }
        }
        fclose($fp);

    }
    以上代码是一个网页代理程序的部分,全部代码是我和我同学写的!没好处不给,也没必要给,你说是不!
      

  21.   

    我用我的代理程序登陆bbs.pdafans.com成功!
      

  22.   

    经过同学同意,可以发表.
    我们也是新手,希望高手能完善这个代理程序的图片处理部分,链接替换功能!谢谢!<META content="text/html; charset=gb2312" http-equiv=Content-Type>
    <!--
    编写日期:2005-9-20-----2005-9-30
    作者:湘潭大学信息工程学院计算机科学与技术专业2004级计算机五班伍侃&易岳城
    说明:本程序仅实现大部分的功能,对图片处理没有做过多细致的工作.欢迎大家修改,但请不要删除本段注释.
    -->
    <?php
    ////////////////////////////认证处理
    //if(md5($dxtu)!=$mxtu) 
    //{ 
    //   header('location: ../enter.php');
    //   exit();
    //}  
    $time1=time();////////////////////////////变量定义  
    //    http://localhost/bbs/faq.php?page=usermaint&myid=123456789#6$host="";        //目标地址的HOST名  如localhost
    $path="";        //目标的PATH        如/bbs/faq.php    
    $link="";        //目标的LINK        如/bbs/faq.php?page=usermaint&myid=123456789#6
    $cookieval="";   //从用户得到的cookie数组,将发给学校
    $postval="";     //从用户得到的POST字符串,将发给学校
    $headers="";      //从目标得到的头信息
    $html="";         //从目标得到的HTML内容
    $port=80;         //目标的端口号     
    $ip="127.0.0.1";  //目标的IP
    $filename="";     //目标的文件名///////////////////////////链接部分链接的信息
    $serverpath="http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?enter="; //提供链接的路径
    $collegepath="";
    $schoolpath="";
    if(!isset($enter)) 
         $url="http://localhost/bbs/";
    else $url=$enter;
    /**************************
    对url安全处理
    ****************************/
    function safe($a)

    $a=addslashes($a);
    $a=str_replace("_","\_",$a);
    $a=str_replace("%","\%",$a);
    return $a;
    }
    /**************************
    对目标的ip进行过滤
    ****************************/
    function Allow($ip)
    {
       ////////////////////////////////////////////////////////////////
       $schoolnet=array("127.0.0.1");
       if(!in_array($ip,$schoolnet))
          { error_messages("您所请求的页面不在可访问列表!");
        exit();
      }
         
    }
    /**************************
    发送错误信息
    ****************************/
    function error_messages($why)

      echo $why;
      exit();
       
    }
    /**************************
    处理所有的url
    ****************************/
    function DealURL()
    {
       global $url,$host,$path,$link,$schoolpath,$collegepath,$serverpath,$port,$ip,$filename;
       
       /////////////////////处理url得到安全正确的url
       $url= preg_replace("/(.*?)['\"](.*?)['\"](.*?)/is","\\2",$url);
       $url=str_replace('\\',"",$url);
       $url = preg_replace("/ /i", "%20", $url);
       $url=safe($url);
       $url = preg_replace("/\/\//i", "/", $url);
       $url = preg_replace("/:\//i", "://", $url);
       //////////////////////得到HOST,IP,处理目标IP是否在可访问列表中
       $urlparsed=parse_url($url);
       $host=$urlparsed['host'];
       $ip=gethostbyname($host);
      // Allow($ip);
       if(isset($urlparsed['path']))
           $path=$urlparsed['path'];
       
       
       //////////////////////处理得到path中的目录
       $array=explode("/",$path);
       $dir="";
       $filename="";
       foreach($array as $k=>$v)
       {
          if($k<count($array)-1)
         $dir=$dir.$v."/";
      elseif(strrpos($v, ".")==true) 
         {
        $filename=$v;
        break;
     } 
          else $dir=$dir.$v."/";
       }
       $path=$dir.$filename;
       
       
       ////////////////////得到LINK
       if(isset($urlparsed['port']))
          $port=$urlparsed['port'];
       else  $port=80;
       $link="";
       if(isset($urlparsed['query']))
       {
           $link.="?$urlparsed[query]";
       }
       if(isset($urlparsed['fragment']))
       {
           $link.="#$urlparsed[fragment]";
       }
       $link=$path.$link;  
       
       ////////////////////得到学校的dir,不包括文件名
       $schoolpath="http://$host:$port".$dir;
       
       
       ////////////////////得到院的dir,不包括文件名,不过要加上学校的IP 
       $urlparsed=parse_url($serverpath);
       $serverhost=$urlparsed['host'];
       $tmp_path=$urlparsed['path'];
       $array=explode("/",$tmp_path);
       $tmp_dir="";
       $tmp_filename="";
       foreach($array as $k=>$v)
       {
          if($k<count($array)-1)
         $tmp_dir=$tmp_dir.$v."/";
      elseif(strrpos($v, ".")==true) 
         {
        $tmp_filename=$v;
        break;
     } 
          else $tmp_dir=$tmp_dir.$v."/";
       }
       $tmp_path=$tmp_dir.$tmp_filename;
        
       $collegepath="http://$serverhost".$tmp_dir."$ip/";
    }
    /**************************
    从用户得到的cookie放到数组中去
    ****************************/
    function FetchCookie()
    {
       global $cookieval;
       $cookieval=$_COOKIE; 
         
    }
    /**************************
    从用户得到的POST组成一字符串
    ****************************/
    function FetchPost()
    {
        global $postval,$length;
    $postval="";
    $length=0;
    if(count($_POST)>0)
    {
            foreach($_POST as $k=>$v)
    {
        $postval .=urlencode($k)."=".urlencode($v)."&";
    }
    $postval=substr($postval,0,-1);
    }
    $length=strlen($postval);
    }
      

  23.   

    用IE情况下有什么工具查看header的?谢谢。
      

  24.   

    找个http监听工具
    ------------------------
    请给个具体链接好吗?找不到呀。您可以帮我解决这个问题吗?谢谢了。Q我103571306或SMS我13423522244
      

  25.   

    取http头。
    不过只能取得一些。<script>var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP")
    xmlhttp.open("post","http://bbs.pdafans.com/logging.php?action=login",false)
    xmlhttp.send()
    if (xmlhttp.readyState==4)
    document.write("<textarea cols=50 rows=10>"+xmlhttp.getAllResponseHeaders()+"</textarea>")</script>
      

  26.   

    怎么这么简单的问题还没有搞定?
    我给出的只是例子,登陆是不是成功每个网站的做法都不一样的,我的例子里
    出错会重定向到error.php页面去,而且其他网站可能不是重定向而是输出错误信息,
    搜索错误字符串就可以了。
      

  27.   

    用php没有解决,但用c#已经解决了,请精通php的大侠提供完整的php例子,谢谢
      

  28.   

    自己已经php解决,这个问题继续留一段时间,大家继续讨论