あるページで使うあるツールの動作確認のために違ったIPアドレスから、そして違ったUAから、さらにページ、ツール毎に指定したリファラーで複数回アクセスしてテストする必要が発生。
つっても大規模アクセスじゃなくてn00回ぐらいで検証終わる規模です。
スマホや何かを駆使しても大して違ったIPアドレスにならないし…。
色々調べてみてTorブラウザとAutomatorを組み合わせて何とかなりました。
本当はもっといい方法というか安全な方法あるんでしょうが…。
てかこの辺はプログラマの方には何と低級で愚かな方法で実現してるんだろう…と思われるかもしれません。
GUIでタスクを実現する方法は以前書いた、そして今も使っているIFTTTに似ているかも?
IFTTTについての過去記事
「ifttt」はYahoo! Pipesで挫折したオイラにも使えたよ!
https://ivva.info/blog/archives/2012/0227231351.html
で、下記の方法は使い方間違えると危険なので要注意です。
田代砲?DoS攻撃?つってもそこまでの大量アクセスを発生は出来ないし。
図書館事件(Wikipedia)
の様になってしまうかも。
でもそういう時は事件の際の様に専用のクローラを使うか?
下記の時は巡回DL専用ツールを使ってましたが…。
TBS RADIOの「ストリーム」終了直前にポッドキャストを慌ててDLした 2009-04-02
https://ivva.info/blog/archives/2009/0402220703.html
どのディレクトリ階層まで巡回するか、どのファイルをDLするか拡張子の設定なども出来ます。
というのを先週の土日に設定してほうっておいてDLしました。
約1600ファイルで11Gのmp3ファイル。
サーバに負荷かけてしまったかなーこれ。すみません。
上記もほとんど図書館事件と同じ所業、かと思われる方多いかと思われますが?実際にサイトのアクセスログとか見るとGoogleのクローラなんかアクセスしまくりんぐですからね?
Googleは犯罪じゃなくて図書館事件は事件化?
そしてこないだ最高裁で無罪になったコインハイブ事件ですが…。
Coinhive事件
https://ja.wikipedia.org/wiki/Coinhive%E4%BA%8B%E4%BB%B6
バナー広告の表示は重いしコインハイブより負荷使ってんじゃないの?
(厳密な計算知りませんが…CPU負荷と同様にNW負荷とかの方が悪質の様な気も?いや単なる負荷の問題じゃなくて体感で人間が不都合感じるのはどっち?)
いや非同意でCPU勝手に使うのが悪質?
Google広告やGoogleアナリティクスとかその他jsのライブラリとかアドネットワークの仕組みとかもっとユーザに不案内で密かに行ってるんですけど…。
閑話休題。
何故TorブラウザとAutomatorを組み合わせないといけないかというと。Torで違ったIPアドレスを振られる様にするには「New Identity」をしないといけなくて。
これが実質アプリの再起動と同じ。なのでAutomatorと組み合わせて使いました。
AutomatorでURLを指定
↓
AppleScriptでTorを起動
↓
指定したURLを指定したUA、リファラーで表示。さらにウィンドウサイズはランダム。
↓
一時停止(n秒間)
↓
アプリケーションを終了
↓
一時停止(n秒間)
↓
ループ(で最初に戻る)
という感じです。
何故、途中に一時停止しないといけないかというとTorはページのロードに時間が掛かるからです。
(あちこちの仲介サーバを通ってアクセス元の痕跡を無くす?から?)
アプリケーションを終了してからさらに停止時間を挟んでいるのは、終了して即起動しようとしてアプリが終了していません、的なエラーが出た為です。
Torブラウザの細かな設定等はここでは触れません。
Automatorのアクションで「指定されたURLを取得」の後に下記のAppleScriptを置きます。
AppleScriptの箇所で引き渡されたURLでアプリ(ブラウザ)を起動し、そのURLを表示するように指定しています。
下記がそのスクリプトです。
on run {input, parameters} set webBrowser to "Tor Browser" repeat with theURL in input tell application webBrowser to open location theURL end repeat return input end run
停止時間や回数は各自調整してみてください。
ウィンドウサイズをランダマイズするAppleScriptは下記。
(ウィンドウサイズもページでは取得出来るのでランダマイズさせたかった)
on run {input, parameters} tell application "Tor Browser" set theNumberT to random number from 300 to 1600 set theNumberY to random number from 300 to 1600 set bounds of front window to {1, 1, theNumberT, theNumberY} end tell end run
UAのランダマイズとリファラーの指定はTorの拡張機能(Add-ons)をインスコしました。
Referer Control、User-Agent SwitcherというAdd-onです。
リファラーの指定はページ単位で出来るツールです。正規表現もいけます。
TorブラウザはfirefoxベースなのでFirefoxの拡張機能が使えるので。
コメント