[リストへもどる]
一括表示

投稿時間:2003/05/20(Tue) 07:58
投稿者名:フクロウ
Eメール:
URL :
タイトル:
VBでブラウザにログイン
http://www.wakwak.com/info/service/util.html

上記のURLにVBを使ってログインし、「ログインID」「パスワード」と入力し、「認証」ボタンを操作し、
ログイン先の情報を取得しようと考えています。どこから手をつけてよいのかわからず困っています。

投稿時間:2003/05/20(Tue) 09:57
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: VBでブラウザにログイン
> http://www.wakwak.com/info/service/util.html
> 上記のURLにVBを使ってログインし、「ログインID」「パスワード」と入力し、「認証」ボタンを操作し、

そのページの主要な部分を抜き出すと、以下のようなHTMLになります。
(細かい部分は省略しています)

<form name="form4usr" method="POST"
action="https://signup00.wakwak.com/user_asp/wakwak/buffer.asp">
  <input type="hidden"   name="backURL"         value="http://www.wakwak.com/info/service/util.html">
  <input type="hidden"   name="tmpSWITCHoption" value="wak">
  <input type="text"     name="d_account">
  <input type="password" name="d_password">
  <input type="image"    name="imageField">
</form>

VBで、上記のリクエストを送信する場合には、
・InternetExplorerオブジェクト(WebBrowserコントロール)を使う
・XMLHTTPオブジェクト(ServerXMLHTTPオブジェクト)を使う
のいずれかを用いると良いでしょう。


とりあえず、XMLHTTPを使う方法を例に挙げると、
  strUrl = "http://www.wakwak.com/info/service/util.html"
  objXMLHTTP.Open "POST", strUrl, False
  objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  objXMLHTTP.send strParameter
  Debug.Print objXMLHTTP.responseText

のようになります。(objXMLHTTPの宣言は、過去ログNo.3949を参照してください)

ここで、strParameter は、送信するデータの中身です。
これは、<input name="名前" value="値"> の内容を、
   名前1=値1&名前2=値2&名前3=値3&………
のように列挙した文字列となります。すなわち、

  strParameter = "backURL=" & Encode("http://www.wakwak.com/info/service/util.html") _
               & "&tmpSWITCHoption=wak" _
               & "&d_account=" & Encode(strLoginId) _
               & "&d_password=" & Encode(strPassword) _
               & "&imageField.x=0" _
               & "&imageField.y=0"

のようになります。(imageField.x/yは、認証ボタンを押した時の座標位置です)


なお、上記の Encode というのは、「UrlEncode」処理を行う関数です。
UrlEncode の処理は、BASP21 DLLを使って、

  Public Function Encode(ByVal Src As String) As String
      Encode = CreateObject("basp21").BASE64(Src, 4)
  End Function

のように実装するのが簡単ですが、実際には
  http://www.wakwak.com/info/service/util.html

  http:%2F%2Fwww.wakwak.com%2Finfo%2Fservice%2Futil.html
のように変換するだけの処理なので、Replace関数などを使って自作されても良いかと思います。

# 参考資料[VB で URL エンコード]
# http://www.geocities.co.jp/SilkRoad/4511/vb/urlenc.htm

投稿時間:2003/05/20(Tue) 13:23
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^2: VBでブラウザにログイン
WebBrowserコントロールを使う方法だとこんな感じです。

WebBrowser1.Navigate2 "http://www.wakwak.com/info/service/util.html"

Do
    DoEvents
Loop While WebBrowser1.Busy

WebBrowser1.Document.form4usr.d_account.Value = "ログインID"
WebBrowser1.Document.form4usr.d_password.Value = "パスワード"
WebBrowser1.Document.form4usr.submit

投稿時間:2003/05/20(Tue) 17:11
投稿者名:フクロウ
Eメール:
URL :
タイトル:
Re^3: VBでブラウザにログイン
> WebBrowser1.Document.form4usr.d_account.Value = "ログインID"
> WebBrowser1.Document.form4usr.d_password.Value = "パスワード"
> WebBrowser1.Document.form4usr.submit

