ページリダイレクトや年齢認証をスキップする「Skip Redirector」をSafari 5の拡張機能に移植しました。
利用方法:

- 「環境設定…」→「詳細」の「メニューバーに“開発”メニューを表示」にチェックを入れる
- 「開発」メニューから「機能拡張を有効にする」にチェックを入れる
- 拡張ファイルをダブルクリックしてインストール
公式の拡張サイトが出来たらそちらに移す予定です。
今までGreaseKitからスクリプトをご利用だった方はこちらに移行して下さい。GreaseKitでの動作の仕組みはあまり行儀がよくありません(ドメインごとのlocalStorageにデータを残す)。
Chrome版を少し変更したらさくっと動きました。ソースもChrome版と共通。レポジトリ名がおかしくなっちゃった。safari.self.tab.dispatchMessage()がchrome.extension.sendRequest()と違ってメッセージのやり取りにコールバックが使えないのが面倒でした。
少しずつパラメーターが増えているので組み立て方をまとめ。
url
スキップするURLの正規表現を指定します。()でグルーピングするとreplace_urlで後方参照を利用出来ます。
link
ページのa要素、input、button要素を始めとするクリックイベントを付加された要素をXPathで指定します。指定された要素を自動的にクリック(クリックイベントをトリガー)して遷移します。
replace_url
-
linkを指定しない場合必須
- 両方指定されていた場合はreplace_urlを利用
httpまたはhttpsで始まるURLを指定します。ページの内容はチェックせず、URLのみで遷移します。urlで指定した後方参照を利用することが出来ます。
site_url
リダイレクトページのサイトのURLを指定します。Chrome拡張で対応ページのリストを作る際のリンクなどに利用されます。
fixme
指定が間違っていたり既に古くなっていて動かない、調査が必要な定義に対して1を設定するとその定義は利用されなくなります。誰かが原因を調べます(たぶん)。サイトの構造が変わるなどして、もはや対応出来ないことが確認された場合、定義は消去されます。
機能的にはGreasemonkey版と全く同じです。ソースはGitHubに置きました。
クロスドメイン越えるためと、キャッシュを保持するために拡張にしました。
- permissionsでwedataを許可
- content_scriptからbackgroundにアクセス
- backgroundで通信、レスポンスをキャッシュしつつcontent_scriptにコールバック
- content_scriptでリダイレクト判定
きれいに分けて書けた:)
MEGAUPLOAD側に修正が入ったため2010-02-26現在この方法は使えません。
hail2u.net - Weblog - MEGAUPLOADから簡単にダウンロードがそのまま取り込めそうだったので入れました。
このバージョン(0.5)からdocument内のリンク、ボタンをXPathで探す方法に加えて、URLを正規表現で置き換える方法が追加されます。SITEINFOの指定方法はMEGAUPLOADの指定を参考にして下さい。
- urlキーで()を使ってグルーピング
- replace_urlキーで後方参照を使ってURLを組み立てる
感じで指定します。コード的にはこんなです。
location.href = location.href.replace(new RegExp(url), replace_url);
FirefoxではcreateEventで作ったイベントからa要素をクリック出来ないみたいだ・・。a要素の時だけ以前のようにlocation.hrefで飛ぶようにしてみた。a要素にtarget属性が指定されてても無視されます。出来るなら統一したいなー。
1.1.2で統一しました。初期化処理をinitMouseEventにしたら上手くいったみたい。今まではinitEventを使っていました。
e.initMouseEvent('click', true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
引数多い。
あと、期限切れのキャッシュを上手く更新出来ていなかった問題も修正しました。
対応版をコミット、wedataにルールを追加しました。
とらのあなの年齢認証はinput要素のクリックイベントから起動したJavaScriptでクッキーを発行して認証判定する仕組みになっています。今まではリダイレクトURLをa要素から取得していたため、この仕組みに対応出来ませんでした。今回createEventでクリックイベントを発行してページ移動を行うように変更したので、とらのあな以外にもクリックで移動、認証するほとんどのサイトに対応出来るようになったはずです:)
drryさんにSITEINFOの正規表現を添削して頂いていました。ありがとうございます。
連休中にだらだらとネットを見ていて、前から気になっていたリダイレクトの待ち時間と年齢確認がますます面倒になってきました。ぐりぐり。
対応サイトはwedataをご覧下さい。スクリプト作成時点ではリダイレクタはLinkBucksとオラバウト、年齢確認はamazon.co.jp、DMMをスキップするようになっています(ひどい)。SITEINFOを追加すれば増やせます。
年齢確認はログインしてればなくしてもいいと思う。セブンアンドワイみたいにログイン必須でも困るけど。