• 締切済み

C# Proxyを通してブラウザを開く方法

Proxyを通してブラウザを開きたいのですが、うまくいきません。 ◆プログラムソース //TargetUrl 目的のサイトURL //strPr 有効なプロキシ情報 HttpWebRequest webreq = (HttpWebRequest)WebRequest.Create(TargetUrl); WebProxy proxy = new WebProxy(strPr); webreq.Proxy = proxy; これでデバックすると、ブラウザを開く前の段階では、きちんとURLとプロキシ情報が格納されています。 このあと、このプロキシを通してブラウザを開く部分でうまくいきません。 ブラウザに接続してサイトを開いてみても、プロキシに刺さっていません。 現在はブラウザを開くソースを System.Diagnostics.Process.Start(TargetUrl,proxy); としていますが、この部分が問題なのでしょうか。 皆様のお知恵をお貸しください。 よろしくお願いします。

みんなの回答

  • aspnet
  • ベストアンサー率79% (72/91)
回答No.1

ASP.NETからSystem.Diagnostics.Process.Startでブラウザ開いてる? ちょっと意味不明。 それはおいといて、生成されたHttpWebRequestオブジェクトと、System.Diagnostics.Process.Startで開いたブラウザ内部のリクエストオブジェクトは別物違いますか? ブラウザ経由でなく、HttpWebRequestオブジェクトをそのまま吐けば間違いなくプロキシ経由になるはず。 ブラウザ使いたいんなら、Windows FormsにWeb Browser Component貼ったWindowsアプリでも作って、そちらのプロパティでプロキシ指定すれば?

