2013-03-10 62 views
-3

編輯:它傾向於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; 
      } 
     } 
    } 

回答

2

我會使用的Firefox添加 - 組合ons Greasemonkey和Firebug。你不能真正以編程方式確定服務器的期望。它們是由人類編寫的,每個人都會通過創造力解決問題。您必須手動爲每個人分別設定服務器的期望值。即使這樣也不容易,(或者在某些情況下,我想,甚至有可能)。您嘗試登錄的服務器可能會因不同的客戶端而出現不同的反應,出於各種各樣的原因,人們只能猜測。 (這就是爲什麼你會遇到cookies問題)。您不需要通過數據包工作,但您需要手動查看發送和接收的請求,這些請求的內容以及數據的含義。要獲得進一步的幫助,您需要分別查看每個人並提出具體問題。

+0

+1。 Fiddler是查看請求的另一種選擇。注意:由於OP試圖以自己的身份登錄,因此它應該總是可以進行常規Web身份驗證(我同意像智能卡或雙因素授權這樣的東西是不可能的完全自動化)。 – 2013-03-10 05:34:22

+0

你在各個層面都是錯的,這是一個協議,使用它。我現在正在尋找HttpListener – ploxtic 2013-03-10 05:44:18

+0

我明白你現在說的話。在這種情況下,您想要的是解釋並運行JavaScript,Flash和/或其他決定發送回服務器的內容的東西。你最好使用一些在普通瀏覽器中填寫表單的東西,比如greasemonkey。 – Jodes 2013-03-10 06:55:31

0

它看起來像HttpListener在這一點..它可能也必須通過套接字+ webclient或所有套接字*您必須提出一個GET請求來檢索請求頭,這是關於所有...套接字也可以允許服務器向客戶端推送東西,而不需要請求,這是不能通過web客戶端完成的請求。*

它是HTTP協議,沒有客戶端/服務器握手,任何互聯網都無法工作。除了地址以外,您不需要提供前期信息。服務器的工作是爲你工作,而不是相反。