http://shenwufzwp.cccpan.com/ 登陆密码:swfz这个是 永硕E盘 网站!想实现自动登陆功能!但是Post了一个晚上也没整上去,不知道是为什么!还请各位大神帮帮,谢谢啦!procedure TForm1.Button1Click(Sender: TObject);
Var
  resParams: TStringStream;
  PostParams: TStringList;
begin
  resParams := TStringStream.Create('');
  PostParams := TStringList.Create;
  IdHTTP1.Request.Accept := 'application/x-shockwave-flash, image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
  IdHTTP1.Request.AcceptEncoding := 'gzip, deflate';
  IdHTTP1.Request.AcceptLanguage := 'zh-cn';
  IdHTTP1.Request.CacheControl := 'no-cache';
  IdHTTP1.Request.Connection := 'Keep-Alive';
  IdHTTP1.Request.ContentLength := 464;
  IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded';
  PostParams.Add('teqtbz=swfz');
  IdHTTP1.Post('http://shenwufzwp.cccpan.com/login.aspx?d=shenwufzwp', PostParams, resParams);
  Memo1.Lines.Add(resParams.DataString);
end;这是我的代码!我就30分!还望各位大神帮下忙撒!我努力回帖赚点分再加

解决方案 »

  1.   

    var
      aStr: string;
      aStrstrean: TStringStream;
    begin
      aStr := 'http://shenwufzwp.cccpan.com/login.aspx?d=shenwufzwp&teqtbz=swfz';
      aStrstrean := TStringStream.Create('', TEncoding.UTF8);
      try
        IdHTTP1.Get(IdHTTP1.URL.URLEncode(aStr), aStrstrean);
        aStr := aStrstrean.DataString;//返回值
      finally
        FreeAndNil(aStrstrean);
      end;
      

  2.   

    1 ContentLength很明显不是464,如果这个参数你是照着抓包写的,那就是post的内容不对
    2 考虑cookie的问题
      

  3.   


    464 是抓宝得来的我想来想去,还是不知道那不对,不过我对http协议不是太懂哈
      

  4.   

    ContentLength是post的数据的长度,有这么多数据,怎么可能对?
    __VIEWSTATE=%2FwEPDwUJODk2MjkyOTMzD2QWAmYPZBYIZg8PFgIeBFRleHQFFXNoZW53dWZ6d3AuY2NjcGFuLmNvbWRkAgEPDxYCHwAFCnNoZW53dWZ6d3BkZAIFDw8WAh8ABQbnmbvpmYZkZAIGDw8WAh8ABU%2FlrqLmnI1RUe%2B8muacquiuvue9ruOAgjxhIGhyZWY9J2xvZ2luX3FxLmFzcHg%2FZGxtYz1zaGVud3VmendwJz7ngrnmraTorr7nva48L2E%2BZGRkMm5EdFGmsB96XlAKD6rPDr5Z0fM6pYtaprMljPbiYtM%3D&__EVENTVALIDATION=%2FwEWBALI6KrmDgK5v9XxBQLck8KHCQK0mcHoBaqPliWYbnTsgRlJd1XzCdttqi2EdDzuAS89Fb7OcExc&teqtbz=swfz&teqtbz1=&b_dl=%B5%C7%C2%BD
      

  5.   

    那怎么办,但是我用httpwatch抓包就是得到这个数据阿
      

  6.   

    chrome,firfox 都可以抓
      

  7.   

    先读取登录页面的数据
    http://shenwufzwp.cccpan.com/login.aspx?d=shenwufzwp
    读取表单name="__VIEWSTATE"和name="__EVENTVALIDATION"的值
    再加上密码提交
    __VIEWSTATE=值&__EVENTVALIDATION=值&b_dl=登陆&teqtbz=密码&teqtbz1=密码本人没有测试过,只是在浏览器里看了一下登录页面
      

  8.   

    最好用sniffer抓一下包, 对比一下http头
      

  9.   

    1、先抓包看一下提交的参数是哪些。
    2、GET登录地址:http://shenwufzwp.cccpan.com/login.aspx?d=shenwufzwp把以下两个值取出来__VIEWSTATE,__EVENTVALIDATION
    html如下:
    id="__VIEWSTATE" value="/wEPDwUJODk2MjkyOTMzD2QWAmYPZBYIZg8PFgIeBFRleHQFFXNoZW53dWZ6d3AuY2NjcGFuLmNvbWRkAgEPDxYCHwAFCnNoZW53dWZ6d3BkZAIFDw8WAh8ABQbnmbvpmYZkZAIGDw8WAh8ABU/lrqLmnI1RUe+8muacquiuvue9ruOAgjxhIGhyZWY9J2xvZ2luX3FxLmFzcHg/ZGxtYz1zaGVud3VmendwJz7ngrnmraTorr7nva48L2E+ZGRkMm5EdFGmsB96XlAKD6rPDr5Z0fM6pYtaprMljPbiYtM=" />
    id="__EVENTVALIDATION" value="/wEWBALI6KrmDgK5v9XxBQLck8KHCQK0mcHoBaqPliWYbnTsgRlJd1XzCdttqi2EdDzuAS89Fb7OcExc" 3、再POST,POST的时候是有5个参数,你提交的时候才一个参数怎么会成功。参数1  __VIEWSTATE
    参数2  __EVENTVALIDATION                                                                                                                                      参数3  teqtbz 
    参数4  teqtbz1 
    参数4  b_dl  
      

  10.   

    使用httpwatch 这个插件抓包 我一般是用这个只要抓出post的那个包 修改账户和密码
      

  11.   

    __VIEWSTATE        /wEPDwUJODk2MjkyOTMzD2QWAmYPZBYIZg8PFgIeBFRleHQFFXNoZW53dWZ6d3AuY2NjcGFuLmNvbWRkAgEPDxYCHwAFCnNoZW53dWZ6d3BkZAIFDw8WAh8ABQbnmbvpmYZkZAIGDw8WAh8ABU/lrqLmnI1RUe+8muacquiuvue9ruOAgjxhIGhyZWY9J2xvZ2luX3FxLmFzcHg/ZGxtYz1zaGVud3VmendwJz7ngrnmraTorr7nva48L2E+ZGRkMm5EdFGmsB96XlAKD6rPDr5Z0fM6pYtaprMljPbiYtM=  
    __EVENTVALIDATION  /wEWBALI6KrmDgK5v9XxBQLck8KHCQK0mcHoBaqPliWYbnTsgRlJd1XzCdttqi2EdDzuAS89Fb7OcExc                                                                                                                                                                                                                              
    teqtbz             swfz                                                                                                                                                                                                                                                                                                          
    teqtbz1                                                                                                                                                                                                                                                                                                                          
    b_dl               登陆                                                                                                                                                                                                                                                                                                          
    有这么多参数,你才给出一个,当然登录不上去了。
    用  HttpAnalyzerStdV7.exe  抓包吧。
      

  12.   

    其实这个并不复杂,只是服务页面是使用.net开发的,所以会有一些系统生成的隐藏控件在里面需要提交,所以只需要找出现原样post回去就可以了。好久没折腾delphi了,现在手上也没有安装我用java写了一段示例给你,已经成功登录该页面,你参考看看,希望对你有帮助。 public static void main(String[] args) throws IOException {
    String url = "http://shenwufzwp.cccpan.com";
    //获取表单页面
    Document doc = Jsoup.connect(url).get();
    Map<String, String> data = new HashMap<String, String>();
    Elements inputs = doc.select("input");
    for (Element item : inputs) {
    if ("password".equals(item.attr("type"))) {
    //如果是密码则赋值
    data.put(item.attr("name"), "swfz");
    } else {
    //其他原样提交
    data.put(item.attr("name"), item.val());
    }
    }
    //获取提交路径
    String act = doc.select("form").attr("abs:action");
    //提交组织好的数据
    doc = Jsoup.connect(act).data(data).post();
    System.out.println(doc.html());
    }