• ベストアンサー

プロキシを経由して他サイトのデータを取得する

プロキシを経由して他サイトのHTMLファイルを取得しようとしているのですがうまくいきません。 私がためしたのはLWP::UserAgentを用いた方法で my $uap = LWP::UserAgent->new; $ENV{HTTP_PROXY} = 'http://proxy:8080'; $ENV{FTP_PROXY} = 'http://proxy:8080/'; $ENV{HTTP_PROXY_USERNAME} = 'name'; $ENV{HTTP_PROXY_PASSWORD} = 'pass'; $uap->env_proxy(); という感じです。 プロキシ内のページからは普通にHTMLファイルが取得できますがプロキシ外はまったく取得できません。 良い方法があったら教えて下さい。お願いします。

  • Perl
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
回答No.2

env_proxy()メソッドは、シェルの環境変数からプロキシ設定を読み込むのであって、%ENVから読み込むわけではないようです。 あらかじめシェルでプロキシの環境変数を設定してからperlを起動させる必要があります。 環境変数経由ではなく、直接uaにproxyを設定させることもできます。 my $uap = LWP::UserAgent->new; $uap->proxy('http','http://some.proxy:8080');

その他の回答 (1)

回答No.1

大文字じゃなくて小文字なのでは? perldoc LWP::UserAgent でマニュアル見ると $ua->env_proxy は *_proxy から値を読むと書いてありますよ。 つまり、 $ENV{'http_proxy'} = 'http://proxy:8080/'; のように書かないと駄目だと思いますよ。

参考URL:
http://homepage3.nifty.com/hippo2000/perltips/LWP/UserAgent.html
mizumaki22
質問者

お礼

ご回答ありがとうございます。ご指摘の通り大文字を小文字に変えてやってみましたが特に大文字の時と違いはありませんでした。 参考URLを読まさせていただきます。 他に何か方法があれば教えて下さいお願いします。

