”旧”iMona@zuzu開発者日記〜主に日々の行動記録〜 RSSフィード

このブログは引っ越しました! 引越し先は→「@zuzu開発日記〜主に日々の行動記録〜」です。

2009月10月09日

リファラーを柔軟に書き換る(偽装する)ためのuserChrome.js用スクリプトを作ってみた。

10/04/28更新・sites配列アクセスしようとしているサーバードメインが一部だけ一致した場合でも書き換えるようにした。

09/12/25更新・ステータスバーアイコンとツールメニューにON/OFFメニューを追加しました。

09/11/02更新・ダウンロード先を自前アプロダに変更しました。

09/10/26更新・リファラの自由指定が実際は効いていなかったので修正しました。

09/10/23更新・value指定方法を勘違いしてしまった方を見つけたので、value指定方法の説明を分かりやすく書き換えました。スクリプトのコメント部も書き換えてあります。

リファラーの指定がうるさいサーバーが多くあるので今までrefControlという拡張機能を使っていましたが我がFirefoxの軽量化および高速化作戦に伴い、refControlを無効化させましたが、

やっぱりリファラーを書き換えたかったのでuserChrome.jsスクリプトで作ってみました。

元にしたスクリプト

どんなスクリプト

元にしたスクリプトfakeRefererは基本的に本来のリファラーを送るか今のURLのルートを送るか程度しか指定できませんでした。

僕が使いたかったのはRefererを自由に書き換えることが出来るものです(まさにrefControlの代替です!)

そのためfakeRefererに色々なオプションを付け加え、さらに固定リファラーを指定出来るようにしたスクリプトに改造しました。

それが”RefererChanger”です。

refererChanger.uc.jsをダウンロード

主な使い方

スクリプト内のsites配列ハッシュ配列)にリファラーを書き換えたいサイトと書き換え方法を指定すれば次回userChrome.jsロード時から書き換えてくれます。

sites配列の書き方はハッシュkeyに書き換え対象のドメインを、valueに書き換え方法を指定して下さい。

またデフォルトとしてsites配列には以下の内容が入っています。

	var sites = {
		'image.itmedia.co.jp' : '@FORGE',
		'2ch.net' : '@FORGE',
		'imepita.jp' : '@ORIGINAL',
		'tumblr.com' : '@FORGE',
		'fc2.com' : '@BLOCK',
	};

sites配列のvalue指定方法

KeyValue
@NORMALリファラを変更しない
@FORGE開こうとしているサーバのルートに
@ORIGINAL開こうとしているサイトのURLを送信する
@BLOCKリファラを空にして送信
無指定開こうとしているサーバが別サーバだとそのサーバのルートに、ドキュメントと同じサーバーから開かれたようにする
それ以外指定された内容にリファラを書き換える。

kuroekuroe 2009/10/26 03:36 うまく指定した内容にリファラが書き変わらないのですが、Valueをどのように指定したらいいでしょうか?
'@example'や'example'という書き方をしても望むような効果が得られなったので…
@NORMAL、@ORIGINAL、@BLOCKなどは動いたので指定方法がおかしいんですか?

環境はFirefox3.5.3、WinXP SP3です。

zuzu_sionzuzu_sion 2009/10/26 10:02 えーとですね、どのように指定したいのか分からないのですが。
ひとまず@系での特殊機能が動いたのなら指定方法がおかしいと思います。
ひとまず以下にd.hatena.ne.jpにリファラとしてexample.co.jpを与える指定を追加したものを書いておきます。
>||
var sites = {
'image.itmedia.co.jp' : '@FORGE',
'2ch.net' : '@FORGE',
'imepita.jp' : '@ORIGINAL',
'tumblr.com' : '@FORGE',
'fc2.com' : '@BLOCK',
//ここまではデフォルト。下にサンプルを追加してみる。
'd.hatena.ne.jp' : 'example.co.jp',
};
||<
とのように追加すればd.hatena.ne.jpにアクセスした場合はexample.co.jpをリファラとして送るという風に書き換えられるはずです。

kuroekuroe 2009/10/26 13:42 診断くんで確認をしていたのですが、そのような書き方をしていてもうまく働かないようです。

'taruo.net' : 'example.co.jp',

このように記述しています。
これだと@BLOCKと同様の動作をしているようなのですが、環境依存でしょうか?
リファラで遊びたいだけで、本来の目的は現状でも果たせているので問題ないと言えばないんですが…w

clownboy-zuzuclownboy-zuzu 2009/10/26 21:28 申し訳ありませんでした!
どうやらリファラーの自由指定がちゃんと動いていなかったようです。
現在、修復中ですので数十分以内には修復できるかと思われます。

kuroekuroe 2009/10/26 23:43 無事に動作確認しました!
わざわざ修正ありがとうございました。

どらどら 2010/04/20 09:12 楽天のサイトでFlashだと思うんですがエラーがでてうまく動作しません…何故でしょう?

rakuten.co.jpと指定して一通り試しましたが駄目でした。

解決策があれば教えて頂けませんでしょうか?
宜しくお願いします。

