1. 程式人生 > >C#在WebBrowser下獲取完整的Cookies(包括含HTTPOnly屬性的)

C#在WebBrowser下獲取完整的Cookies(包括含HTTPOnly屬性的)

最近做專案的時候需要模擬post請求取資料但用了普通的Cookies無法獲取完整的Cookies資訊 只是獲取了一部分 ,導致取回來的是重新登陸的頁面。後來經過不懈的精神,終於找到了方法實現獲取HTTPOnly,下面直接貼程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;


namespace HQTX_BatchAddData
{
    /// <summary>
    /// WinInet.dll wrapper
    /// </summary>
    internal static class CookieReader
    {


        private const int INTERNET_COOKIE_HTTPONLY = 0x00002000;


        [DllImport("wininet.dll", SetLastError = true)]
        private static extern bool InternetGetCookieEx(
            string url,
            string cookieName,
            StringBuilder cookieData,
            ref int size,
            int flags,
            IntPtr pReserved);
        public static string GetCookie(string url)
        {
            int size = 512;
            StringBuilder sb = new StringBuilder(size);
            if (!InternetGetCookieEx(url, null, sb, ref size, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero))
            {
                if (size < 0)
                {
                    return null;
                }
                sb = new StringBuilder(size);
                if (!InternetGetCookieEx(url, null, sb, ref size, INTERNET_COOKIE_HTTPONLY, IntPtr.Zero))
                {
                    return null;
                }
            }
            return sb.ToString();
        }
    }
}

相關推薦

C#在WebBrowser獲取完整Cookies包括HTTPOnly屬性

最近做專案的時候需要模擬post請求取資料但用了普通的Cookies無法獲取完整的Cookies資訊 只是獲取了一部分 ,導致取回來的是重新登陸的頁面。後來經過不懈的精神,終於找到了方法實現獲取HTTPOnly,下面直接貼程式碼: using System; using

request獲取完整url包括域名 埠 引數

分享一下我老師大神的人工智慧教程吧。零基礎,通俗易懂!風趣幽默!http://www.captainbed.net/ 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

request獲取完整url包括域名、埠、引數

在servlet請求中,使用request獲取整個請求url: String url="http://" + request.getServerName() //伺服器地址 + ":" + request.getServerPort()

Java servlet執行的完整流程圖解原始碼分析

摘要: 主要描述了從瀏覽器到伺服器,再從伺服器到瀏覽器的整個執行過程 瀏覽器請求 瀏覽器向伺服器請求時,伺服器不會直接執行我們的類,而是到web.xml裡尋找路徑名 ①:第一步,瀏覽

Android自定義控制元件---組合控制元件包括自定義屬性

今天和大家分享下組合控制元件的使用。很多時候android自定義控制元件並不能滿足需求,如何做呢?很多方法,可以自己繪製一個,可以通過繼承基礎控制元件來重寫某些環節,當然也可以將控制元件組合成一個新控制元件,這也是最方便的一個方法。今天就來介紹下如何使用組合控制元件,

Linux C 讀取文件夾所有文件包括子文件夾的文件名(轉)

文件中 其中 文件類型 sizeof basepath 文件 lose sed int Linux C 下面讀取文件夾要用到結構體struct dirent,在頭#include <dirent.h>中,如下: 1 #include <dirent.h

Linux C 讀取資料夾所有檔案包括子資料夾的檔名

Linux C  下面讀取資料夾要用到結構體struct dirent,在頭#include <dirent.h>中,如下: #include <dirent.h> struct dirent { long d_ino; /* inode number 索引節點號

列印獲取HDFS路徑所有的檔名包括子目錄

前言 自己有個需求,如題,需要獲取HDFS路徑下所有的檔名,然後根據檔名用Spark進行後續操作。想了一下用Spark好像不太容易獲取到,還要遞迴的去獲取子目錄下的檔名,於是查了一下,最後用Hadoop的API搞定,這裡記錄下,方便以後會用到。 1、資料 測試

根據父類獲取同一個包包括子包所有子類

宣告:文章內容全都是自己的學習總結,如有不對的地方請大家幫忙指出。有需要溝通交流的可加我QQ群:425120333 Java語言的三大特性是繼承、封裝、多型。繼承指的是子類通過關鍵字extends繼承父類、或者是implements實現介面。不管

Navicat從mysql導完整包括表結構與其中數據到另一臺機器的mysql中

網上 操作 數據表 tail 研究 新的 完成 新建 文件 碰到一個需要把數據表從本地mysql導入到服務器的mysql中的問題,在網上搜了下,沒有發現說的很清楚的操作,很多操作都是利用命令行來實現,自己研究了一下,發現Navicat有自己的導入導出功能,可以比較容易的實現

c語言實現linux高危函式system 簡易V1.0版本

system這個函式真的是要慎用,一不小心就會留下漏洞。 下面是用c語言簡易的實現了一下system函式 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<err

C# VS2012的3D顯示

這樣肯定是無法編譯通過的,所以需要新增引用。 這個時候,就可以編譯執行通過。執行效果是一個黑框。   然後我們右鍵這個控制元件,進入屬性,選擇屬性(閃電按鈕)   裡面的程式碼,參照第一篇裡面,自動生成的程式碼,複

C# VS2012的3D顯示

下載dll,也就是執行庫。 http://www.codeproject.com/KB/openGL/sharpgl/Core.zip 網速慢,反正下載解壓後是這樣: 然後就相對簡單了,找了一份攻略,http://crazylove.blog.51cto.com/855385/

C# VS2012的3D顯示

首先,把工具下載齊全。在codeproject中找到的,找資料真的比程式設計還累。 http://www.codeproject.com/Articles/3144/SharpGL-a-C-OpenGL-class-library 這裡需要用到的是:Download the Vis

c#webbrowser如何獲取新跳轉頁面的URL

軟體除錯時執行一段時間後再單步除錯就出現某些執行的程式碼次序不是按編寫的執行winform中的datetimepicker控制元件左右移動問題軟體除錯時執行一段時間後再單步除錯就出現某些執行的程式碼次序不是按編寫的執行winform中的datetimepicker控制元件左右

c語言實現linux高危函式system 簡易V1.0版本

system這個函式真的是要慎用,一不小心就會留下漏洞。 下面是用c語言簡易的實現了一下system函式 #include<stdio.h> #include<stdlib.h> #include<unistd.h> #inc

Windows7的Django環境、專案及工程搭建包括anaconda安裝方法

我這也是邊學邊寫,大家一起吧。參考的資料有點多,但都不太完全,只能依據理解自己把它集合在一起。 首先,安裝python就不說了,我用的是anaconda,我在找了很久走了很多彎路之後才找到,這是一個python的科學環境,它很強大,集成了各種python所需要

C/C++: linux獲取程序ID,父程序ID

#include <iostream> #include <sys/types.h> #include <unistd.h> #include <stdio.

c++多執行緒模式的socket程式設計執行緒池實現

     socket 程式設計可以說是一個基本的技術掌握,而多個客戶端向服務端傳送請求又是一個非常常見的場景,因此多執行緒模式下的socket程式設計則顯得尤為常見與重要。     本文主要利用執行緒池的技術,來實現多執行緒的模式,執行緒池的優點就不多述了,相信大家都能理

遍歷檔案目錄的所有檔案包括子資料夾裡的

def getAllFiles(path): for file in os.listdir(path): # 遍歷當前目錄下所有檔案 filePath = os.path.join(path, file) # 生成當前目錄下檔案的絕對路徑 if os.path.i