HPでの自動入力

返信する


答えを正確に入力してください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: HPでの自動入力

by ゲスト » 2005年12月31日(土) 12:19

書き忘れましたが、サンプルでは、フレームには、対応してません。
フレームもオブジェクトとして存在します。

by ゲスト » 2005年12月31日(土) 12:17

Excelや、VBがない人は、VBSでも実行できます。
このサンプルでは、新たな属性も変更します。

実行手順:
1.Google.vbs ファイルを新規作成して、以下のコードを貼り付け保存。
2.IEを起動して、http://www.google.co.jp/ を開く。
3.Google.vbs をダブルクリック

コード: 全て選択

Set oshell = CreateObject("Shell.Application")

For Each ownd In oshell.Windows()
	MsgBox ownd.document.body.innerHTML
	ownd.document.body.text = "#FFFFFF"
	ownd.document.body.bgcolor = "#000000"
	For Each oTag In ownd.document.all.tags("input")
		If oTag.Type = "text" And oTag.Name = "q" Then
			oTag.Value = "HPでの自動入力"
		End If
	Next
Next
サンプルのように入力するターゲットが決まっている場合は、いいですが、
ページごとに異なるフォームの場合は、ソースの解析も必要です。
自動入力以上に苦労するかもしれません。
私が、例の懸賞ソフトを試したのが数年前ですが、当時100%の自動入力は、
出来ませんでした。

by バケさん » 2005年12月31日(土) 07:48

> Excel VBAのサンプルの実行の仕方をもう少し詳しく教えて頂けないでしょうか?
> Excel VBAに貼り付けて実行すると”ユーザ定義型は定義されていません”と表示されコンパイルエラーになってしまいます。
ソースのコメントに書かれてあるのですが、参照設定が必要です。

BBSのソースでは以下の様に記述されてあるのでVisualBasicEditorのメニューバーの tool - 参照設定 を選択して
「Microsoft Internet Controls」をチェックします。
(実行、デバッグ時には停止させないと設定できません)
Dim oShellwnd As ShellWindows 'Library SHDocVwを参照設定 - (Microsoft Internet Controls)

by » 2005年12月30日(金) 21:43

返事が遅くなりすいません

>ノッチさん
教えて頂いたコードを実行してみましたが・・・
その先をどうすれば良いのか全然わかりません(汗)
PrintScreenボタンを押す動作をエミュレートした と言う事だけは理解出来ましたが。

>ゲストさん
Excel VBAのサンプルの実行の仕方をもう少し詳しく教えて頂けないでしょうか?
Excel VBAに貼り付けて実行すると”ユーザ定義型は定義されていません”と表示されコンパイルエラーになってしまいます。

by ゲスト » 2005年12月23日(金) 10:59

もう一つ訂正。

コード: 全て選択

' 又は…。
'  Set oDoc = oShellwnd.Item(0).document
'  oDoc.all.Name.Value = "弘"
'  oDoc.all.email.Value = "mail@address.co.jp"
'  oDoc.all.sub.Value = "HPでの自動入力"
'  oDoc.all.Comment.Value = "自動入力の質問"
です。

by ゲスト » 2005年12月23日(金) 10:40

× IE限定となる訳です。
○ IEコンポ限定となる訳です。

by ゲスト » 2005年12月23日(金) 10:38

> IE限定であれば行けるんでしょうか?
ただしくは、IEコンポーネントを使用したブラウザです。
IEは、ページの表示部分がCOMサーバですので、IE限定となる訳です。
そして、ページの内容をプロパティなどとして操作できる様になっています。
(Donutなどでも出来るかも)
操作は、ABでも行けるはずですが、かなり面倒です。
なので、ツール作成に必要な機能をVBAや、VBなどのRAD開発環境を使用して、
プロトタイプを作成した方がいいと思います。

Excel VBAでのサンプルを載せますので、あとは、ご自身で調査願います。
私も大して詳しくありません。確か専用のhtmlヘルプがありました。(英語)

IEを起動して、以下のサンプルをVBAに貼り付けて実行してください。

コード: 全て選択

Sub BBS()
  
'  Dim oDoc As HTMLDocument 'Library MSHTMLを参照設定 - (Microsoft HTML Object Library)
  Dim oShellwnd As ShellWindows 'Library SHDocVwを参照設定 - (Microsoft Internet Controls)
  
  Set oShellwnd = New ShellWindows
  If oShellwnd.Count = 0 Then
    MsgBox "IEを起動してください!!", vbExclamation + vbOKOnly
    GoTo ExitTag
  End If
  
  Call oShellwnd.Item(0).Navigate("http://www.discoversoft.net/bbs/bbs.cgi")
  
  While oShellwnd.Item(0).Busy = True
    DoEvents
  Wend
  
  oShellwnd.Item(0).document.all.Name.Value = "弘"
  oShellwnd.Item(0).document.all.email.Value = "mail@address.co.jp"
  oShellwnd.Item(0).document.all.sub.Value = "HPでの自動入力"
  oShellwnd.Item(0).document.all.Comment.Value = "自動入力の質問"
  
