質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

Q&A

0回答

669閲覧

Perl WWW::Mechanizeで特定のサイトが開きません。Cookie情報までは取得します。

SPIDER55

総合スコア0

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

0グッド

0クリップ

投稿2021/01/30 07:37

前提・実現したいこと

(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

WWW::Mechanizeで、特定のサイト(ソース内$url[0] )が開けないのですが、何が問題かお判りになる方いらっしゃいますか。その他Googleなどのサイトは普通に開くことが出来ます。

IO::Socket::SSLのデバッグ情報は以下です。
DEBUG: .../IO/Socket/SSL.pm:3010: new ctx 34417455104
DEBUG: .../IO/Socket/SSL.pm:762: socket not yet connected
DEBUG: .../IO/Socket/SSL.pm:764: socket connected
DEBUG: .../IO/Socket/SSL.pm:787: ssl handshake not started
DEBUG: .../IO/Socket/SSL.pm:829: using SNI with hostname salonboard.com
DEBUG: .../IO/Socket/SSL.pm:880: set socket to non-blocking to enforce timeout=10
DEBUG: .../IO/Socket/SSL.pm:894: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:897: done Net::SSLeay::connect -> -1
DEBUG: .../IO/Socket/SSL.pm:907: ssl handshake in progress
DEBUG: .../IO/Socket/SSL.pm:917: waiting for fd to become ready: SSL wants a read first
DEBUG: .../IO/Socket/SSL.pm:937: socket ready, retrying connect
DEBUG: .../IO/Socket/SSL.pm:894: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:897: done Net::SSLeay::connect -> -1
DEBUG: .../IO/Socket/SSL.pm:907: ssl handshake in progress
DEBUG: .../IO/Socket/SSL.pm:917: waiting for fd to become ready: SSL wants a read first
DEBUG: .../IO/Socket/SSL.pm:937: socket ready, retrying connect
DEBUG: .../IO/Socket/SSL.pm:894: call Net::SSLeay::connect
DEBUG: .../IO/Socket/SSL.pm:897: done Net::SSLeay::connect -> 1
DEBUG: .../IO/Socket/SSL.pm:952: ssl handshake done
DEBUG: .../IO/Socket/SSL.pm:3059: free ctx 34417455104 open=
DEBUG: .../IO/Socket/SSL.pm:3070: OK free ctx 34417455104
Error GETing https://salonboard.com/: read timeout at Mech.cgi line 42.


DEBUG: .../IO/Socket/SSL.pm:952: ssl handshake doneのところで止まってしまい、最終的にDEBUG: .../IO/Socket/SSL.pm:3059: free ctx 34417455104 open=
DEBUG: .../IO/Socket/SSL.pm:3070: OK free ctx 34417455104
Error GETing https://salonboard.com/: read timeout at Mech.cgi line 42.の3行が一緒に表示されます。

該当のソースコード

Perl

1ソースコード 2use Jcode; 3use WWW::Mechanize; 4use LWP::UserAgent; 5use HTTP::Cookies; 6use IO::Socket::SSL qw(debug3); 7 8$url[0] = 'https://salonboard.com/'; 9 10my $cookie_jar = HTTP::Cookies->new(file => "cookie.txt", autosave => 1, ignore_discard => 1); 11$agent[0] = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11'; 12 13my $mech = WWW::Mechanize->new( 14ssl_opts => { 15 verify_hostname => 0, 16 SSL_cert_file => 'ca.cer', 17 }, 18 ); 19 20$mech->add_header(ACCEPT => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9'); 21$mech->add_header(ACCEPT_LANGUAGE => 'ja,en-US;q=0.9,en;q=0.8'); 22$mech->add_header(ACCEPT_ENCODING => ' gzip, deflate'); 23$mech->add_header(CONNECTION => 'keep-alive'); 24$mech->add_header(HTTP_CACHE_CONTROL => 'max-age=0'); 25 26$cookie_jar->load($cookie_jar); 27$mech->cookie_jar($cookie_jar); 28$mech->agent($agent[0]); 29 30$response = $mech->get( $url[0] ); 31 32print "Content-type: text/html; charset=UTF-8\;\n\n"; 33print $mech->content; 34$mech->dump_headers(); 35

試したこと

http://www.taruo.net/e/にて、MechanizeでアクセスをするとProxyあつかいになるようで、通常ブラウザアクセスでhttp://www.taruo.net/e/に表示されたヘッダー情報を記載しました。その後、極めて物静かなproxyまで改善しましたが、そもそもproxy自体を刺した状態で$url[0]へブラウザアクセスをして開くので、問題では無いのかと推測。

ssl通信の問題かと思い、相手サイトから証明書をダウンロードして実行プログラムと同階層に保存し、読み込んだ結果通信は成立していることを確認。

HTTP::Cookiesにて相手サイトのcookie情報は記録されている模様。ここまでは通信されてその後遮断されているようです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/01/30 07:39

目的は何でしょうか。 >相手サイトから証明書をダウンロードして これ、どういうこと?
SPIDER55

2021/01/30 07:41

目的は業務上で作業を自動化したいということなのですが、 >相手サイトから証明書をダウンロードして というのは、ブラウザでそのサイトにアクセスをして、証明書をエクスポートしたという意味になります。
m.ts10806

2021/01/30 07:48

そういうのって勝手に「そのサイトの所有者として」使えましたっけ。 やろうとしていること危ない気が。 そのサイトって自身が管理してるものですか?
SPIDER55

2021/01/30 07:59

別の論点のようですが、エクスポート・インポート機能は通常ブラウザの機能としてありますので問題は無いと思います。その議論をしようと思って投稿した訳ではないのですが、ご理解ください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問