プロが教える店舗&オフィスのセキュリティ対策術

https://www.kireilife.net/pages/index.htmlの画面で
自動ログインをしたいが。方法が分からない。

my $mech = new WWW::Mechanize( autocheck => 1 );

# トップにアクセスし、
$mech->get('https://www.kireilife.net/pages/index.html');

# ログイン。
$mech->submit_form(
fields => {
email => 'your-email@example.com',
password => 'p4ssw0rd',
},
);

上記で、emailとか、passwordとかは、どうやって調べるのだろうか。
上記のhttps://www.kireilife.net/pages/index.htmlの中には、それらに
該当するのは無い様ですが。

fields=>{...}の中のキーの値はどうやって指定するのかが分からない。
済みません。調べる方法を教えてください。
宜しくお願いします。

質問者からの補足コメント

  • うーん・・・

    No form defined atが、$mech->submit_form
    の行で、エラーが発生します。

    多分に、fields=>{...}の指定が間違っていると思います。

      補足日時:2017/12/30 23:13
  • うーん・・・

    rubyをインストールして
    agent.get('https://www.kireilife.net/pages/index.html') do |page|

    # ログインする
    login_result = page.form_with(name: 'portalLoginActionForm') do |login|
    login['login_id'] = '***'
    login['password'] = '***'
    end.submit
    end

    上記を実行させたら、下記のエラーが出ました。
    01.rb:1:in `<main>': undefined local variable or method `agent' for main:Object
    (NameError)

    済みません。指摘をお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/12/31 10:37
  • うーん・・・

    最初の行に、agent = Mechanize.new
    を追加して実行したら、
    01.rb:1:in `<main>': uninitialized constant Mechanize (NameError)

    上記のエラーが出た。

    何が悪いのだろうか。

      補足日時:2017/12/31 10:43
  • うーん・・・

    有難う御座います。

    質問の内容が、もうperl云々では無くて
    htmlのformタグをどうやって調べるの
    家と言う事に成りましたので、ここで、
    一旦閉じて、再度質問を提出します。

    有難う御座いました。

    No.3の回答に寄せられた補足コメントです。 補足日時:2018/01/01 05:02

A 回答 (3件)

ActivePerlをインストールして実際にやってみました。



下記のサイトを参考に作成して実行してみました。
http://kaworu.jpn.org/kaworu/2008-01-02-1.php

しかし、実行してみると、下記のエラーが出ました。
There is no form named "portalLoginActionForm" at C:/Perl64/lib/WWW/Mechanize.pm line 1011.

該当のサイトのソースを見たところ、<form>タグがないことに気づきました。
<div id="_pc_header">のところのスクリプトでformを作成しているようです。
PCからアクセスしている場合にformタグが作成されるようになっているのかなと思います。

この先はどうしたらいいのか調べることができなかったので、すみませんが回答をあきらめます。
この回答への補足あり
    • good
    • 0
この回答へのお礼

有難う御座います。

この様な場合と言うのは、どうやって調べるのでしょうか。
wgetで取り敢えずはダウンロードはしていますが。

余りにも膨大な為に、どこから手を付けて良いのか分かりません。
知恵を貸して下さい。

宜しくお願いします。

お礼日時:2017/12/31 20:43

No.1です。



formの名前が、「portalLoginActionForm」になっていたので、submit_formのところを変更しました。
======================
agent.get('https://www.kireilife.net/pages/index.html') do |page|

# ログインする
login_result = page.form_with(name: 'portalLoginActionForm') do |login|
login['login_id'] = 'your-email@example.com'
login['password'] = 'p4ssw0rd'
end.submit
end

======================
参考サイト:
https://utage.headwaters.co.jp/blog/?p=1468

このサイトを見て参考になりますでしょうか。
この回答への補足あり
    • good
    • 0
この回答へのお礼

有難う御座います。

formの名前が、「portalLoginActionForm」になっていた>

上記は、どうやって調べたのでしょうか。
https://www.kireilife.net/pages/index.htmlのソースの中には、
その様な名前は、検索しても出て来ないのですが。

そこの所が分かりません。宜しく、お願いします。

お礼日時:2017/12/31 04:47

perlはわからないので、推測ですが。


htmlソースを見る限り、ログインIDを入力する項目名は「login_id」、パスワードは「password」
なので、「email =>」を「login_id =>」に書き換えてみて試していただけませんか?
    • good
    • 0
この回答へのお礼

有難う御座います。

下記のソースでエラーが出ます。
use WWW::Mechanize;
my $mech = new WWW::Mechanize( autocheck => 1 );

# トップにアクセスし、
$mech->get('https://www.kireilife.net/pages/index.html');

# ログイン。
$mech->submit_form(
fields => {
login_id => '*******',
password => '*******',
},
);

8行目の$mech->の所でNo form defined at C:\Users\usui\Documents\Access\電気代\lwp\01.pl line 8
のエラーに成ります。

お礼日時:2017/12/30 23:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!