' 又は…。
'  Set oDoc = oShellwnd.Item(0).document
'  oDoc.Item(0).document.all.Name.Value = "弘"
'  oDoc.Item(0).document.all.email.Value = "mail@address.co.jp"
'  oDoc.Item(0).document.all.sub.Value = "HPでの自動入力"
'  oDoc.Item(0).document.all.Comment.Value = "自動入力の質問"
  
ExitTag:
'  Set oDoc = Nothing
  Set oShellwnd = Nothing
  
End Sub

コード: 全て選択

Sub Google()
  
  Dim oTag As Object
  Dim oShellwnd As ShellWindows 'Library SHDocVwを参照設定 - (Microsoft Internet Controls)
  
  Set oShellwnd = New ShellWindows
  If oShellwnd.Count = 0 Then
    MsgBox "IEを起動してください!!", vbExclamation + vbOKOnly
    GoTo ExitTag
  End If
  
  Call oShellwnd.Item(0).Navigate("http://www.google.co.jp/")
  
  While oShellwnd.Item(0).Busy = True
    DoEvents
  Wend
    
  For Each oTag In oShellwnd.Item(0).document.all.tags("input")
    If oTag.Type = "text" Then
      oTag.Value = "HPでの自動入力"
    End If
  Next oTag
  
ExitTag:
  Set oShellwnd = Nothing
  
End Sub

by ノッチ » 2005年12月22日(木) 22:47

こんばんわ。
キーボード入力をエミュレートする
keybd_event
というAPIがあります。

コード: 全て選択

Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long,ByVal wMapType As Long) As Long 

keybd_event(VK_SNAPSHOT,MapVirtualKey(VK_SNAPSHOT,0),0,0)
keybd_event(VK_SNAPSHOT,MapVirtualKey(VK_SNAPSHOT,0),KEYEVENTF_KEYUP,0)
end
上記コードをABにそのまま貼り付けして実行するとクリップボードに画面がコピーされます。
(PrintScreenボタンを押す動作をエミュレートした)
これを加工して、
アルファベットキーを押す、放すを繰り返してスペースで変換、エンターで決定、
タブで次の項目に移動を繰り返したり、
クリップボードに必要な文字列をコピーしてCtrl+V、タブで移動する等で
必要な項目を入力していくことが可能です。
こんな方法はどうでしょうか。(というかこういうソフトが実在するんですが)

by konisi » 2005年12月22日(木) 18:17

話はそれますが、IE限定っていうのとWebブラウザ限定っていうのとでは違うので区別した方がいいと思います。

IE・・・IE4 IE5 IE6等のInternetExplorerシリーズ

Webブラウザ・・・IE、FireFox、Nescape、Sleipnir等の全てのWebページを表示できるブラウザ

この定義で行っても「IE限定」かどうか調べてみてくだされ。暇なら。

そして文自体にミスがあったら言ってください。

by » 2005年12月21日(水) 12:54

回答有難う御座います。
お二人の意見を纏めるとHTMLとHTTPとSOCKET及びCOMでDOMを操る知識が必要なんですね。

ゲストさんの書かれてた"IE限定"と言う言葉が気になったのですがIE限定であれば行けるんでしょうか?(しつこくてすいません)

紹介して頂いたHP見ました。
正に実現したいのはそう言う風なソフトです。

by ゲスト » 2005年12月21日(水) 12:10

http://www5.ocn.ne.jp/~miisan/aibar/support/
こういうのでしょうか?
これを実現するには、COMで、DOMを操る必要があります。
IE限定です。

by rj » 2005年12月21日(水) 11:57

IEをABで操作するのは難しそうですね。
他に考えられるのは

HTTPでHTMLをダウンロード

HTMLを解析して設定すべきフォームを探す

内容を設定する

HTTPを使ってPOSTとsubmitを送信する

ぐらいしか思いつきません。
これもHTMLとHTTPとSOCKETの知識がないとまず無理です。

突き放すようで申し訳ありませんが、あきらめるのが無難かと。

Re: javaでHTTPUNITでも使えば一発ですよ

by » 2005年12月21日(水) 11:12

> http://httpunit.sourceforge.net/doc/cookbook.html

yasさん、有難う御座います。
ただ・・・英語なのとjavaは全然わからないので、内容がさっぱり理解出来ません。
(ABでは実現は困難なのでしょうか?)

javaでHTTPUNITでも使えば一発ですよ

by yas » 2005年12月21日(水) 10:46

HPでの自動入力

by » 2005年12月21日(水) 10:38

懸賞サイト等では郵便番号から氏名、電話番号と言った決まったフォームの入力を求められます。
これを何とか自動化出来ないものかと考えたのですが、
実際にこれをABで作ろうと思えば作れるものなのでしょうか?

IEでHPを開き、入力の欄に入力(自動で入力)後、送信ボタンをクリック<ここまでの流れをABで。

もし可能な様であるならば、簡単なサンプルでも教えて頂けたらと思います。
宜しくお願いします。

ページトップ