編輯:它傾向於HttpListener在這一點..它可能也必須通過套接字+ webclient或所有套接字您必須提出一個GET請求來檢索請求頭,這是關於所有...套接字也可以允許服務器將事物推送給客戶端,而不需要請求,這不能通過webclient完成*如何自動確定登錄和http請求所需的客戶端請求?
我在做的是輸入網址登錄服務器:college campus,電子郵件,論壇,您每天需要的其他東西,併爲他們創建一個工作登錄。由於每個服務器可能會有所不同,請求類型會發生變化:(即)://castRequest.ServicePoint.Expect100Continue = false; //castRequest.ContentType = 「application/x-www-form-urlencoded」;
如何從C#客戶端發現這些必要的更改,而不是通過數據包和其他苛刻的方法手動工作?
在這裏,我們去... - 確定你打開一個網站 - 沒問題 - 你從HTML抓住一些登錄標籤,很容易的.. - 現在我在哪裏:在您嘗試登錄 - 發送用戶/密碼不僅僅是這兩件事的帖子 - 也不是僅僅進入頁面 - 有http憑證,網絡憑證和安全憑證+ USER/PW 憑證
html用戶/ pw輸入很容易解析出來:input type =「password」name =「pass回到問題--->如何連接並確定服務器需要的所有請求?
我將如何去分析和打開/關閉每個請求&我也將如何從網絡抓取數據:「application/x-www-form-urlencoded」?我也發現,這並不總是返回相同的# cookies,我會通過某些瀏覽器或其他系統。爲什麼???
的代碼段,這將是必要的://開始
通常這些網站已啓用Cookie,讓你用一個cookie啓用Web客戶端:
namespace watcher
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//throw in a function create a cookie container:
void startRequest(){
CookieContainer cookieJar = new CookieContainer();
HTTP http = new HTTP(cookieJar);
}
public class HTTP : WebClient
{
public HTTP()
: this(new CookieContainer())
{ }
public HTTP(CookieContainer c)
{
CookieContainer = c;
}
public CookieContainer CookieContainer { get; set; }
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
var castRequest = request as HttpWebRequest;
if (castRequest != null)
{
castRequest.CookieContainer = CookieContainer;
//castRequest.ServicePoint.Expect100Continue = false;
//castRequest.ContentType = "application/x-www-form-urlencoded";
}
return request;
}
}
}
+1。 Fiddler是查看請求的另一種選擇。注意:由於OP試圖以自己的身份登錄,因此它應該總是可以進行常規Web身份驗證(我同意像智能卡或雙因素授權這樣的東西是不可能的完全自動化)。 – 2013-03-10 05:34:22
你在各個層面都是錯的,這是一個協議,使用它。我現在正在尋找HttpListener – ploxtic 2013-03-10 05:44:18
我明白你現在說的話。在這種情況下,您想要的是解釋並運行JavaScript,Flash和/或其他決定發送回服務器的內容的東西。你最好使用一些在普通瀏覽器中填寫表單的東西,比如greasemonkey。 – Jodes 2013-03-10 06:55:31