-3

編集:この時点でHttpListenerに傾いています。これは、Sockets +webclientまたはすべてのソケットを介して実行する必要がある場合もあります。 リクエストヘッダーを取得するには、GETリクエストを作成する必要があります。これですべてです...ソケットはサーバーを許可することもできますリクエストを必要とせずにクライアントに物事をプッシュするため。これはWebクライアントを介して行うことはできません*

私が探しているのは、ウェブサイトのログインサーバーへのURLを入力することです。大学のキャンパス、メール、フォーラムなど、毎日必要なものを入力して、有効なログインを作成します。各サーバーは異なる可能性があるため、リクエストタイプは次のように変わります。(つまり)://castRequest.ServicePoint.Expect100Continue = false; //castRequest.ContentType = "application / x-www-form-urlencoded" ;

これらの必要な変更は、パケットやその他の過酷な方法で手動で作業するのではなく、C#クライアントからどのように見つけることができますか?

ここに行きます ...-サイトを開きます-問題ありません-htmlからいくつかのログインタグを取得します、十分に簡単です..-今私がいる場所:ログインしようとしている場所-ユーザー/pwの送信はありませんこれら2つの投稿だけでなく、ページにアクセスすることもありません。httpクレデンシャル、ネットワーククレデンシャル、セキュリティクレデンシャル+ USER/PWクレデンシャルがあります。

html user / pw入力は、解析するのに十分簡単です。input type = "password" name = "password" id = "password" size = "15" value = "">、--->方法の質問に戻りますサーバーが必要とするすべてのリクエストを接続して決定しますか?

これらのリクエストを分析してリクエストごとにオン/オフにするにはどうすればよいですか?また、ネットワークからデータを取得するにはどうすればよいですか:「application / x-www-form-urlencoded」?また、特定のブラウザや他のシステムを介して取得するのと同じ数のCookieが常に返されるとは限らないこともわかりました。どうして???

必要となるコードスニペット:// BEGIN

通常、これらのサイトではCookieが有効になっているため、Cookieが有効なWebClientを使用します。

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;
            }
         }
     }
4

2 に答える 2

2

Firefox アドオンの Greasemonkey と Firebug を組み合わせて使用​​します。サーバーが何を期待しているかをプログラムで実際に判断することはできません。それらは人間によって書かれ、それぞれが創造性を使って解決された問題を抱えています。サーバーが期待するものを個別に手動で確立する必要があります。それでも簡単ではありません (または、場合によっては可能だと思います)。ログインしようとしているサーバーは、さまざまな理由から、さまざまなクライアントに対して異なる反応を示す可能性があります。(これが、Cookie で問題が発生する理由です)。パケットを処理する必要はありませんが、送受信されているリクエスト、その内容、およびデータの意味を手動で確認する必要があります。さらに助けを得るには、あなたの'

于 2013-03-10T05:12:21.077 に答える
0

この時点で HttpListener のように見えます.. また、Sockets + webclient またはすべてのソケットを介して実行する必要がある場合もあります* 要求ヘッダーを取得するには、GET 要求を作成する必要があります。要求を必要とせずにクライアントに物事をプッシュします。これは webclients 経由では実行できません*

これは HTTP プロトコルです。クライアント/サーバーのハンドシェイクがなければ、インターネットは機能しません。住所以外の事前情報は必要ありません。サーバーの仕事はあなたのために働くことであり、その逆ではありません。

于 2013-03-10T05:58:31.277 に答える