1

うまくいけば、これはあまり痛くないでしょう...

私は webbrowser コントロールから web サイトにアクセスしようとしていますが、次の問題がある 2 つの方法を試しました (実際には、さまざまな結果をグーグルで検索した結果よりも多くの方法があります)。

 URL = "http://username:password@thewebsite.com"
 WebBrowser1.Navigate(URL)

1: この方法では、ウィンドウ セキュリティ ポップアップが表示され、会社のプロキシにログインするように求められます。これは、Web サイトのユーザー名/パスワードを使用していて、URL ナビゲーションがそれをプロキシに入力しようとしているためだと思いますか?

これを実行してプロキシビットを自動化/回避しようとすると:

Dim Headers As String = "Proxy-Authorization: Basic " & Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("USERNAME:PASSWORD"))
WebBrowser1.Navigate(URL, "", Encoding.Unicode.GetBytes(String.Empty), Headers)

にもかかわらず、プロキシ ログイン ボックスがポップアップするため、まだ失敗します。

2: URL を編集せずに直接 Web サイトにアクセスした場合:

 URL = "http://thewebsite.com"
 WebBrowser1.Navigate(URL)

次に、プロキシ メッセージをまったく表示せずに Web サイトに移動します (すばらしい!) が、Web サイトは入力する必要があるログイン ボックスをポップアップ表示します。悲しいことに、これは (自動化するために) 要素 ID を取得できません。これは、Web ブラウザー コントロールの外側に表示される Windows フォームであるためです。

私が次に何を試すべきかについて誰かアイデアがありますか? 方法 2 からログイン フォームを取得して、それ自体に入力するか、少なくともそのページのソースを表示させる方法はありますか? 正しく入力されるまで、クリックして離すことはできません。

両方のログインフォームを処理するものを機能させることができないようです。それはどちらか一方です。(どちらのフォームも Windows 標準のログイン プロンプトのように見えますが、Web ページには組み込まれていません)。ありがとう

4

1 に答える 1

1

IAuthenticateIServiceProviderをサービスとしてサポートし、提供するカスタム ブラウザー コントロール サイトを実装する必要があります。ブラウザー コントロールは、ログイン資格情報が必要になるたびに、実装をコールバックします。IAuthenticate

コードは C# ですが、次の Q/A が開始に役立つ場合があります。

ファイル フォルダにアクセスすると、WEB ブラウザ コントロールの認証が機能しません[元のスペルは保持されます]。

WebBrowser コントロールによって呼び出される IDispatch::Invoke を実装します

[編集]より具体的には、IAuthenticateExを実装する必要があります。これにより、 AUTHENTICATEINFO.dwFlagsを介してプロキシ認証と Web サイト認証を区別できるようになります。

于 2013-09-04T16:24:23.023 に答える