1

私はこれにかなり慣れていないので、他に尋ねる人がいません。Web スクレイピング ソフトウェアのプログラム (C#) で Web ページにアクセスしようとしています。HttpWebResponse クラスと HttpWebRequest クラスを使用して Web ページ フォームからログインを実行するプロセスを理解しましたが、2 段階のログイン手順を持つ Web サイトがあります。

最初のログインは、ポップアップ経由で行われます。バックグラウンドで Web ページが読み込まれることはなく、認証が必要であることを示すポップアップ ダイアログが表示され、ユーザー名とパスワードの入力が求められます。

最初のログインを通過した後、2 回目のログインは単なる Web フォームであり、既に学んだことから自分で処理できるはずです。

私の質問: ポップアップ認証要求のログイン情報をプログラムで提供するにはどうすればよいですか?

編集

もう少し情報を提供するだけです。Web サイトにアクセスしようとすると、Fiddler はホストを CONNECT として指定します。

編集

以下のMrEyeの回答を使用しようとしましたが、もう少し先に進むように見えましたが、まだハングアップしています. 証明書の問題が発生していたので、Google で作業した後、次のコードを追加して回避策を見つけました。

ServicePointManager.ServerCertificateValidationCallback +=
            delegate(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
        {
            return true;
        };

現在System.Net.WebException、「削除サーバーがエラーを返しました: (401) Unauthorized」という値を取得しています。例外Statusは ProtocolError ですが、それ以上は取得できませんでした。提供されたユーザー名/パスワードが有効であることは確かです。

4

1 に答える 1

2

必要なのは、作成したHttpWebRequestオブジェクトのCredentialsプロパティにNetworkCredentialオブジェクトを割り当てることだけです。例えば:

myWebRequest.Credentials = new NetworkCredential("username","password");

接続しているサーバーによっては、次のものも必要になる場合があります。

myWebRequest.PreAuthenticate = true; 
于 2010-12-02T23:05:55.347 に答える