TAGコマンドを使うとサイトをクリックすることができます。こちらの記事でTAGコマンドの使い方を説明しましたので、もう少しやってみて面白いことを自動化してみましょう。それはポイントサイトのクリックの自動化ですね。ポイントがもらえて、ゲーム感覚でプログラムを書くモチベーションが上がりますよね!(注意!継続的な利用を推奨しているわけではないのでご注意くださいね。プログラムが思い通りに動くことを確認した後はやめておきましょう。)
ポイントサイト
今回はこちらのサイトのポイントをクリックしてみましょう。クリック自動化の注意事項はこちらで確認くださいね。
頑張ってiMacrosのプログラムを覚えると、こんな感じで自動化ができますよ。
プログラム作成
タグの確認
ではクリックするリンクのタグを確認してみましょう。サイトの色々な所に以下のような画像があるので、Firefoxの開発ツールでタグをクリックしてみます。開発ツールの使い方はこちらの記事を見てくださいね。
そうすると、詳しく見て1ptの画像は、以下の様にタグのタイプが “img” で属性が src, class, border の三つがあることが分かりますね。
<img src=”http://img.gendama.jp/img/forest/forest_bt1.gif” class=”btn” border=”0″>
念のため他の画像も確認すると、ポイントをもらえるリンクタグは以下の様に幾つかあることが分かります。なかなか複雑な構造をしていますね。
<img src=”//img.gendama.jp/img/forest/star.gif” border=”0″>
<img src=”//img.gendama.jp/img/neo/index/click_pt.png” alt=”詳しくみて1pt” width=”120″ height=”21″>
<img src=”http://img.gendama.jp/img/forest/bt_day1.gif” class=”btn” border=”0″>
<img src=”//img.gendama.jp/img/renew/common/btn_detail.png” width=”110″ height=”22″>
ではiMacrosのTAGコマンドでこれらのタグをクリックすることを考えましょう。
iMacrosのコマンド
iMacrosのコマンドをできるだけ単純化するために、タグで共通の部分を探しましょう。
そうすると、以下3つのことが分かりますね。
- タグのタイプは全て img
- 全てのタグのは src 属性がある
- border, class, alt など他の属性は持っていないタグがある
ということで、クリックをするTAGコマンドは以下のようになります。
TAG POS=X TYPE=IMG ATTR=SRC:X
X は変化する部分を示しています。
POSの値がXなのは、同一の属性を持つリンクタグが幾つかあるのですね。詳しく見て1ptの画像を開発ツールで確認していくと分かります。
SRCの値がXなのは、確認したタグを比較すると、”src=” の右側の値が全部違うからですね。
このような違いを扱うためには関数を使うことが便利です。
違いを吸収するプログラム:関数化
まず検討のため、JavascriptでiMacrosのプログラムを書いてみましょう。次のようになりますね。
1 2 3 |
var macro = "CODE:"; macro += "TAG POS=" + N + " TYPE=IMG ATTR=SRC:" + X + " \n"; iimPlay(macro); |
POSの値Nについては、Javascriptの繰り返し文で対応できますね。
SRCの値については、規則的な値ではないので変化させる必要があります。それが関数:functionです。
Javascriptを次のように書くと、( )の中に書いてある変数msgを関数内部で使用することができます。function の右側に書いてあるshowMsgが関数になります。
1 2 3 4 |
function showMsg(msg) { alert(msg); } |
次の様に、定義したshowMsg関数の()内に定義した変数を書く、または値を直接 showMsg(“テスト”) と書くと関数を使うことができます。
1 2 3 4 5 6 7 8 |
var message = "テスト\n"; showMsg(message); //表示関数 function showMsg(msg) { alert(msg); } |
後もう一つ自動化のために考えることがあります。それが、同じタグの数が全て違うことがですね。
繰り返し処理のWhile文とタグのエラー処理
「src=”http://img.gendama.jp/img/forest/forest_bt1.gif”」の属性を持つIMGタグの数は14で、
「src=”//img.gendama.jp/img/renew/common/btn_detail.png” 」の属性を持つIMGタグの数は9と違うので、固定回数を繰り返すFor文では全てのタグをクリックすることは難しいですね。
そこでWhile文の繰り返しを使います。次の様にwhile文を使うと、繰り返し文の中で 変数i を一つづつ加算してしていき、i が 5 になると、loopラベルのwhile文を終了するプログラムになります。
1 2 3 4 5 6 7 8 9 |
var i = 0; loop:while(i < 10) { i++; if(i == 5) { break loop; } } |
このwhile文を使ってタグの数が違ってもクリックできる処理を作ります。
クリックを行うTAGコマンドはタグが見つからないとエラーになります。そのエラー番号は “-921” です。iMacrosのエラーコード表を見るとこう書いてありますね。
-921 | Element specified by TAG command was not found |
つまり、iimPlay()関数で戻ってきたコードが “-921” である場合、それ以上そのタグは見つからないとして繰り返し文whileを停止する処理にします。この関数を書くと次の様になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
function click(imgsrc){ var i = 0; loop:while(true) { i++; var macro = "CODE:"; macro += "TAB T=1 \n"; macro += "TAG POS=" + i + " TYPE=IMG ATTR=SRC:" + imgsrc + " \n"; macro += "WAIT SECONDS=2 \n"; macro += "TAB T=1 \n"; var ret_code = iimPlay(macro); if(-921 == ret) { break loop; } } } |
2行目で変数 i を定義して “0” に設定しています。この変数 i を繰り返しwhile文内部の5行目で一つづつ加算していきます。while文の条件を(true)に設定していますが、これはずっと繰り返しをするという意味になります。
つまり、この関数を実行すると、POSを一つづつ加算しながら、imgsrcの値を持つSRC属性のIMGタグをクリックするiMacrosコードを作成します。12行目でこのiMacrosコードを実行し、戻り値がそのタグを見つけられずに -921になると、繰り返し文Whileを終了して、関数を停止させます。
では、以上を全て取り入れたプログラムを書いてみましょう。
全てのポイントリンククリックするプログラム
プログラムは次のようになります。ここでは、SRCの値を順番に処理するため、一度配列に入れています。これをJavascriptファイルにコピーして実行してみましょう(方法はこちらを参考にしてください)。
19行目でリンクをクリックする関数を使用しています。この関数にSRCの値を順番に入れることでクリックの処理を実現しています。どのSRCの値でも処理が共通化出来ていることが分かりますね。
ポイントサイトですので開いた広告は自動で閉じないようにしています。見ていってくださいね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
//imgsrcの値 var imagesrc = [ "http://img.gendama.jp/img/forest/forest_bt1.gif", ////詳しく見て 1ptのsrc "//img.gendama.jp/img/neo/index/click_pt.png", //詳しく見て 1ptのsrc "http://img.gendama.jp/img/forest/bt_day1.gif", //毎日必ず1ptのsrc "//img.gendama.jp/img/forest/star.gif", //5ptのsrc "//img.gendama.jp/img/renew/common/btn_detail.png" //詳しく見て 1ptのsrc ]; //ポイントサイトを開く var macro = "CODE:"; macro += "URL GOTO=https://www.gendama.jp/forest/ \n"; macro += "WAIT SECONDS=2 \n"; iimPlay(macro); //ポイントの画像をクリックする for(var i = 0; i < imagesrc.length; i++) { clickImage(imagesrc[i]); } //srcValueの画像をクリックする関数 function clickImage(srcValue){ var i = 0; loop:while(true) { i++; var macro = "CODE:"; macro += "TAB T=1 \n"; macro += "TAG POS=" + i + " TYPE=IMG ATTR=SRC:" + srcValue + " \n"; macro += "WAIT SECONDS=2 \n"; macro += "TAB T=1 \n"; var ret_code = iimPlay(macro); if(-921 == ret_code) { break loop; } } } |
さて、少し長かったですが、これでクリックを自動化するプログラムができました。ちゃんと読んでくださった方はなるほどなぁと思っていただけたのではないでしょうか。クリックのフリーツールなどありますけど、基本的にこのような内容でプログラムが組んであるはずです。自分でも出来そうですよね?
最後にもう一度注意ですが、継続的な利用を推奨しているわけではないのでご注意くださいね。プログラムが思い通りに動くことを確認した後はやめておきましょう。