関連するQ&A

  • 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となってしまいます。 因みにレンタルサーバーを利用しています。 サーバーでは技術的な質問は受け付けてないとの事なので、 スクリプトの質問とは少しズレますが分る方がいましたら ご教えていただきたく質問いたしました。

  • あるサイトへの自動アクセスについて

    $formdata = { 'username' => user, 'password' => pass, }; $ua = new LWP::UserAgent; $response = $ua->request( HTTP::Request::Common::POST( 'http://hoge.jp', $formdata, ) ); 上記のようなスクリプトで自動的にサイトへアクセスしてクッキーを取得しています。 <http://hoge.jp>に対してPOSTで$formdataを送信しています。 クッキーの取得は出来るのですが… 実際プラウザでアクセスすると、user・passを入れた後にログイン後の画面になるのですが、その時にこちらに渡される値がurlに記載されるのです。 http://hoge.jp?a=aaaa&b=bbbb と言う感じです。 このログイン後のurlを取得し変数に入れたいのですが、どうしたら良いのかが分りません。 ご教授お願い致します。

  • プロキシ経由でNet::FTPを利用する方法

    Net::FTPを利用してサーバ内にあるファイル一覧を取得しようとしています。 use Net::FTP $ftp = Net::FTP->new($hostname); $ftp->login($user,$pass); $file = $ftp->ls($holdr); $ftp->quit; とすれば同一ネットワーク内のファイル一覧は取得できました。ですがこのネットワークはプロキシサーバ内にあるためこのプログラムでは外のホストには接続できませんでした。どうすればプロキシを経由して外のホストに接続することができるでしょうか?

    • ベストアンサー
    • Perl
  • プロキシの制限について

    プロキシの制限を以下のように記述したのですが、 プロキシを制限する上で加えた方がいい記述や 削除した方がいい環境変数などありますか? 助言いただきたくお願いいたします。 if($ENV{'HTTP_VIA'}||$ENV{'HTTP_FORWARDED'}||$ENV{'HTTP_PROXY_CONNECTION'}||$ENV{'HTTP_CACHE_INFO'}||$ENV{'HTTP_XROXY_CONNECTION'}||$ENV{'HTTP_XONNECTION'}||$ENV{'HTTP_X_FORWARDED_FOR'}){ unless ($ENV{'REMOTE_HOST'} =~ /docomo/){#ドコモの携帯は除外する push(@error, 'プロキシ経由の利用は制限しております。'); } }

    • ベストアンサー
    • Perl
  • LWPでHTTPSサイトからコンテンツ取得

    LWP::UserAgentを使用してHTTPSサイトから、 コンテンツを取得して解析処理をしたいのですが、 取得できなくて困っています。 Crypt::SSLeayやopensslを入れてアクセスは出来るようになったのですが、 HTTPサイトの場合 $ua = LWP::UserAgent->new; my $Req = HTTP::Request->new('GET', 'http://~'); my $Res = $ua->request($Req); my $content = $Res->content; これで、コンテンツのソースを取得できたのですが、 同じ用にhttpsサイトから取得しようしても 「<HTML></HTML>」だけしか取得できませんでした。 ちなみに my $content = $Res->as_string; としてみると、 HTTP/1.0 200 OK Content-Type: text/html Client-Date: Thu, 08 Dec 2005 08:01:10 GMT Client-Peer: *.*.*.*:8080 ←隠させてもらいます Client-Response-Num: 1 Refresh: 0; URL=https://~ という取得したいHTTPSサイトにジャンプするような 内容が取得できました。 どうにかしてコンテンツ内容を取得したいのですが、 そもそもHTTPSのコンテンツ内容を取得すること自体 出来ないのでしょうか? その場合代案等もありましたら、教えてください。 とても困っています。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • LWPモジュールでログインしHTML取得

    use LWP::UserAgent; use HTTP::Request::Common qw(POST); my $url = 'https://toto.netbk.co.jp/main/smm0100'; my %formdata = ('userName' => 'ID', 'loginPwdSet' => 'Pass'); my $request = POST($url,[%formdata]); my $ua = LWP::UserAgent->new; $ua->agent('Mozilla/5.0'); $ua->ssl_opts(verify_hostname => 0); my $res = $ua->request($request); print $res->as_string; サポートされないブラウザーで弾かれます 解決策、教えてください

  • プロキシ非対応のソフトをプロキシ経由で接続

    プロキシ非対応で、HTTPでインターネット上のサーバと通信するソフトがあります。 そのソフトを会社内から使いたいのですが、会社にはプロキシサーバが立っている ため、プロキシサーバを経由してID/PASSを入力した上で、インターネットに出る 必要があります。 プロキシ非対応のソフトを変更する(作者に改良してもらう)以外に、何か良い 方法はありませんか? アウトバウンドのTCP:80をフックして別のホストに向けるようなラッパーがあって、 proxyサーバに対応しているソフトでもあれば、なんとかなるような気がするのですが・・・

  • Perl LWPでproxyがうまく刺さらない

    Perl初心者です。 LWPでどうしてもproxyが通りません・・・。 何が悪いのかわかりません。教えてください。 モジュールは全て導入を確認しました。 よろしくお願いします。 稚拙なミスだったらごめんなさい。 use LWP::Simple; use LWP::UserAgent; use HTTP::Request::Common; my $ua = LWP::UserAgent->new( timeout=>"5" ); #cybersyndromeさんからLWP::Simpleでproxyを取得 $_ = get('http://www.cybersyndrome.net/pla5.html'); #proxyをリストに代入 (@proxy_list)=/\"\>(.*?)\<\/a\>\<\/li\>\<li\>/g; #適当なサイトをリクエストのターゲットに $r = new HTTP::Request GET,('http://taruo.net/e/'); #前述のターゲットへリクエストしてひとつづつproxyが通るか確かめたいのに何故かすべてすぐにERRORに for($i = 0;$i <= 10;$i++){ $proxy = 'http://'.$proxy_list[$i]; $ua->proxy ([qw(http https)] , $proxy); $req = $ua->request($r); if ($req->is_success) { print "Success!\n"; }else{ print "Error\n"; } }

    • ベストアンサー
    • Perl
  • LWP Cookie取得

    恐れ入ります。 LWPで、特定サイトにアクセスした時に発行されるCookieを任意のディレクトリに保存したいのですが、どのようにしたらよいかわかりません。 use HTTP::Cookies; use LWP::UserAgent; $ua = LWP::UserAgent->new(); $cookie_file = './cookie/xxx.txt'; $cookie_jar = HTTP::Cookies->new(file => $cookie_file, autosave => 1); $url = "http://~~"; $response = $ua->get($url); print $response->content; で、コンテンツは表示されますが、xxx.txtにcookieが保存されません。 #LWP-Cookies-1.0 のみが記載された白紙のxxx.txtが精製されます。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • perlでhtmlファイルを取得したいのですが

    perlでmixiなどログイン処理のあるサイトのhtmlファイルを取得したいのですがなかなか上手くいきません。 どなたかご教授をお願いします。 ----------------------------------------------------------------- #!/usr/bin/perl use LWP::UserAgent; use HTTP::Cookies; use HTTP::Request::Common; use LWP::Simple; my $mixi_email = 'メールアドレス@yahoo.co.jp'; my $mixi_password = 'パスワード'; my $login_url = 'http://mixi.jp/login.pl'; my $home_url = 'http://mixi.jp/home.pl'; my $mixi = LWP::UserAgent->new($mixi_email, $mixi_password); #Cookieを有効にする# my $cookie = sprintf('cookie_%s_%s.txt', $$, time); my $cookie_jar = HTTP::Cookies->new(file => $cookie, ignore_discard => 1); $mixi->cookie_jar($cookie_jar); #ログインする# my @form = ('email' => $mixi_email, 'password' => $mixi_password, 'next_url' => $home_url);#POSTで送る内容の配列 my $request1 = &HTTP::Request::Common::POST($login_url, [@form]); #リクエストヘッダの生成 my $response1 = $mixi->request($request1); #ログインする getstore("http://mixi.jp/search_community.pl?from=global(取得先の指定)", "test.html"); ---------------------------------------------------------------------- 試しに書いてみたのですがうまくいきませんでした

専門家に質問してみよう