編集:この時点で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;
}
}
}