フォームログインで保護されたWebサイトのスクリーンスクレイパーを作成することは可能でしょうか。もちろん、私はサイトにアクセスできますが、サイトにログインして自分の資格情報をC#に保存する方法がわかりません。
また、C#のスクリーンスクレーパーの良い例をいただければ幸いです。
これはすでに行われていますか?
フォームログインで保護されたWebサイトのスクリーンスクレイパーを作成することは可能でしょうか。もちろん、私はサイトにアクセスできますが、サイトにログインして自分の資格情報をC#に保存する方法がわかりません。
また、C#のスクリーンスクレーパーの良い例をいただければ幸いです。
これはすでに行われていますか?
とてもシンプルです。カスタム ログイン (HttpPost) メソッドが必要です。
次のようなものを考え出すことができます (この方法では、ログイン後に必要なすべての Cookie を取得し、それらを次の HttpWebRequest に渡すだけで済みます)。
public static HttpWebResponse HttpPost(String url, String referer, String userAgent, ref CookieCollection cookies, String postData, out WebHeaderCollection headers, WebProxy proxy)
{
try
{
HttpWebRequest http = WebRequest.Create(url) as HttpWebRequest;
http.Proxy = proxy;
http.AllowAutoRedirect = true;
http.Method = "POST";
http.ContentType = "application/x-www-form-urlencoded";
http.UserAgent = userAgent;
http.CookieContainer = new CookieContainer();
http.CookieContainer.Add(cookies);
http.Referer = referer;
byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData);
http.ContentLength = dataBytes.Length;
using (Stream postStream = http.GetRequestStream())
{
postStream.Write(dataBytes, 0, dataBytes.Length);
}
HttpWebResponse httpResponse = http.GetResponse() as HttpWebResponse;
headers = http.Headers;
cookies.Add(httpResponse.Cookies);
return httpResponse;
}
catch { }
headers = null;
return null;
}
確かに、これは行われました。私はそれを数回やったことがあります。これは(一般的に)スクリーンスクレイピングまたは Web スクレイピングと呼ばれます。
この質問を見てください(また、「 screen-scraping 」というタグの下にある質問を参照してください。スクレイピングは、Web リソースからのデータ抽出に関連するだけでなく、オンライン フォームへのデータの送信も含むことに注意してください。ログインフォームなどの入力を送信するときのユーザーのアクション。