関連するQ&A

  • サイトのデータ(HTML)を取得

    C#で WebRequest webreq = (HttpWebRequest)WebRequest.Create(strURL); webreq.Timeout = 10000; HttpWebResponse webres = (HttpWebResponse)webreq.GetResponse(); でサイトのデータ(HTML)を取得しているのですが、 サイトによっては1ページ全部取得できない場合があります。 しかしブラウザで見ると全部表示され、 そのソースをみても全部表示されています。 なぜC#のRequestで取得した場合には、 ソースが途切れる場合があるのでしょうか? 取得中タイムとかの設定があるのでしょうか? よろしくお願いします。

  • proxyの使い方を教えてください。

    proxyの使い方を教えてください。 私はtorブラウザを使ってインターネットをしているのですが、torをブロックするサイトが多いです。なので 自分→tor→プロキシ→目的のサイト としたいのですがやり方が分かりません。なのでそのやり方を教えてください。 vpnでもいいです。vpnってようするに暗号化されたproxyですよね?他もSSHという方法がある聞いたのですがSSHが何なのかも分かりません。 OSはtailsです。

  • proxyのキャッシュの仕組

    現在ショッピングサイトを構築しているのですが、 proxyを通すと、隣の人が入れた商品が表示されます。 更新を押すと最新にはなるのですが、トップ画面が 更新されません。 プロキシにキャッシュが残ると思うのですが、キャッシュには どのような情報が残るのでしょうか。その情報は、ブラウザの更新 を押しても変らないのでしょうか。 だれか分かる方がいましたら教えて下さい。

  • レスポンスが全く返ってこない

    C# の HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strURL); でログインページにpostしてログオンしていますが、 たいていのページは HttpWebRequest でレスポンスが返ってくるのですが、 レスポンスがなし\"\"の場合があります。 ContentTypeもapplication/x-www-form-urlencoded で送信してるし、 たいていのページはこれでいけています。(ちょっと自身アリ) レスポンスのStreamを全く返さないページってありうるのでしょうか? (ブラウザではログインできます) (レスポンスのパラメータをチェックしましたが、リダイレクトらしきURLもなし) それともpost方法自体他の方法がある?? 漠然とした質問ですいません。

  • C#でHP上の特定データを自動更新で抽出したい

    ブラウザを立ち上げることなくHPに自動ログイン後、特定の表示データを抽出してリアルタイムに更新表示させたい(ブラウザでは更新ボタンのクリックが必要)。 ニコニコ動画の自動ログイン方法が公開されていますのでそれを真似て下記のプログラムを作成し、見かけ上は正常に動作していますが、これって「GetHtml」を呼ぶ度にログイン → ログアウトを繰り返すのでしょうか? もし、そうであればそれの回避方法を教えて頂けないでしょうか。(.Close()を呼ばないとか?) また、その確認方法があれば併せてお願いします。 /// ログイン (起動時1回のみ呼び出し) public bool LogIn() {  Hashtable hash = new Hashtable();  hash["username"] = "name";  hash["password"] = "123";  hash["Login"] = "login";  string s_param = "";  foreach (string s in hash.Keys)  {  s_param += string.Format("{0}={1}&", s, hash[s]);  }  HttpPost("Https", s_param); } /// POST送信 public void HttpPost(string s_url, string s_param) {  httpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(s_url);  CookieContainer cookieContainer = new CookieContainer();  httpWebRequest.CookieContainer = cookieContainer;  httpWebRequest.ContentType = "application/x-www-form-urlencoded";  byte[] data = Encoding.ASCII.GetBytes(s_param);  httpWebRequest.ContentLength = data.Length;  httpWebRequest.Method = "Post";  Stream reqStream = httpWebRequest.GetRequestStream();  reqStream.Write(data, 0, data.Length);  reqStream.Close();  WebResponse webResponse = httpWebRequest.GetResponse();  Stream resStream = webResponse.GetResponseStream();  encoder = Encoding.GetEncoding("Shift_JIS");  StreamReader streamReader = new StreamReader(resStream, encoder);  spHtml = streamReader.ReadToEnd();  streamReader.Close();  webResponse.Close(); } /// HTML受信(タイマーイベントで常時呼び出し) private string GetHtml(string s_url) {  httpWebRequest = (HttpWebRequest)WebRequest.Create(s_url);  httpWebRequest.CookieContainer = cookieContainer;  webResponse = httpWebRequest.GetResponse();  Stream resStream = webResponse.GetResponseStream();  StreamReader streamReader = new StreamReader(resStream, encoder);  string Html = streamReader.ReadToEnd();  streamReader.Close();  resStream.Close();  return Html; }

  • Apacheのproxyについて

    ■やりたいこと URLを書き換えずにAPACHEにproxyとして動作させたい ■背景 現在、右の名前(仮)で運用しているサイトがあります。http://hoge1.hoge.jp/ ※PC用サイトです。 このサイトを9月中旬に現在の環境とは異なる環境へ、 物理的に移管します。 移管は段階的に行うため、 http://hoge1.hoge.jp/の新サーバを物理的に構築はしますが、 そちらには当初コンテンツのせず、 DNSでhoge1.hoge.jpのIPだけ新サーバのIPに切り替え、 その新サーバから旧サーバへコンテンツをとりにいき、 それをエンドユーザへ返答させたいと思っております。 ■検討していること・試したこと ApacheのProxyPassを使ったプロキシを試しました。 ProxyPass / http://192.168.1.1/hoge.html ※ /は新サーバのドキュメントルートです ※192.168.1.1は旧環境(移管前の環境)と理解してください。 この場合、ブラウザから新サーバへアクセスすると、 アドレスバーのURLは、http://192.168.1.1/hoge.htmlに書き換えられてしまいます。 これをやめたいので、mod_rewirteを試してみました。 RewriteRule ^/(.*)$ http://192.168.1.1/hoge.html/$1 しかし、ProxyPassの時と同じように、 ブラウザのURLが書き換わってしまいます。 mod_rewirteの機能としては、 このようなURLの書き換えは正しい動きと理解していますが、 これをどうにかURLを書き換えないで、 当初アクセスしたままのURLをブラウザのアドレスバーに 表示させておきたいと考えております。 何かよい方法はありますでしょうか? ご教授よろしくお願いします。

  • C# UriFormatExceptionの回避

    お世話になります。 C#にて、WebRequest.Create(url);を 行うと、urlがhttp等で始まらない場合、例外を投げますが、 渡されたurlが『www.xxxxxx.jp』などのようにhttpを省略した 形式で渡されないよう、スキームを付けたurlに変換するための 方法を教えてください。 単に文字列を頭から見て、httpでなければ"http://"を追加…というのではなく、 専用のメソッドや手法を教えていただければと思います。 サイトを探せば見つかるとは思ったのですが、少し急ぎのため、 こちらで質問させていただきました。 よろしくお願いいたします。

  • 古いブラウザでインターネット

    お世話になります。 完全に趣味の世界の話です。 古いブラウザでインターネットをする方法を検討しています。 古いパソコンにインストールされているブラウザ、 SSL2.0、SSL3.0、TLS1.0にしか対応していないようなブラウザだと、 昨今のhttpsのウェブサイトは表示されず、httpの非暗号サイトしかアクセスできません。 以前、squidによるリバースプロキシで、80番のHTTPサーバに対して外部からのアクセスは、https化しているように見せかける…という方法が取れるというのは知っていたのですが、 proxyなどの中継サーバーを自宅内に立ち上げて、 通常のインターネット通信は、Proxyサーバー経由、 ローカル側のブラウザ-Proxyサーバー間は、ssl2.0や、もしくはhttpsリクエストを、proxy側でhttp化してアクセス。 (ローカル端末からはhttpアクセスでproxyサーバにキャッシュされたhttps(tls1.2→ssl2.0化)のWebサイトを見る。) といった事は現実的に可能でしょうか。 よろしくお願いいたします。

  • Proxy経由でサイトにアクセスする方法を教えてください

    サイバーシンドロームなどで取得したproxyとポート番号を用いて、サイトにアクセスする方法(もちろんPHPのプログラム上で)を教えてください。 具体的には、linkでプロキシ経由のURLを指定したいです。 例えば、以下のリンクを叩くと、proxy経由でリンクされたことにしたいです。 <a href="http://www.yahoo.co.jp">ヤフー</a>  hrefの指定の方法にoptionを指定するだけなのか、それとも通信関連の関数を使用しなければいけないのか、実装方法も分からない状態で苦戦しております。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • [C#]htmlを取得できないページがある。

    C#でhtmlソースを取得したいのですが、取得できるページと出来ないページがあって困っています。 取得方法は以下の方法を使用しています。 ===ここから=== HttpWebRequest req = WebRequest.Create(url) as HttpWebRequest; HttpWebResponse res = null; try { res = req.GetResponse() as HttpWebResponse; } catch { MessageBox.Show(url + "指定した Web ページが応答していません!", "エラー"); } StreamReader reader = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding(encode)); string htmlsource = reader.ReadToEnd(); reader.Close(); =================== htmlsourceにソースが入るのですが、取得できないページも一応ソースは取得できるのですが、 実際にIEなどのブラウザで表示した場合のソースと異なります。 ユーザーエージョンとして req.UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:16.0) Gecko/20100101 Firefox/16.0"; を設定しても結果は同じでした。 ■取得できるページ例 http://www.amazon.co.jp/s/ref=sr_nr_n_1/375-1273809-4334332?rh=n%3A465392%2Cn%3A!465610%2Cn%3A571582&amp;bbn=465610&amp;ie=UTF8&amp;qid=1376454464&amp;rnid=465610&lo=stripbooks ■取得できないページ例 http://www.amazon.co.jp/s/ref=sr_nr_n_3?rh=n%3A465392%2Cn%3A!465610%2Cn%3A492152&bbn=465610&ie=UTF8&qid=1376454590&rnid=465610&lo=stripbooks

専門家に質問してみよう