私が取り扱っているHTML内には「form4usr」あたるものがないのですが、これはHTML内のどんな要素なのですか?

投稿時間:2003/05/20(Tue) 17:47
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^4: VBでブラウザにログイン

> 私が取り扱っているHTML内には「form4usr」あたるものがないのですが、これはHTML内のどんな要素なのですか?

  http://www.wakwak.com/info/service/util.html

  このhtmlのソースコードを見て下さい。

投稿時間:2003/05/20(Tue) 17:53
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^4: VBでブラウザにログイン
> > WebBrowser1.Document.form4usr.d_account.Value = "ログインID"
> > WebBrowser1.Document.form4usr.d_password.Value = "パスワード"
> > WebBrowser1.Document.form4usr.submit
>
> 私が取り扱っているHTML内には「form4usr」あたるものがないのですが、これはHTML内のどんな要素なのですか?

formです。

<form name="form4usr" method="POST" action="https://signup00.wakwak.com/user_asp/wakwak/buffer.asp"
onSubmit="return ck_PLM(this)">

とあるように、formを扱うときはnameをそのまま使うことができます。
つまり「form4usr」はDHTMLのメソッドやプロパティではなく、このコードは
http://www.wakwak.com/info/service/util.htmlにログインするための
専用のコードというわけです。

投稿時間:2003/05/20(Tue) 18:06
投稿者名:フクロウ
Eメール:
URL :
タイトル:
Re^5: VBでブラウザにログイン
<FORM ACTION="./index.php" METHOD="post">
<input type=hidden name=cm value="set">
<TABLE >
    <TR>
        <TD>ID</TD>
        <TD><input type=text name=si size=10 maxlength=6></TD>
    </TR><TR>
        <TD>PASS</TD>
        <TD><input type=text name=pw size=10 maxlength=8></TD>
    </TR><TR>
        <TD COLSPAN=2><BR>
            <input type=submit value="ログイン">
        </TD>
    </TR>
</TABLE>
</FORM></BODY>

上記のようなHTMLなのですが。

brwLogin.Document.si.Value = "123456"

とやっても「実行時エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。」とでます。

投稿時間:2003/05/20(Tue) 19:33
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^6: VBでブラウザにログイン
> http://www.wakwak.com/info/service/util.html
>
> 上記のURLにVBを使ってログインし、「ログインID」「パスワード」と入力し、「認証」ボタンを操作し、
> ログイン先の情報を取得しようと考えています。どこから手をつけてよいのかわからず困っています。

質問内容は上記じゃなかったのですか?
又、 ★ - フォルダの参照ダイアログ - 遠藤 05/17-00:52 No.4018  の件は解決されたのですか?

投稿時間:2003/05/21(Wed) 09:46
投稿者名:フクロウ
Eメール:
URL :
タイトル:
Re^7: VBでブラウザにログイン
はじめは、掲載したHTMLを公開するのがまずいと思い、例えとして、http://www.wakwak.com/info/service/util.htmlを引用しました。失礼しました。「ファルダの参照ダイアログ」の方は友人のようです。返事をするよういっておきます。

投稿時間:2003/05/21(Wed) 10:52
投稿者名:LESIA
Eメール:
URL :
タイトル:
Re^8: VBでブラウザにログイン
FORMにNameがないならこんな感じでどうでしょう。

Dim objForm As Object

WebBrowser1.Navigate2 "http://www.hogehoge.html"

Do
    DoEvents
Loop While WebBrowser1.Busy

For Each objForm In WebBrowser1.Document.getElementsByTagName("FORM")
    If objForm.Action = "./index.php" Then
        objForm.si.Value = "ログインID"
        objForm.pw.Value = "パスワード"
        objForm.submit
    End If
Next objForm

投稿時間:2003/05/21(Wed) 11:23
投稿者名:フクロウ
Eメール:
URL :
タイトル:
Re^9: VBでブラウザにログイン
ありがとうございます!次のページへログインすることができました!
またよろしくお願いします!