• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:プロキシを使うプログラムでエラーがでてしまいます。)

プロキシを使うプログラムでエラーが発生!初心者が原因を解明

このQ&Aのポイント
  • プロキシを使うプログラムでシンタックスエラーが発生し、起動できずに終了してしまう問題に直面しています。ユーザーエージェントとWEBページフィルターを別々に使用するとエラーが発生しないため、原因の特定に困っています。
  • 質問者はプロキシサーバーを通したユーザーエージェントの実装を試みており、WEBページフィルターの機能を活用したいと述べています。提供されたソースコードでは、WEBrickというライブラリを使用してHTTPプロキシサーバーを作成しており、リクエストとレスポンスのヘッダーを変更するような処理が行われています。
  • 質問者は正規表現についても質問しており、特定の文字列にマッチするだけでなく、すべての文字にマッチするメタ文字について知りたいとしています。

質問者が選んだベストアンサー

  • ベストアンサー
  • Picosoft
  • ベストアンサー率70% (274/391)
回答No.1

Rubyは知らないので見当違いな答えかもしれませんが一点だけ気になるところが……。 > :ProxyContentHandler => handler この行の末尾にカンマはなくてもいいのでしょうか? > 正規表現ですべての文字にマッチするようなメタ文字 「.」ではダメなのでしょうか。任意の1文字にマッチします。 複数文字なら「.+」で大丈夫かと思います。 (この辺は正規表現の基本中の基本ですが、お調べになりましたか?)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • WEBrick の mount_proc について

    WEBrick の mount_proc について WEBrick の mount_proc がうまく動かず困っています。 以下のようなプログラムを書いたのですが、"Hello,World!!"ではなく、dummy/index.htmlの内容が表示されてしまいます。p "hello"も実行されないのでmount_procがそもそもうまくいっていないようです。どうすれば解決できるでしょうか。よろしくお願いします。 ****** #! ruby -Ks # -*- coding: Windows-31J -*- require 'webrick' config = { :Port => 3000, :DocumentRoot => '.', } server = WEBrick::HTTPServer.new(config) server.mount_proc("./dummy") do |req, res| res.body = "Hello, World!!" p "hello" end trap(:INT) do server.shutdown end server.start

    • ベストアンサー
    • Ruby
  • ローカルプロキシを通すと携帯用ページが表示できない

    ローカルプロキシをを使うと、 携帯用のページで時々WEBページの内容が正常に表示されないような状態です。 ページにもよりますが、大体4割くらいの確率でこの現象が起ります。 何も処理をかかずに使っても、ユーザーエージェントをプロキシの機能で変更してもこの現象はおこります。 ブラウザはchrome firefox IE を試しましたが、全てのブラウザで確認できました。 F5でページを更新しても画像やページの内容が読み込まれたり読み込まれなかったりするような状態です。 どうにかならないでしょうか。よろしくお願いします。 ソースコードは以下のようなものです。 require 'webrick' require 'webrick/httpproxy' require 'uri' server = WEBrick::HTTPProxyServer.new({ :BindAddress => '127.0.0.1', :Port => 8080, :ProxyContentHandler => handler, }) server.start

    • ベストアンサー
    • Ruby
  • web文書を取得するプログラムのサイト内での不具合について

    perl初心者です。 自分のwebサイトのコードを取得するプログラムをつくろう と思っているのですが、下のコード -------------------------------------------------------- #!/usr/local/bin/perl use LWP::UserAgent; use HTTP::Request; use HTTP::Response; our $URL = 'http://www.google.co.jp/'; # アクセスする URL my $proxy = new LWP::UserAgent; my $req = HTTP::Request->new('POST' => $URL); # HTTP リクエストを作成 my $res = $proxy->request($req); # $res に HTTP レスポンスが返ってくる print $res->content; # HTML を表示 1; --------------------------------------------------------------- でターゲットのurlが上のgoogleだと取得できるんですが 自サイトのurl'http://○○.××.△△.com/'だと 500 Internal Server Errorとなってしまいます。 因みにレンタルサーバーを利用しています。 サーバーでは技術的な質問は受け付けてないとの事なので、 スクリプトの質問とは少しズレますが分る方がいましたら ご教えていただきたく質問いたしました。

  • CGIの接続エラー

    PerlのLWP::UserAgentを使った接続で,エラーが生じてしまいます. ローカルからなら期待通りにページ内容を取得できるのですが,サーバに配置してブラウザからアクセスするとInternal Server Errorとなります. プロキシは使っていません.ファイアウォールやセキュリティソフトを切ってもエラーが生じてしまいます. 対象URL(下のコードではhttp://wikipedia.simpleapi.net/api?keyword=YouTube&output=xml)を変えても同じ結果になります. 理由がわかる方がいらっしゃればご教授願います. CGIにPerl5,サーバにApache Tomcat 5.5を利用しています. エラー内容とコードは下のようになっています. エラー内容 「500 Can't connect to wikipedia.simpleapi.net:80 (Bad hostname 'wikipedia.simpleapi.net')」 コード #!/usr/local/bin/perl use LWP::UserAgent; print "Content-type: text/plain\n\n"; my $ua = LWP::UserAgent->new; $ua->agent("Mozilla/5.0"); my $req = HTTP::Request->new(GET => "http://wikipedia.simpleapi.net/api?keyword=YouTube&output=xml"); my $res = $ua->request($req); $res = $ua->request($req); my $content = $res->content; print $content; exit;

  • Perlで言う、LWP HTTPをPHPで

    PerlでのスクリプトをPHPに移行しようかと考えております。(勉強のため) それで、PerlのモジュールでいうLWPとHTTPに代わるクラスライブラリ(API)は、どれにあたるのでしょうか? 具体的には、LWP::UserAgentとHTTP::Requestです。 ※詳しくは、 my $wa = new LWP::UserAgent; my $req = new HTTP::Request(GET => $url); my $res = $wa->request($req); PHPのドキュメント(http://www.php.net/manual/ja/)を見たのですが、いまいちピンときませんでした。 参考URLで結構ですので、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • Perl HTMLソースから特定のタグ抽出

    use LWP::UserAgent; use HTTP::Request; use HTTP::Response; our $URL = 'https://www.yahoo.co.jp/'; # アクセスする URL my $proxy = new LWP::UserAgent; $proxy->agent('your own created browser name here'); # 任意 $proxy->timeout(60); # 任意 my $req = HTTP::Request->new('GET' => $URL); my $res = $proxy->request($req); my $content = $res->content; print "Content-Type: text/html\n\n"; # HTML ヘッダ (CGI として動作できる) if($res->is_success) { print $content; } else { print 'HTTP エラーコード: ' . $res->code; } これで、HTMLソース全てを取得することはできましたが、 例えば、このソースはヤフーのコードを取得していますが、 ヤフーのコード内で<li></li> リストタグないの文字列がほしいのですが、 どのように抽出すればいいのでしょうか? ヤフーでは、下記のようになっていて <li><a hrf="???????????????">ここの文字列<span>写真</span><span>new</span></li> このソースからここの文字列を抽出させたいです。 さらに、1番目の<li>内、4番目の<li>内といったことも実行したいです。 どうかご教示お願い致します。

  • LWPで応答データを取得できない

    お世話になります。 perl5でLWPを使用しているのですが、一部のサイトでデータを取得できず困っております。 具体的には my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/5.0'); my $req = HTTP::Request->new(GET => "http://misshiki.blog7.fc2.com/?xml"); my $res = $ua->request($req); my $buf = $res->content; といった感じでRSSを取得したいのですが、$bufが空になってしまいます。 しかし、 $res->as_string とすると、レスポンスヘッダも含めてRSSが取得できていることが確認できます。 また、上記以外のURLでは正常に$res->contentでデータを取得することができています。 どうもFC2ブログのRSSのみの事象のようではあるのですが、対処方法がわからず困っております。 対策をご教授いただければ幸いです。 以上、よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • httpメソッドが使えない

    下記の内容のruby を実行したのですが、エラーが出てしまいます。 ---- require 'net/http' req = Net::HTTP::Get.new('/') Net::http.start('twitter.com') do |http| res = http.request(req) print res.body end ---- エラーメッセージ undefined method `http' for Net:Module (NoMethodError) ruby はver 1.8.7, 環境はMacOSX10.6.8です。 原因をご存知の方がいらっしゃいましたら、教えていただけないでしょうか? よろしくお願い致します。

    • ベストアンサー
    • Ruby
  • このコードって・・・

    こんにちは 今、Node.jsをつかってサンプルコードをうっているのですが、サンプルと違う結果が出てきてしまって、なぜなのかさぱりわかりません。。 そのサンプルはGITHUBに載っていたもので、本来は ___________________________________________________________________________ /* * hello, world * IPなど設定:http://testcording.com/?p=1164 */ var http = require("http"); http.createServer(function (req, res) { res.writeHead(200, {"Content-Type": "text/plain"}); res.end("hello, world!\n"); }).listen(1337, "localhost", function () { console.log("Server running at http://127.0.0.1:1337/"); console.log("サーバを終了する際は[ctrl + c]を押してください"); }); ___________________________________________________________________________ ↑↑↑↑↑↑こうあるべきなのですが、私がうつと・・・ C:\Users\****>node > /* ... *hello,world ... 118.152.60.182:http://testcording.com/?p=1164 ... */ undefined > var http = require("http"); undefined ___________________________________________________________________________ undefinedとなってしまうんです。 なぜでしょうか・・・

  • LWPでPOST送信した後に送信先に移動したい

    LWPで別サーバーのtest.cgiに以下のようなコードで POST送信しています。 use HTTP::Request::Common; use LWP::UserAgent; $query="param1=dummy"; $ua = LWP::UserAgent->new(); $req = HTTP::Request->new(POST => "http://xxx.xxx.xxx/test.cgi"); $req -> content_type('application/x-www-form-urlencoded'); $req -> content($query); $res = $ua->request($req); $success = $res -> is_success; if(!$success){ die("error"); } $con = $res -> content; この場合、$conにtest.cgiの出力が入るだけで、 URLのhttp://xxx.xxx.xxx/test.cgiに遷移することはできません。 HTMLのformタグでPOST送信したときのように、 POSTでデータを送信してかつ、その送信先に移動するということはできるのでしょうか。 LWPでなくてもいいです。 要するにHTMLのformタグでのPOST送信を手動ではなく、自動で行いたいわけですが、 <form action="http://xxx.xxx.xxx/test.cgi" method="post"> <input type="hidden" name="param1" value="dummy"> </form> このようなタグのあるHTMLを表示して、 JavaScriptでonLoadでsubmitすればできるのですが、 JavaScriptを使っているとSSLの場合にセキュリティのアラートがでる場合があるので、 できればPerlだけでできないかと思ったのです。