zoukankan      html  css  js  c++  java
  • dephi中用idhttp提交cookie

    以前不管是做什么软件,只要是关于网页post提交cookie的,我都是用TcpClient,为什么呢?
    因为我一直找不到idhttp提交Cookie的方法,今天终于有了结果。

    在Idhttp中,要想修改Cookie的代码,就要用到Request的RawHeaders中的Values值。
    这个值怎么用呢?
    Values接受一个string的值,该值指定了所访问的变量。
    如HTTP头是这样定义的(其中一些):
    Accept-Language: zh-cn
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; 
    Cookie: JSESSIONID=aoOYvjM-IKzh 
    而Values的值就可以是Cookie,User-Agent,Accept-Encoding……等等。

    所以,代码应该是这样:
    try
      idhttp1.Request.RawHeaders.Values['Cookie'] := '这里是cookie的值'; //
      memo1.Lines.Add(idhttp1.Request.RawHeaders.Values['Cookie']);
      idhttp1.Post('/webmail/login.jsp',data1,data2);
      memo1.Lines.Add(idhttp1.Request.RawHeaders.Values['Cookie']);
      idhttp1.Request.RawHeaders.Values['Cookie'] := 'asdfasdf';
      memo1.Lines.Add(idhttp1.Request.RawHeaders.Text);
    except
      idhttp1.Get(idhttp1.Response.Location, data1);
    end; 
    初一看,这代码是没有什么问题的。但,memo1的第一次ADD并没有任何值,奇怪。
    而第三次ADD就被改为了'asdfasdf',正是我们所希望的。
    我正是卡在了这里。为什么第一次idhttp1.Request.RawHeaders.Values['Cookie'] := '这里是cookie的值'; 没有结果呢?

    搞了很久。我才发现,在第一次传值的时候,RawHeaders跟本没有被初始化。而第三次经过Post以后,RawHeaders被初始化了,所以得到了我们所要的结果。
    也就是说,在写漏洞上传程序这些的时候,如果先Post让RawHeaders初始化,那就没什么意义了,因为Post的时候,Cookie就不能被带上了。

    正确的代码应该是这样:
    try
      idhttp1.Request.SetHeaders; //最重要的初始化。
      idhttp1.Request.RawHeaders.Values['Cookie'] := '这里是cookie的值';
      idhttp1.Post('/webmail/login.jsp',data1,data2);
    except
      idhttp1.Get(idhttp1.Response.Location, data1);
    end; 


    这里,最重要的初始化是必需的。
    idhttp1.Request.SetHeaders
    这个过程如果没有。就会出错。

    http://www.cnblogs.com/taobataoma/archive/2007/08/16/858345.html

  • 相关阅读:
    数据结构化
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    Hadoop综合大作业
    理解MapReduce
    熟悉常用的HBase操作
    熟悉常用的HDFS操作
    爬虫大作业
    数据结构化与保存
    爬取校园新闻首页的新闻
  • 原文地址:https://www.cnblogs.com/sunsoft/p/1965629.html
Copyright © 2011-2022 走看看