zuzuzuzu 2010/04/23 20:54 うーん・・・情報が少なすぎて、そもそも何のリファラーを何故書き換えたいのかもよくわからないです。
ちゃんとした情報、せめて5W1Hぐらいは教えてくれればある程度の回答は出来るかと思います。

どらどら 2010/04/26 21:11 下手な書き込みですみません…
リファラーを書き換えたいのではなく、無指定でも@NORMALを指定してもエラーを吐くところがあったので何か解決方法があるのかな?と思って聞いてみました。

当方の環境
XP SP3 Firefox3.6.3
userChrome.js0.8でAliceさんのSub-Script/Overlay Loader v3.0.26modを使って動かしてます。

まず何も指定しない状態で下記にアクセスするとエラーが出てマップが表示されなかったので
【楽天ポイント加盟店サービス】http://p-store.rakuten.co.jp/area/list/pref_cd/27

>無指定 開こうとしているサーバが別サーバだとそのサーバのルートに、ドキュメントと同じサーバーから開かれたようにする

と説明本文にあるからここは無指定だと駄目なのかな〜?と思い、rakuten.co.jpを@NORMALで指定しても同じくエラーが出てマップが表示されないんです。
楽天市場内のトラベルなどでもマップが表示されるページで同じくエラーが出ます。

fakeReferer(mod)では無指定でもエラーは吐きませんでした。

zuzu_sionzuzu_sion 2010/04/28 16:02 >下手な書き込みですみません…
いえいえ
>リファラーを書き換えたいのではなく、無指定でも @NORMALを指定してもエラーを吐くところがあったので何か解決方法があるのかな?と思って聞いてみました。
>と説明本文にあるからここは無指定だと駄目なのかな〜?と思い、rakuten.co.jpを @NORMALで指定しても同じくエラーが出てマップが表示されないんです。
>楽天市場内のトラベルなどでもマップが表示されるページで同じくエラーが出ます。
調べてみたところ、マップ読み込み部分だけrakuten.co.jpではなくapi.e-map.ne.jpになっているので、
'api.e-map.ne.jp': '@NORMAL',
という風に指定すれば正常に読み込めるはずです。
あと先ほどこの件を調べて改良した新バージョンも入れておいた方がいいかも。
僕はそちらで正常に読み込めることを確認したので。
>fakeReferer(mod)では無指定でもエラーは吐きませんでした。
fakeReferer(mod)をそのままコピペで使っているのなら「別サーバーに飛ぶときリファラをそのサーバのルートに書き換え」の機能が無効化されているからだと思われます。
おそらく上記機能を有効にした場合は同じエラーが発生するかと。

どらどら 2010/04/29 00:21 あちゃ…
そうだったんですね
色々とすみません、さっそく新Versionを頂いていきます。

ありがとう御座いました。

M3M3 2010/05/02 14:31 refererChanger大変使いやすく重宝しております。
使っていて少々疑問に思ったことがありましたので書き込みをさせていただきました。

@ORIGINALは「開こうとしているサイトのURLを送信する」とありますが

'taruo.net' : '@ORIGINAL',

とした場合にhttp://taruo.net/等から診断君を開こうとした場合に
HTTP_REFERER http://taruo.net/
となるのですが、@ORIGINALが示す「開こうとしているサイトのURL」でしたら実際は
HTTP_REFERER http://taruo.net/e/?
この上の結果のようになるんじゃないかな? と疑問に思い、書き込みさせていただきました。
自分の読解力不足で変な解釈をしている様でしたら流していただければと思います。

最後になりましたが当方の環境はWin XP SP3 Firefox3.6.3
userChrome.js 0.8でaliceさんの所のSub-Script/Overlay Loader v3.0.29mod
refererChanger.uc.jsはver1.0.3の方を使わせていただいています。

zuzu_sionzuzu_sion 2010/05/06 18:29 ふむふむ・・調べてみましたがおそらくReferrerChangerの仕様が原因かと。
というかその通りです。@ORIGINALの説明が間違っていました。
現在ReferrerChangerは全てのアクセスに対して精査しリファラー書き換えルールに則りリファラーを書き換えています。
そして今更気づきましたが、これまた困ったことに@ORIGINALが示す「開こうとしているサイトのURL」というのは実際の所は現在「アクセスしているページのURL」になってしまっているようです。
現在、これらの仕様あ、いやバグですね。バグを修正する方法or回避する方法を考えているところですのでもう少しお待ち下さい。
あと画像形式だけリファラーを書き換えるといった指定を出来るようになどの色々な機能を模索中です。

M3M3 2010/05/09 14:30 なるほど、そういうことだったのですね。
これですっきりしました!
忙しい中ご返答ありがとうございました。

今後ともrefererChangerには期待しております。

通りすがり通りすがり 2010/08/10 16:33 いつも有難くrefererChangerを使わせてもらっています。
sourceforge.netに仕様変更があったらしく、リファラ偽装をしていると
ダウンロードリンクをクリックしてもループしてしまうようになったのですが
上記サイトを@NORMALに設定すると大丈夫でした。一応報告までに。

暑い日が続きますが、御体に気を付けて下さい。

7474 2010/11/29 14:05 先日からどういうわけか2009/12/25日版はDLできるのにver1.0.3がDLできません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証