Affiliate killer

No more Affiliate Link! Plz Original URL!

  1. // ==UserScript==
  2. // @id Affiliate_killer
  3. // @name Affiliate killer
  4. // @version 4.55
  5. // @namespace https://gf.qytechs.cn/scripts/456
  6. // @homepageURL https://gf.qytechs.cn/scripts/456
  7. // @license https://creativecommons.org/licenses/by-nc/2.1/jp/
  8. // @author noi
  9. // @description No more Affiliate Link! Plz Original URL!
  10. // @run-at document-end
  11. // @include http*
  12. // @exclude *images-amazon.com/*
  13. // @exclude *google.*tbm=isch*
  14. // @exclude *google.*blank.html
  15. // @grant GM_log
  16. // @grant GM_setValue
  17. // @grant GM_getValue
  18. // @grant GM_deleteValue
  19. // @grant GM_registerMenuCommand
  20. // @grant GM_xmlhttpRequest
  21. // ==/UserScript==
  22.  
  23.  
  24. ///////////////////////////////////////////////////////
  25. // The original script is below: //
  26. // アフィリエイト殺し for greasemonkey //
  27. // http://d.hatena.ne.jp/deraw/20060902/1157143806 //
  28. // and A Killer Mod //
  29. // http://www7b.biglobe.ne.jp/~yamj/ //
  30. // and ecl.js drk //
  31. // http://www.drk7.jp/ //
  32. // http://www.drk7.jp/pub/js/ecl_test/ecl_new.js //
  33. // http://nurucom-archives.hp.infoseek.co.jp/digital //
  34. ///////////////////////////////////////////////////////
  35.  
  36.  
  37. //No more affiliate cookie!
  38. /////////////////////////////////////////////////////
  39. //Access for expand URL //
  40. //http://www.getlinkinfo.com/ //
  41. //and Next do it when can't get URL //
  42. //http://araishi.com/redirect-check/ //
  43. //and Next //
  44. //http://x-1.jp/ //
  45. /////////////////////////////////////////////////////
  46.  
  47.  
  48. /* Not support Scriptish */
  49.  
  50.  
  51. /************************************************************************
  52. 前書き
  53.  
  54. 自分用のスクリプトですが、知人から欲しいという要望があったので公開。
  55. 勉強がてら追加してったので正直美しくないです。
  56. このスクリプトの利用は各自の自己責任でお願いします。
  57. 当スクリプトを利用したことにより被ったあらゆる損害に対して免責とさせていただきます。
  58.  
  59. I made this script for myself.
  60. and uploaded it, since my acquaintance wanted it.
  61. Add to Original Script too much ,the source code is dirty.
  62.  
  63. Please use this script on each one of responsibility.
  64.  
  65. IN NO EVENT SHALL EITHER PARTY BE LIABLE TO THE OTHER PARTY.
  66.  
  67.  
  68. アフィの修正取りこぼしの報告も受け付けています。
  69. →体調が良ければ直します。
  70. まだ実験段階のためブラウザごとフリーズする場合もあるかもしれないので報告ください。
  71. →体調がry
  72.  
  73. このソースは基本的に改変、再配布自由です。
  74. 「ecl.js」の引用部分は作者のdrkさんに問い合わせてください。
  75. また、配布する場合は引用元として当方の名前を入れてくれるだけでOKです。
  76. とはいえ悪質だったり詐欺などの用途での改変は当然NGです。
  77.  
  78. 注意点はファイル保存の際、文字エンコードはUTF-8で保存してください。(文字化け回避)
  79.  
  80. *************************************************************************
  81. [機能option]
  82. 1.keyboard shortcut keys
  83. CTRL + SHIFT : toggle "original-link" visible.
  84. CTRL + ALT : toggle "redirect-histroy" visible.
  85. CTRL + ALT + SHIFT :toggle "original-link" and "redirect-histroy" visible.
  86.  
  87.  
  88. [URL list]
  89. "added":script added URL.no many redirect.(修正したURL。リダイレクトが多くない)
  90. "beforeadded":script added URL.Many redirect.(修正したURL。沢山転送された最後のURL)
  91. "killed":affiliate URL or tiny URL.(修正する前のアフィリエイトリンクや短縮URL)
  92. "before":Expanded URL,before redirect finalURL("beforeadded").("beforeadded"の直前のURL)
  93.  
  94. If redirect finalURL("beforeadded") is login page,sometimes can't access address for buy the item.
  95. Plz Use "before".
  96. (もしリダイレクト最後のURL"beforeadded"がログイン画面の場合、商品ページに遷移できないので
  97. リダイレクトの最後から1個手前のURLである"before"を表示してアクセスしてください)
  98. *************************************************************************
  99.  
  100. [対応状況]
  101.  
  102. [cookie]
  103. amazon
  104. apple
  105. Dlsite
  106. DMM
  107. rakuten
  108. など
  109.  
  110.  
  111. [リダイレクト系]
  112. amazon
  113. anonym.to
  114. bestgate
  115. bloglovin(mouseoverでリンク修正)
  116. click.dtiserv2.com
  117. 価格.com
  118. facebook
  119. flog
  120. など
  121.  
  122.  
  123. [アフィリエイト専門系]
  124. a5.tuhan
  125. a8.net
  126. accesstrade
  127. a-c-engine
  128. adf.ly(一部)
  129. adlantis
  130. af-mark
  131. ameba
  132. fc2
  133. googleAd
  134. istockphoto
  135. Janet
  136. jsky
  137. Kauli
  138. linkshare
  139. linksynergy(linkshare?)
  140. liveads.jp
  141. mediaplex.com
  142. moshimo.com
  143. pixel.everesttech.net
  144. shinobi.jp
  145. track.affiliate-b.com
  146. trafficgate.net
  147. tr.webantenna.info(trafficgate?)
  148. valuecommerce
  149. makeshop
  150. など
  151.  
  152. [RSS]
  153. rss.rssad.jp
  154. rdsig
  155. など
  156.  
  157. [ショップ系]
  158. 7netshopping
  159. amazon
  160. aliexpress
  161. AppleStore(aos.prf.hn)
  162. itunes
  163. ark-pc
  164. askul
  165. askulcorporation
  166. bookwalker
  167. carview(trafficgate)
  168. dena
  169. docomo
  170. dominos
  171. ebay
  172. gearbest
  173. lenovo
  174. pixiv
  175. rakuten
  176. yahoo
  177. tracking.yourguide
  178. など
  179.  
  180. [同人系]
  181. アキバイン
  182. d-drop
  183. dd-Style
  184. デジケット
  185. DLげっちゅ
  186. Dlsite
  187. DMM
  188. ぎゅっと(gyutto.com、gyut.to)
  189. メロンブックス
  190. サーパラ(surpara.com
  191. など
  192.  
  193. [スマホ]
  194. app-adforce
  195. i-mobile.co.jp
  196. など
  197.  
  198. [海外]
  199. affiliate future
  200. Affiliate jlist
  201. Affiliate Window
  202. buy.com
  203. cdJapan
  204. clixgalore
  205. Commission Junction
  206. DGM PRO
  207. esellerate
  208. MoreNiche
  209. Online Media Group
  210. paid on results
  211. secure.strawberrynet
  212. shareasale
  213. Tradedoubler
  214. webgains
  215. Zanox
  216. など
  217.  
  218. [トラッカー系]
  219. google ユニバーサルアナリティクス(utm_source、utm_campaign、utm_medium、utm_content)
  220. google search
  221. google+(暫定)
  222. など
  223.  
  224. [クッション]
  225. 2ch(ime.nu、ime.st、jump.2ch.net、pinktower.com、2ch.io、l.moapi.net、t.2nn.jp、machi.to、fast.io)
  226. nun.nu
  227. l.moapi.net
  228. READ2CH
  229. Rちゃんねる
  230. yeng.web.fc2.com
  231. など
  232.  
  233. [アフィリエイト系トラッカー]
  234. adclr
  235. Linksynergy
  236. mgstage.com
  237. netmng
  238. trafficgate
  239. textad
  240. xaid
  241. など
  242.  
  243. [短縮URL]
  244. aliexpress
  245. bit.ly
  246. bitly.com
  247. j.mp
  248. goo.gl
  249. is.gd
  250. v.gd
  251. urx.nu
  252. urx2.nu
  253. inf.to
  254. tiny.cc
  255. tinyurl.com
  256. tinyly.net
  257. num.to
  258. mcaf.ee
  259. mzl.la
  260. wk.tk
  261. p.tl
  262. y.ahoo.it
  263. ow.ly
  264. u.to
  265. Tinyarro.ws
  266. snipurl.com
  267. go.ascii.jp
  268. ux.nu
  269. x5.to
  270. c23.biz
  271. 9oo.jp
  272. miffy.me
  273. hec.su
  274. t.co
  275. fb.me
  276. amzn.to
  277. youtu.be
  278. y2u.be
  279. r10.to (a.r10.to)
  280. s.nikkei.com
  281. t.asahi.com
  282. nico.ms
  283. sdrv.ms
  284. 1drv.ms
  285. gigaz.in
  286. g.co
  287. tr.im
  288. cli.gs
  289. short.ie
  290. kl.am
  291. idek.net
  292. budurl.com
  293. hex.io
  294. eweri.com
  295. twurl.cc
  296. tweetburner.com
  297. urlgator.com
  298. tweak.tk
  299. moourl.com
  300. a.gd
  301. tighturl.com
  302. 3.ly
  303. x.vu
  304. ul.lc
  305. nazr.in
  306. 3step.me
  307. xtw.me
  308. my-tiny.com
  309. mijikaku.jp
  310. snurl.com
  311. ift.tt
  312. dlvr.it
  313. buff.ly
  314. msm.to
  315. su.ms-x.biz
  316. fc2.to
  317. ustre.am
  318. k4wu.com
  319. htn.to
  320. adop.jp
  321. hrp.asia
  322. 1stepup.com
  323. amba.to
  324. wp.me
  325. www.shortenurl.tk
  326. eng.mg
  327. w.mul.asia
  328. zpr.io
  329. ask.fm
  330. jump.cx
  331. www.fiverr.com
  332. 5.tvasahi.jp
  333. fav.me
  334. gdzl.la
  335. db.tt
  336. spr.ly
  337. appsto.re
  338. u111u.info
  339. shrsl.com
  340. など
  341.  
  342.  
  343. *************************************************************************
  344. 前提条件
  345.  
  346. ○必須
  347. ・クッキー(cookie)の削除、および定期的な削除
  348.  
  349. ・ポイントサイトなど当スクリプトを動作させたくないサイトを設定する
  350. 例)アドオンのGreaseMonkeyでTポイントサイトの除外を設定する場合
  351. スクリプト管理画面からAffiliate_Killerの設定をクリックし
  352. excludeに除外したいサイトのURLを指定する(正規表現は使えない)
  353. http://tmall.tsite.jp/*
  354. https://tmall.tsite.jp/*
  355. http://tsite.jp/*
  356. https://tsite.jp/*
  357. など(最後のアスタリスク(*)を忘れずに)
  358.  
  359.  
  360. ○以下は必須ではないけどやった方がいい
  361.  
  362.  
  363. 1、基本的にadblock系アドオンやDISCONNECTなどと併用推奨(定番)
  364. 大体のアフィリエイトはこれで抹殺されます。
  365. 日本語のフィルターを適当に購読しましょう。
  366. 誤爆(関係ないものまで非表示)もあるので注意
  367.  
  368. 2、PeerBlockなどの通信フィルタリングソフト(初心者向き)
  369. ipを遮断するため表示されなくなりスッキリ(ただしたまに関係ないのも遮断するので注意)
  370. 忍者adMaxのような広告が表示されるだけで報酬が発生する仕組みがあるので導入推奨
  371.  
  372. 導入方法など:脱Google@wikiのPeerBlock解説ページ
  373. http://www4.atwiki.jp/nogoogle/pages/19.html
  374.  
  375. 3、cookie管理アドオンの導入(中級者~上級者向け)
  376. デフォルトをdenied(拒否)にしておいて、ログインが必要なサイトなどで
  377. 1stパーティ(そのサイトが発行するcookie)のみ許可するのが良いですが、サイトによっては
  378. 完全に許可(他のサイトで発行されたcookieも読み込み許可)しなくてはいけなかったりするので注意。
  379.  
  380. 4、可能ならRedirectを制御できるアドオンなどと併用推奨(やや上級者向け)
  381. リダイレクトをブロックして転送先URLを表示してくれるのでアフィリエイトリンクを修正します。
  382. 何故このアドオンかというと他のリダイレクトブロック系アドオンではスルーしてしまうような
  383. metaタグやhttpリクエストなどのリダイレクトもブロック可能だからです。
  384. 要設定。(↓の方で簡易解説あります)
  385.  
  386. ※文字化け問題が発生するページあり(403エラーなど)
  387. これは海外のアドオンのため日本語のエンコード・デコードに失敗しているせい。
  388. 問題となっているURLへのリダイレクトを許可すると正しいURLへ飛びますが、
  389. アフィリエイトリンクへの許可にならないよう考えて許可しましょう
  390.  
  391. 5、可能ならReferrer Control系アドオンと併用推奨(やや上級者向け)
  392. ツイッターやブログURLなどを登録し、リファラなどを元に報酬を払うアフィリエイトがある模様
  393. ※こちらも文字化け問題が発生する可能性あり
  394.  
  395. ※各アドオンはしっかり設定しないと画像が表示されない、ファイルがダウンロードできない、
  396. トップページに飛ばされてしまうなどの問題が発生します。
  397.  
  398.  
  399.  
  400.  
  401. ○こだわりたい方用
  402. 下記サイトで色々とどうぞ
  403.  
  404. 脱Google@wiki
  405. http://www4.atwiki.jp/nogoogle/
  406.  
  407.  
  408. *************************************************************************
  409.  
  410. 以下のURLをリファラを変更してしまうと正常動作しないサイトの例
  411.  
  412. ・googleアカウント(確かyoutubeかアンドロイドマーケット)
  413. accounts.google.com
  414.  
  415. ・ニコニコ動画系
  416. com.nicovideo.jp
  417. nicoblomaga.jp
  418.  
  419. ・pixiv
  420. www.pixiv.net
  421.  
  422. ・vectorのフリーソフトダウンロードなど
  423. ftp.vector.co.jp
  424. my.vector.co.jp
  425.  
  426. ・ソフマップ
  427. point.sofmap.com
  428.  
  429. ・ソフトバンク系(多分プロバイダや電話料金系)
  430. web-meisai.softbanktelecom.co.jp
  431. webmeisai.jp
  432.  
  433. ・ウェブ魚拓
  434. megalodon.jp
  435.  
  436. ・ちず丸
  437. map.chizumaru.com
  438.  
  439. ・solvemediaキャプチャの画像
  440. api.solvemedia.com
  441.  
  442. ※上記以外でも表示されない・ダウンロードされない・変なエラーが出るなど
  443. 問題が発生するサイトはちらほらとあります。
  444.  
  445. *************************************************************************/
  446.  
  447. /**更新履歴**************************************************************
  448.  
  449. 02/12/2019 - v4.55 fix:微修正
  450. 11/25/2018 - v4.54 fix:dmmのhttps
  451. 11/24/2018 - v4.53 fix:記述ミス修正
  452. 10/24/2018 - v4.52 fix:実行タイミングを明記。少しだけ処理軽減など
  453. 09/27/2018 - v4.51 fix:Tampermonkeyにてheadが取得できなかったので修正
  454. 08/11/2018 - v4.50 fix:amazonのバグの修正
  455. 07/07/2018 - v4.49 fix:いつの間にか機能しなくなったショートカット機能修正
  456. 09/08/2017 - v4.48 fix:いくつかのバグ修正
  457. 01/31/2017 - v4.47 fix:base64
  458. 01/27/2017 - v4.46 add:base64仮対応
  459. 01/19/2017 - v4.45 add:転送履歴を可能な限り表示する機能を暫定復活、リダイレクトサイトwww.sexyvideos.co追加
  460. 01/18/2017 - v4.44 add:outgoing.prod.mozaws.net
  461. 01/17/2017 - v4.43 fix:v4.42
  462. 01/14/2017 - v4.42 fix:remove ref
  463. 01/12/2017 - v4.41 fix:v4.40
  464. 01/10/2017 - v4.40 add:affiliate url
  465. 10/26/2016 - v4.39 fix:URL展開の変更
  466. 10/10/2016 - v4.38 fix:クッション除去修正・追加
  467. 10/08/2016 - v4.37 add:掲示板で指摘があったものの中で可能なだけ追加
  468. 08/07/2016 - v4.36 fix:フラグ管理ミスの修正および一部エラー回避
  469. 07/23/2016 - v4.35 add:aliexpress
  470. 07/20/2016 - v4.34 add:mgstage.com
  471. 07/14/2016 - v4.33 fix:dmm除去ミス修正
  472. 07/13/2016 - v4.32 add:リダイレクトclick.dtiserv2.com
  473. 07/12/2016 - v4.31 fix:dmm(www.dmm.co.jp/digital/videoa/)他
  474. 07/12/2016 - v4.30 add:dmm(dlsoft.dmm.co.jpなど)
  475. 01/28/2016 - v4.29 add:アフリエイトサイト追加、URLエンコード変更
  476. 01/28/2016 - v4.28 add:アフリエイトサイト追加
  477. 01/28/2016 - v4.28 fix:フラグ管理修正
  478. 01/24/2016 - v4.27 fix:フラグ管理修正、試験的に入れていたトラッカー除去機能の対象をgoogle検索のみに変更
  479. 01/21/2016 - v4.26 fix:getlinkinfoの展開修正、他多数
  480. 11/05/2015 - v4.25 del:coneco閉鎖につき削除
  481. 11/05/2015 - v4.25 add:amazonの別パターン追加
  482. 06/16/2015 - v4.24 fix:googleのcookie
  483. 06/16/2015 - v4.23 fix:areaタグのバグ修正、amazonのcookie他
  484. 04/30/2015 - v4.22 fix:展開履歴の削除インターバルを正確に変更
  485. 04/14/2015 - v4.21 fix:起動の修正
  486. 04/12/2015 - v4.20 fix:短縮URL展開の修正
  487. 04/08/2015 - v4.19 fix:短縮URL展開の一部修正
  488. 04/06/2015 - v4.18 fix:observer部分の修正
  489. 04/06/2015 - v4.18 del:aguse削除、展開URLのセキュアチェック部分削除
  490. 03/27/2015 - v4.17 fix:2chクッションの修正ミス
  491. 03/27/2015 - v4.16 fix:v4.15で一部取りこぼしが発生していたので修正
  492. 03/18/2015 - v4.15 fix:高速化
  493. 02/18/2015 - v4.14 add:2ch.io
  494. 02/18/2015 - v4.14 fix:一部のamazonのURLに対応しきれていなかったバグの修正
  495. 01/26/2015 - v4.13 add:展開URLを記憶するように変更(記憶データ肥大化防止のため3日ごとに全クリア)
  496. 12/31/2014 - v4.13 add:adult.bloglovin
  497. 11/10/2014 - v4.12 fix:amazonの削除しすぎていたcookieの除外
  498. 11/02/2014 - v4.11 add:google+ 暫定(パラメータ全消去)、短縮gdzl.laとfav.me追加
  499. 11/02/2014 - v4.11 fix:短縮URLのバグ
  500. 09/28/2014 - v4.10 fix:サイト側のキーボードショートカット機能を消さないように変更
  501. 09/28/2014 - v4.10 add:短縮URL(jump.cx ow.ly)
  502. 09/28/2014 - v4.09 fix:https://addons.mozilla.org/ でレビューが表示できない不具合修正
  503. 09/21/2014 - v4.08 fix:変更監視部分の不具合修正
  504. 09/20/2014 - v4.07 not support Scriptish
  505. 09/03/2014 - v4.00 fix:処理の無駄を減らして高速化
  506. 08/30/2014 - v3.28 add:セキュリティ機能の確認ダイアログ追加(http://app.webinspector.com) ←初期値は、危険なURL警告:ON、未スキャンURL:OFF
  507. 08/30/2014 - v3.28 fix:実験的に追加してたセキュリティチェック(www.aguse.jp)にON・OFF機能を付け忘れてたので修正(初期値off)
  508. 08/30/2014 - v3.27 fix:継ぎ足し要素の多すぎるサイトでフリーズする現象の修正
  509. 06/12/2014 - v3.0 add:すべての要素をチェックするように変更。他色々
  510. 06/07/2014 - v2.11 add:googleトラッカー除去
  511. 03/23/2014 - v2.0 add:AmazonのスマートフォンURLに対応
  512. 03/22/2014 - v1.9 fix:GoogleImage検索は除外。onclick除去を修正したリンクのみ適応するように変更。
  513. 03/14/2014 - v1.0 release
  514.  
  515. *************************************************************************/
  516.  
  517. /****************************************************
  518. 備忘録
  519.  
  520. // @exclude *google.*tbm=isch*
  521. // @exclude *google.*blank.html
  522. ・GoogleImage検索でうまく動かないので@excludeに追加。*tbm=isch*はGoogleImage検索用。blankはiframe内
  523. クリックで起動するスクリプト(jsaction)で、iframe内に要素を入れ込んでいる様子
  524. F5リロードするとiframe内をコピーした要素の方(iframeじゃなくなる)に切り替わるなど色々挙動が複雑すぎて把握できない
  525. →リンク修正しちゃうとgoogleのスクリプトによる動的切り替えができなくなってリンク先が違うものになって面倒なのでexclude
  526.  
  527. ・デコードエラーはどうやらEUC-JPやShift-JISの文字列が来ると発生する模様?
  528. →ecl.js(Escape Codec Library)をお借りすることに
  529. →requireから埋め込みに変更(GreasyForkでrequire使うと色々と面倒なため)
  530.  
  531. ・amazonで商品のプレビュー画像でz-indexが999なので同じく999指定してある[killer]が表示される
  532. →スクリプトのz-indexは1に変更
  533.  
  534. ・amazonのセッションについて
  535. amazonはsessionでログインとカートを管理してるようで、
  536. セッションIDを指定するcookieのsession-id(gest?)かubid-acbjp(login?)どちらか1つでも削除するとログアウト
  537. sessionで片っ端から他サイトで見たamazon商品の閲覧履歴をため込む
  538. ログインと同時に色々なセッションをマージしてると思われる
  539. ubid-acbjpはログインセッション(各ユーザー固定)
  540. →問題なのはアフィリンクやastoreやAWS経由で直接カートに突っ込むと
  541. 現在のsessionにアフィsessionをマージしているように見える。アフィ情報の入ったセッションになってる可能性あり
  542. さらにログイン中だとこのセッションがamazonのサーバ側で一定期間保存されてしまう?
  543. sessionIDは999-9999999-9999999の数字3桁7桁7桁
  544. ネットの情報ではこのアフィリエイトの効果は24時間有効というけどcookieをみると1週間有効
  545.  
  546. ・海外製アドオンのためかNoRedirectがブロックすると日本語が文字化けを起こす模様(楽天などで確認)
  547. →アフィリエイトリンクじゃない場合はリダイレクトを許可すると問題は解消する
  548.  
  549. ・ブログパーツの埋め込み型スクリプトの対応
  550.  
  551. ・@updateURLを削除(greasyforkで勝手に消されるのと、インストールしたときのURLをアドオンが保持しているようなので更新可能)
  552.  
  553. ・javascriptで取得できるdocument.cookieは制約が多いらしく、ファーストクッキーのみだったり
  554. httponly属性だったら取得できなかったりする。addonなら全部取得できるらしい
  555.  
  556. ・formのactionなどでアフィリエイトID仕込んでくるサイトもあるの把握しているけど普段使うサイトには全然ないので対応保留
  557.  
  558. *************************************************************************/
  559.  
  560.  
  561. //=============プログラム開始===========================================================
  562. (function() {
  563. //GM_deleteValue('expDB');
  564.  
  565. //user config(変更可能)-------------------------------------------------
  566. const usrExpandURL = ''; //短縮URLの追加 (add expandURL)
  567. //example 'domain1|domain2|domain3|' (domain1 is http://domain1/shortID)
  568. //example2 'bit.ly|goo.gl|www.shortenurl.tk|' (don't insert space.don't forget Vertical bar(|).)
  569. const clearInterval = 30; //指定日数より古い展開履歴を削除(clear-interval:days)
  570. //user config end-------------------------------------------------
  571.  
  572.  
  573. //共通変数&定数-----------------------------------------------------------------
  574.  
  575. const getinfoURL = "http://www.getlinkinfo.com/info?link="; //暫定メイン
  576. const araishiURL = "http://araishi.com/redirect-check/?submit=&url="; //補助
  577. const x1URL = "http://x-1.jp/c.php?u="; //補助(展開失敗して延々とリダイレクトするサイト側の不備あるので必ず最後)
  578.  
  579. //[killer]共通スタイル
  580. const zIndex = 1; //z-index
  581. const strStyle = 'max-height:20px;max-width:80px;height:auto;width:auto;background:rgba(255,0,0,0.2);margin:0!important;padding:0!important;z-index:' + zIndex + ';text-indent:0;';
  582.  
  583. //短縮URL展開
  584. const regTiny = new RegExp('^https?:\/\/(1drv.ms|1stepup.com|3.ly|3step.me|5.tvasahi.jp|9ch.net|9oo.jp|'
  585. + 'ad.afad(.jpadop)?.jp|a.gd|amba.to|amzn.to|(a.)?r10.to|appsto.re|ask.fm\/a|'
  586. + 'bit.ly|bitly.com|budurl.com|buff.ly|click.j-a-net.jp|cli.gs|c23.biz|db.tt|dlvr.it|eng.mg|eweri.com|'
  587. + 'fav.me|fb.me|fc2.to|g.co|gdzl.la|gigaz.in|go.ascii.jp|goo.gl|'
  588. + 'hec.su|hex.io|hrp.asia|htn.to|idek.net|ift.tt|is.gd|inf.to|j.mp|jump.cx|k4wu.com|kl.am|'
  589. + 'mcaf.ee|miffy.me|mijikaku.jp|moourl.com|msm.to|my-tiny.com|mzl.la|nazr.in|nico.ms|num.to|'
  590. + 'ow.ly|pixiv.me|p.tl|shrsl.com|snipurl.com|sdrv.ms|short.ie|s.nikkei.com|spr.ly|su.ms-x.biz|'
  591. + 't.asahi.com|t.co|tighturl.com|tiny.cc|tinyurl.com|tinyly.net|tr.im|tweak.tk|tweetburner.com|twurl.cc|'
  592. + 'u111u.info|ul.lc|urx.nu|urx2.nu|urlgator.com|ustre.am|u.to|ux.nu|v.gd|wk.tk|w.mul.asia|wp.me|www.fiverr.com|www.shortenurl.tk|'
  593. + 'x5.to|xn--.{3}.ws|xtw.me|x.vu|y.ahoo.it|zpr.io|'
  594. //RSS
  595. + 'rss.rssad.jp|'
  596. //user settings
  597. + usrExpandURL
  598. + 'snurl.com)\/.');
  599.  
  600. //強制追加フラグ
  601. const absAddFlg = true;
  602.  
  603. //表示設定
  604. var hideOriginLinkFlg = userCfg("hideOriginLink");
  605.  
  606. var expDB = {}; //URL展開履歴
  607. var nameDB = {}; //削除用クッキー情報DB
  608. var cookieDB = {}; //取得したクッキーDB
  609. clearDB(); //expDB取得 & URL展開履歴削除
  610.  
  611. //※注意 同じクッキー名で別ドメイン・別ホストの場合最初の要素(区別用の適当な名前)を別にする
  612. //sample makeDB("区別用の適当な名前","cookie名","domain名","host名","path"); ←domain or host must be ""
  613.  
  614. //amazonのsession-idとubid-acbjpはログイン情報っぽいので削除不可
  615. //amazonのat-acbjpとsess-at-acbjpは購入時必要なので削除不可
  616. makeDB("amazon","UserPref",".amazon.co.jp","","/"); //アフィ確定
  617. makeDB("apple","a",".apple.com","","/"); //アフィ関連
  618. makeDB("dlsite","DL_PTAFID",".dlsite.com","","/"); //アフィ確定
  619. makeDB("dmm","uid","","ad.dmm.com","/"); //アフィ関連
  620. makeDB("dmm","_clicks","","ad.dmm.com","/"); //アフィ関連
  621. makeDB("dmm","Aff_A",".affiliate.dmm.com","","/"); //アフィ関連
  622. makeDB("dmm","deai_xid",".dmm.co.jp","","/"); //アフィ関連
  623. makeDB("dmm","CAKEPHP","","ip.affiliate.dmm.com","/"); //アフィ?
  624. makeDB("dmm","Aff_A",".affiliate.dmm.com","","/"); //アフィ?
  625. makeDB("dmm","Aff_B",".affiliate.dmm.com","","/"); //アフィ?
  626. makeDB("rakuten","tg_af_histid",".pt.afl.rakuten.co.jp","","/"); //アフィ確定
  627. makeDB("rakuten","tg_af_histid",".rakuten.co.jp","","/"); //アフィ確定
  628. makeDB("rakuten","afl-u",".affiliate.rakuten.co.jp","","/"); //アフィ関連
  629.  
  630.  
  631. //httponly属性のせいで取得できない?addonにすればComponents.classesで取得できそう
  632. // makeDB("a8.net","A8_SHARED",".a8.net","","/");
  633. // makeDB("a8.net","A8FLYID_N1","","rpx.a8.net","/");
  634.  
  635.  
  636. var href = ""; //チェック中のURL
  637. var strUrl = ""; //修正したURL
  638. var locUrl = location.href; //現在のURL
  639.  
  640. //処理開始-----------------------------------------------------------------
  641.  
  642. //トラッキング除去(主にgoogle対策)
  643. remTrack(document);
  644.  
  645. //文字エンコード用の関数読み込み
  646. ecl();
  647.  
  648.  
  649.  
  650. //amazonURLリロード
  651. if(location.href.match(/^https?:\/\/(www.)?amazon.*(\?|&)tag=/)){
  652. history.pushState(null, null, setParams(location.href,["tag","adid","AssociateTag","creative","linkCode","linkId","ref-refURL","SubscriptionId"],"del"));
  653. return;
  654. }
  655.  
  656. //メイン処理===============================================================================================
  657. function main(pattern,node){
  658. try{
  659. if(Object.prototype.toString.call(node).slice(8, -1).match(/(Text|Comment)/)) return;
  660.  
  661.  
  662.  
  663. switch(pattern){
  664. case "first":
  665. break;
  666.  
  667. case "mutation_chg":
  668. if(!node)return;
  669. if(node.href)multi(node);
  670. break;
  671.  
  672. case "mutation_attr":
  673. if(node.href) multi(node);
  674. break;
  675.  
  676. case "expand":
  677. multi(node);
  678. return;
  679.  
  680. default: return;
  681. }
  682.  
  683.  
  684.  
  685. //変数宣言--------------------------
  686. var allLinks; //チェックするすべての要素の配列
  687.  
  688.  
  689. allLinks = node.getElementsByTagName("*");
  690.  
  691. }catch(e){
  692. switch( e.name ){
  693. case 'TypeError':
  694. // GM_log("AKiller_INIT-TypeError:" + e);
  695. default:
  696. GM_log("AKiller_INIT:" + e);
  697. }
  698.  
  699. return; //node内にタグ要素が無ければ終了
  700. }
  701.  
  702.  
  703.  
  704.  
  705.  
  706. try{
  707.  
  708. for (var i = 0; i < allLinks.length; i++){
  709.  
  710. var obj = allLinks[i];
  711. var lastFlg = null;
  712. if(obj.hasAttribute("Akill_check") && obj.getAttribute("Akill_check")) lastFlg = obj.getAttribute("Akill_check");
  713. if(pattern == "mutation_attr" && lastFlg && lastFlg.match(/_checked$/) && !lastFlg.match(/Loading$/)){
  714. obj.setAttribute("Akill_check",lastFlg.replace('_checked',''));
  715. }
  716.  
  717. multi(obj);
  718.  
  719. }//main for文ここまで
  720. }catch(e){
  721. // throw(e);
  722. GM_log("AKiller_main:" + e);
  723. }
  724.  
  725. node = allLinks = null;
  726. }//mainここまで
  727.  
  728.  
  729. function multi(obj){
  730.  
  731. //hrefを含まないリンクは除外
  732. if(Object.prototype.toString.call(obj).slice(8, -1).match(/(Text|Comment)/)
  733. || !obj.hasAttribute("href")
  734. || obj.href == undefined
  735. || obj.href == "" || !obj.href.match(/^http/)
  736. || obj.href.match("megalodon.")
  737. || ( obj.hasAttribute("Akill_check") && obj.getAttribute("Akill_check").match(/(killed|before|^Loading|_checked$)/) )
  738. || obj.href == obj.getAttribute('Akill_URL') //linkify系併用時のループ防止
  739. || !obj.tagName
  740. ){
  741. return;
  742. }
  743.  
  744. obj.timer = window.setTimeout(function(){mainCheck(obj);},0.1);
  745. }
  746.  
  747.  
  748. //URLチェック=============================================================================================
  749. function mainCheck(objSet){
  750.  
  751. //if(Object.prototype.toString.call(expDB[href][0]).slice(8, -1).match(/undefined/i))return;
  752. //GM_log("AKiller_mainチェック"+Object.prototype.toString.call(expDB[href][0]).slice(8, -1));
  753.  
  754. try{
  755.  
  756.  
  757. var obj;
  758. if(objSet) obj = objSet;
  759. else return;
  760.  
  761. href = obj.href;
  762.  
  763.  
  764. //一度展開してあった場合DBから取得
  765. if(!obj.hasAttribute('Akill_URL') && expDB[href]
  766. && Object.prototype.toString.call(expDB[href][0]).slice(8, -1).match(/string/i) && expDB[href][0].match(/^http/)){
  767. getExpDB(obj,href);
  768. }
  769.  
  770.  
  771. //短縮URLで展開したURLがあったら
  772. if(obj.hasAttribute("Akill_check") && obj.getAttribute("Akill_check").match(/^Done$/)){
  773.  
  774. var beforeUrl;
  775. strUrl = obj.getAttribute('Akill_URL');
  776.  
  777.  
  778. if(obj.hasAttribute("akill_BeforeURL")){ beforeUrl = obj.getAttribute("akill_BeforeURL");}
  779.  
  780.  
  781. //展開による文字化け対応
  782. if(beforeUrl && beforeUrl.match("&amp;") && !href.match("&amp;")) beforeUrl = beforeUrl.replace(/&amp;/g,"&");
  783.  
  784. setLink(obj);
  785.  
  786. /*
  787. //短縮URLで複数回リダイレクトした場合、ログインチェック画面の前のURLも表示(商品ページに飛べない場合があるため)
  788. if(beforeUrl && beforeUrl != href && beforeUrl != strUrl){
  789. var setHist = function(hisObj){
  790.  
  791. //originURL:obj addedURL:obj.nextSibling
  792. var histArray = beforeUrl.split("|||||");
  793.  
  794. try{
  795.  
  796. for(var bu=0;bu < histArray.length;bu++){
  797. strUrl = histArray[bu];
  798. setLink(hisObj,absAddFlg);
  799.  
  800. //1つ次の要素に変更
  801. hisObj = hisObj.nextSibling;
  802. //originURL:obj.previousSibling beforeURL:obj addedURL:obj.nextSibling
  803. var setHistAttr = function(target,hNum){
  804. target.innerHTML = "[BeforeURL" + hNum + "]"
  805.  
  806. target.setAttribute("Akill_check","before");
  807. target.setAttribute("style","display:none;visibility:hidden;");
  808. }
  809. if(bu>0) setHistAttr(hisObj.previousSibling,bu);
  810. setHistAttr(hisObj,bu + 1);
  811.  
  812. if(Object.prototype.toString.call(hisObj.nextSibling).slice(8, -1).match(/(Text|Comment)/)) break;
  813. }
  814.  
  815.  
  816. }catch(e){
  817.  
  818. GM_log("AKiller_既存展開失敗:" + e);
  819. return;
  820. }
  821. };
  822. setHist(obj);
  823. }
  824. */
  825.  
  826. //短縮URLで複数回リダイレクトした場合、ログインチェック画面の前のURLも表示(商品ページに飛べない場合があるため)
  827. if(beforeUrl && beforeUrl != href && beforeUrl != strUrl && obj.getAttribute("Akill_check").match("Done")){
  828. //originURL:obj addedURL:obj.nextSibling
  829. var histArray = beforeUrl.split("|||||");
  830. var histTxt = "";
  831.  
  832. for(var bu=0;bu < histArray.length;bu++){
  833. var chTxt = "added_before"
  834. if(bu == histArray.length -1) chTxt = "before";
  835. histTxt += '<a href="' + histArray[bu] + '" Akill_check="' + chTxt + '" style="display:none;visibility:hidden;" >[BeforeURL' + bu + ']</a>';
  836. }
  837. obj.setAttribute("Akill_check","killed_checked")
  838. obj.insertAdjacentHTML('afterend', histTxt);
  839. return;
  840. }
  841. //href = obj.href;
  842. }
  843.  
  844. strUrl = decURI(href);
  845.  
  846. var host = href.match(/^https?:\/\/.*?\//)[0];
  847.  
  848.  
  849. }catch(e){
  850.  
  851. GM_log("AKiller_urlCheck_Error:"+e);
  852. }
  853.  
  854.  
  855.  
  856. try{
  857.  
  858.  
  859.  
  860. //事前修正===================================================================================
  861.  
  862. var params,dataDB;
  863.  
  864. //twitter上の短縮
  865. if(location.host.match(/twitter.com/) && !obj.hasAttribute("akill_check")
  866. && obj.hasAttribute("data-expanded-url") && href != obj.getAttribute("data-expanded-url")){
  867. strUrl = obj.getAttribute("data-expanded-url");
  868. setLink(obj);
  869. return;
  870. }
  871.  
  872. //https://t.co/redirect?url=http%3A%2F%2Fjin115.com%2Farchives%2F52075170.html&sig=7bc1a427bf2264e135e799a089981672b65ec594
  873. //t.coリダイレクト
  874. if(href.match(/^https?:\/\/t.co\/redirect\?url=http/)){
  875. strUrl = getRedirectUrl(href,"url");
  876. setLink(obj);
  877. return;
  878. }
  879.  
  880.  
  881. //短縮URL展開
  882. if(href.match(regTiny) && !href.match(/http.*https?:\/\//)){
  883. getUrl("expand","GET",obj);
  884. return;
  885. }
  886.  
  887.  
  888. //youtube展開
  889. if(href.match(/^https?:\/\/(youtu.be|y2u.be)\/./)){
  890. var movieId = href.replace(/^https?:\/\/(youtu.be|y2u.be)\//,"").replace("?","&");
  891. strUrl = "https://www.youtube.com/watch?v=" + movieId;
  892. }
  893.  
  894. //http://tinyarrows.com/preview.php?page=http%3A%2F%2Fwww.nwlab.com%2F&count=290
  895. //短縮URL展開
  896. if(href.match(/tinyarrows.com\/preview.php.*(\?|&)page=http/)){
  897. strUrl = getRedirectUrl(href,"page");
  898.  
  899. //http://adop.jp/wait_redirect.html?url_redirect=http%3A%2F%2Fthejyouhounow.seesaa.net%2Farticle%2F250092136.html%3F1328212322&id=1301&type=0
  900. //短縮adop.jp
  901. }else if(href.match(/adop.jp\/wait_redirect.*(\?|&)url_redirect=/)){
  902. strUrl = getRedirectUrl(href,"url_redirect");
  903.  
  904.  
  905. //短縮linkis
  906. }else if(host.match(/https?:\/\/(ln.is|linkis.com)\//)){
  907.  
  908. if(host.match(/\/ln.is\//)){
  909. strUrl = href.replace(/\/ln.is\//,"/linkis.com/");
  910. obj.setAttribute('Akill_URL',strUrl);
  911. }
  912.  
  913. getUrl("linkis","GET",obj);
  914. return;
  915. }
  916.  
  917.  
  918. //m.google.com
  919. if(host.match(/https?:\/\/m.google./)){
  920. strUrl = href.replace(/\?.*/,"");
  921. setLink(obj);
  922. return;
  923. }
  924.  
  925. //base64暫定(aHR0c = http)
  926. if(href.match(/(\/|=)(aHR0c[a-zA-z0-9]+={0,2})($|\/|\?|&|-?-?;?)/)
  927. && !href.match(/cm_cr_dp_(abuse_)?voteyn/)) //amazon評価&違反報告は除外
  928. {
  929.  
  930. var decTxt = "";
  931. try{
  932. decTxt = window.atob(RegExp.$2);
  933. }catch(e){
  934. }
  935. if(decTxt.match(/^https?:\/\/./)){
  936. strUrl = decTxt;
  937. setLink(obj);
  938. return;
  939. }
  940. }
  941.  
  942.  
  943. //bloglovin用
  944. if(href.match(/^https?:\/\/(www|adult).bloglovin.com.*(\/blogs?\/|blog=)/) && obj.tagName.match(/^(a|A)$/)){
  945.  
  946. var tmp ="",blogID ="",postID ="";
  947.  
  948. //https://www.bloglovin.com/blog/ブログID
  949. //http://www.bloglovin.com/viewer?blog=ブログID
  950. //パラメータのurlに修正---------------------------------
  951. if( href.match(/^https?:\/\/(www|adult).bloglovin.com.*\/blogs?\/(post|[0-9]|.*-[0-9])/)){
  952. tmp = href.replace(/.*\/blogs?\//,"");
  953.  
  954. blogID = tmp.replace(/\/.*$/,"").replace(/\/.*$/,"").replace(/.*-/,"");
  955.  
  956. //https://www.bloglovin.com/blogs/-ブログID/2015-02-01-7zdownload-ポストID
  957. if(href.match(/\/blogs\//)) postID = "&post=" + href.replace(/.*-/,"");
  958.  
  959. //https://www.bloglovin.com/blog/post/ブログID/ポストID
  960. //http://www.bloglovin.com/viewer?blog=ブログID&post=ポストID
  961. //ポスト指定もあった場合
  962. if(blogID == "post"){
  963. blogID = tmp.replace(/post\//,"").replace(/\/.*$/,"");
  964. postID = "&post=" + tmp.replace("post/" + blogID + "/","").replace(/\/.*$/,"");
  965. }
  966.  
  967. obj.setAttribute('Akill_URL',"http://www.bloglovin.com/viewer?blog="+ blogID + postID);
  968. }
  969.  
  970. getUrl("bloglovin","GET",obj);
  971. return;
  972. }
  973.  
  974.  
  975. //http://itrack2.valuecommerce.ne.jp/cgi-bin/2507165/vc_entry.pl?ITRACK_INFO=088226016302392627140602095214&COOKIE_PATH=/cgi-bin/2507165/&COOKIE_DOMAIN=.valuecommerce.ne.jp&VIEW_URL=http%3A%2F%2Fwww.takashimaya.co.jp%2Fshopping%2Ffood%2F0400000115%2F&REFERRER=aHR0cDovL2NrLmpwLmFwLnZhbHVlY29tbWVyY2UuY29tLw&COOKIE_EXPIRES=Fri,%2001%20Aug%202014%2009:52:14%20GMT&va=2392627&vs=3091344&vp=882260163
  976. //http://www.daimaru-matsuzakaya.jp/vcentry/?ITRACK_INFO=088226017702266773140602095722&COOKIE_PATH=/&COOKIE_DOMAIN=www.daimaru-matsuzakaya.jp&VIEW_URL=http%3A%2F%2Fwww.daimaru-matsuzakaya.jp%2F&REFERRER=aHR0cDovL2FkLmpwLmFwLnZhbHVlY29tbWVyY2UuY29tLw&COOKIE_EXPIRES=Fri,%2001%20Aug%202014%2009:57:22%20GMT&vs=3091344&vp=882260177&va=2266773
  977. //valuecommerce========================================
  978. //domainが多岐にわたるので事前に修正
  979. if(href.match(/(\?|&)VIEW_URL=http/)){
  980. strUrl = getRedirectUrl(href,"VIEW_URL");
  981. }
  982.  
  983. //http://anonym.to/?
  984. //http://www.anonym.to/?
  985. //anonym.to==========================================
  986. if(href.match(/^https?:\/\/(www.)?anonym.to\/\?/)){
  987. strUrl = href.replace(/^https?:\/\/(www.)?anonym.to\/\?/,"");
  988.  
  989. //bestgate==========================================
  990. }else if(location.href.match(/^https?:\/\/www.bestgate.net/)){
  991. //http://www.bestgate.net/hop_auction.php?url=http%3A%2F%2Fpage13.auctions.yahoo.co.jp%2Fjp%2Fauction%2Fr112484393&type=at
  992. //bestgateにあるヤフオクリンク修正
  993. if(href.match(/(\?|&)url=http/)){
  994. strUrl = getRedirectUrl(href,"url");
  995. }
  996.  
  997. //http://click.dtiserv2.com/Direct/9006999-6-167676/moviepages/071216-206/index.html
  998. //click.dtiserv2.com
  999. }else if(host.match(/^https?:\/\/click.dtiserv2.com\//)){
  1000. getUrl("expand","GET",obj);
  1001. return
  1002.  
  1003. //http://l.facebook.com/l.php?u=リダイレクトURL&h=-AQGihBRZ&enc=AZMU0R7z01C_T_ISMpmAMHLyRpW7Wqjdb8Im3TPkOb9Y8XJ3xZJd6mtcIqMzeFiq1f4wvvhbuXdx9TfoAqt46mqa0pAWAa2JjNbYHbfZ2PMnPIKvV-QYbQbi1-VS-2ZSWGBrEzEqijhEL2QJNxT9sHVY&s=1
  1004. //facebookリダイレクト除去
  1005. }else if(href.match("facebook.com/l.php?u=")){
  1006. strUrl = getRedirectUrl(href,"u");
  1007.  
  1008. //http://t.umblr.com/redirect?z=http%3A%2F%2Fbit.ly%2F
  1009. //tumblerリダイレクト
  1010. }else if(href.match("t.umblr.com/redirect?")){
  1011. strUrl = getRedirectUrl(href,"z");
  1012.  
  1013. //http://c.kakaku.com/forwarder/forward.aspx?ShopCD=3904&PrdKey=K0000616989&Url=http%3A%2F%2Fkakaku%2Ecom%2Fjump%2Faf%2F0051%2Foutside%5F30993%2Ehtml&Hash=3f6d5b0c9f3989d76acd2e1697ada044
  1014. //価格コムのURLを事前に修正
  1015. }else if(host.match("kakaku.com/")){
  1016. if(href.match(/(\?|\&)Url=http/)){
  1017. strUrl = getRedirectUrl(href,"Url");
  1018.  
  1019. }else if(href.match(/(\?|\&)url=http/)){
  1020. strUrl = getRedirectUrl(href,"url");
  1021.  
  1022. //http://kakaku.com/ksearch/redirect.asp?u=http%3A%2F%2Fhb%2Eafl%2Erakuten%2Eco%2Ejp%2Fhgc%2Fg00pukw1%2E4f3hl703%2Eg00pukw1%2E4f3hme41%2F%5FRTkcom10000111%3Fpc%3Dhttp%253A%252F%252Fitem%2Erakuten%2Eco%2Ejp%252Fjism%252F4953103168619%2D42%2D4479%2Dn%252F%26amp%3Bm%3Dhttp%253A%252F%252Fm%2Erakuten%2Eco%2Ejp%252Fjism%252Fi%252F10177711%252F&h=81bdf420e29289c4c563172c6ba7eccd
  1023. }else if(href.match(/(redirect|rd_kused.asp)/) && href.match(/(\?|\&)u=http/)){
  1024. strUrl = getRedirectUrl(href,"u");
  1025. }
  1026.  
  1027. //アフィパラメーター
  1028. strUrl = setParams(strUrl,["lid"],"del");
  1029.  
  1030. setLink(obj)
  1031. return
  1032. }else{
  1033. }
  1034.  
  1035. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  1036.  
  1037.  
  1038. //リンク修正開始-----------------------------------------------------------
  1039.  
  1040. //アフィリエイト関連(アフィリエイト専門系)-----------------------------------------------------------
  1041.  
  1042.  
  1043. //http://a5.tuhan.ne.jp/r.php?site=coneco&ec=1715&pagetype=coneco&sku=4549210020560&cat=01011010&price=59886&op=category_name%3D%2583%2566%2583%2558%2583%254E%2583%2567%2583%2562%2583%2576%2583%2570%2583%255C%2583%2552%2583%2593%26item_id%3D1130829060%26ta%3D20%26item_name%3DFMVD0502NP%2BESPRIMO%2BD551%252FGX%2BSP%2528Celeron%2BG1610%252F2GB%252F500GB%252FDVD%252FWin7%2BPro%2529&url=http%3A%2F%2Fwww.coneco.net%2Fgoshop.asp%3Fm_id%3Dea2fafcdb4251e13f7c9172f0d089e98%26com_id%3D1130829060%26shop_id%3D1715%26c_id%3D01011010%26goshop%3D1%26ta%3D20
  1044. //a5.tuhan ==============================================================================
  1045. if(href.match(/a5.tuhan.ne.jp.*(\?|&)url=http/)){
  1046. strUrl = getRedirectUrl(href,"url");
  1047.  
  1048. //http://px.a8.net/svt/ejp?a8mat=10FZ8L+9U8XPU+5WS+C28PV&a8ejpredirect=http%3A%2F%2Fitem.rakuten.co.jp%2Ftv-ya%2商品%2F
  1049. //a8.net=========================================================================================
  1050. }else if(host.match(".a8.net")){
  1051. if(href.match("a8ejpredirect")){
  1052. strUrl = getRedirectUrl(href,"a8ejpredirect");
  1053.  
  1054. //http://www.a8.net/cgi-bin/redirect?ar=http%3a%2f%2fwww.a8.net%2fas%2fas_promo%2f&a8=gXUI7X-RfAkcnoEcnoU6sRs0XM1RfoURBo4RNolLmpjEY3Bxx
  1055. }else if(href.match(/redirect\?ar=/)){
  1056. strUrl = getRedirectUrl(href,"ar");
  1057.  
  1058. //http://px.a8.net/svt/ejp?a8mat=10BM2M+7QMVW2+MZI+15UZJL
  1059. //修正http://px.a8.net/svt/ejp?a8mat=++MZI+15UZJL
  1060. }else if(href.match(/a8mat=.*\+/)){
  1061. // strUrl = href.replace(/a8mat=.*?\+.*?\+/,"a8mat=?++");
  1062. getUrl("expand","GET",obj,3);
  1063. return;
  1064. }
  1065.  
  1066. //accesstrade==========================================================================
  1067. }else if(host.match("accesstrade.net/")){
  1068.  
  1069. //http://www.accesstrade.net/at/c.html?rk=英数字&url=http%3A%2F%2Fwww.サイト.html%3Fsort%3D5d%26page%3D1
  1070. if(strUrl.match(/(\?|&)url=http/)){
  1071. strUrl = getRedirectUrl(href,"url");
  1072.  
  1073. //http://is.accesstrade.net/cgi-bin/isatV2/AccessTradeP/entryV2.cgi?rk=01004s1s007xy1&nid=g1355613504&rurl=http%3A%2F%2Fwww.accesstrade.ne.jp%2F&media=http%3A%2F%2Fh.accesstrade.net%2F&atss=01004s1s007xy1-3de5b4e75a5ef7f5a8caa975196efb9a
  1074. }else if(href.match(/(\?|&)rurl=http/)){
  1075. strUrl = getRedirectUrl(href,"rurl");
  1076. }else{
  1077. getUrl("expand","GET",obj);
  1078. return;
  1079. }
  1080.  
  1081. //www.a-c-engine.com
  1082. }else if(host.match(/www.a-c-engine.com/)){
  1083. strUrl = getUrl("expand","GET",obj);
  1084. return;
  1085.  
  1086. //http://ad.aspm.jp/cl/click_asp.
  1087. }else if(host.match(/ad.aspm.jp/)){
  1088. strUrl = getUrl("expand","GET",obj);
  1089. return;
  1090.  
  1091. //http://adf.ly/数字/http://
  1092. //adf.ly====================================================================
  1093. }else if(href.match(/adf.ly\/\d+\/./)){
  1094. if(href.match(/adf.ly\/\d+\/http/)){
  1095. strUrl = href.replace(/.*adf.ly.*http/,"http");
  1096. }else {
  1097. strUrl = href.replace(/.*adf.ly\/\d+\//,"http://");
  1098. }
  1099.  
  1100. //http://click.adlantis.jp/ad/click?aid=NzQ2MDcw%250A&at=2&cid=NTAwNDY%253D%250A&conv_id=NDQxNDY%253D%250A&url=http%253A%252F%252Fadf.shinobi.jp%252Fr%252F72b87d467739fce5e46f7177eb014e37%253Futm_source%253Dadmcmpny%2526utm_medium%253Dbanner%2526utm_campaign%253D72890&zid=mYt9U98u5Bc79OQYsdPtXw%3D%3D
  1101. //adlantis==============================================================================
  1102. }else if(href.match(/adlantis.jp.*(\?|&)url=http/)){
  1103. strUrl = getRedirectUrl(href,"url");
  1104.  
  1105. //af-mark=================
  1106. }else if(host.match(/www.af-mark/)){
  1107. getUrl("expand","GET",obj,2);
  1108. return;
  1109.  
  1110. //http://click.affiliate.ameba.jp/affiliate.do?affiliateId=27389922
  1111. //ameba==============================================================================
  1112. }else if(href.match(/affiliate.ameba.jp.*(\?|&)affiliateId=/)){
  1113. getUrl("expand","GET",obj);
  1114. return;
  1115.  
  1116. //fc2==================================================================================
  1117. }else if(href.match("blog.fc2.com/goods/")){
  1118. strUrl = href.replace(/(blog\.fc2\.com\/goods\/\w+\/).+$/i, "$1");
  1119.  
  1120. //https://www.gamefeat.net/webapi/v1/reportClick?ad_id=1802&site_id=760
  1121. //gamefeat===========================================================================
  1122. }else if(host.match("gamefeat.net")){
  1123. getUrl("expand","GET",obj);
  1124. return;
  1125.  
  1126. //http://www.google.co.jp/aclk?sa=l&ai=CscvKshs4U-e6JMHAlAXf74G4BK-Lq5cEv72pjHHHvvOyvgEIBBABKAVQ0tL2oANgicvBhOwToAGZis3bA8gBB6kCxOgqt9HjRD6qBCVP0NYfuJc3xTwD_YPY33CG2FOeBMEPRY4tchOkmx_9saBJpN8wwAUFoAYmgAfP9bIkkAcB4BKqgKnV-7C6z58B&sig=AOD64_1ERLIr2li_OU5jev_gF23LyMkuAw&ctype=5&rct=j&q=%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E9%AB%98%E3%81%95&ved=0CCsQwg8&adurl=http://product.rakuten.co.jp/product/-/9ed6c7ead94e3d087fa4f88896cd725c/%3Fsc2id%3Dgmc_211213_9ed6c7ead94e3d087fa4f88896cd725c%26scid%3Ds_kwa_pla&cad=rja
  1127. //googleAd==================================================================================
  1128. }else if(host.match(/https?:\/\/(www.)?google(ads)?./)){
  1129. if(href.match(/.*\/interstitial.*(\?|$)url=h/)) return;
  1130.  
  1131. if(href.match(/(\?|&)adurl=http/)){
  1132. strUrl = getRedirectUrl(href,"adurl");
  1133. strUrl = strUrl.replace(/\?adid=.*$/,"");
  1134.  
  1135. //https://www.google.co.jp/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&docid=P5Srr3ocO7LUlM&tbnid=dwrfHg15I_WHmM:&ved=0CAEQjxw&url=http%3A%2F%2Fwww.amazon.co.jp%2FT-mart%25E6%2597%25A5%25E6%259C%25AC-%25E3%2582%25AD%25E3%2583%25BC%25E3%2583%259C%25E3%2583%25BC%25E3%2583%2589%25E3%2582%25B9%25E3%2582%25BF%25E3%2583%25B3%25E3%2583%2589-%25E9%25AB%2598%25E3%2581%2595%25E8%25AA%25BF%25E7%25AF%2580%25E4%25BB%2598%25E3%2581%258D-%25E6%25A5%25BD%25E5%2599%25A8-%25E3%2582%25B7%25E3%2583%25B3%25E3%2582%25BB%25E3%2582%25B5%25E3%2582%25A4%25E3%2582%25B6%25E3%2583%25BC%25E4%25B8%25A6%25E8%25A1%258C%25E8%25BC%25B8%25E5%2585%25A5%25E5%2593%2581%2Fdp%2FB00HV8GIPU&ei=VC84U-u_CYTVkAWI3IDgDw&psig=AFQjCNEwf895lq12uQpb-yS7nneXGbr8aQ&ust=1396277458397147
  1136. }else if(href.match(/(\?|&)url=http/)){
  1137. strUrl = getRedirectUrl(href,"url");
  1138.  
  1139. //google image
  1140. }else if(href.match(/google\..*imgrefurl=http/)){
  1141. strUrl = getRedirectUrl(href,"imgrefurl");
  1142.  
  1143. }else if(href.match(/aclk\?/)){
  1144. getUrl("expand","GET",obj);
  1145. return;
  1146. }
  1147.  
  1148. //http://refer.istockphoto.com/ta.php?lc=076750041038004651&atid=124071%7CBannerID%3D124071%7CReferralMethod%3DBanner&url=http%3A%2F%2Fnihongo.istockphoto.com
  1149. //istockphoto=======================================================================================
  1150. }else if(href.match(/.istockphoto..*(\?|\&)url=http/)){
  1151. strUrl = getRedirectUrl(href,"url");
  1152.  
  1153. //http://ls.j-a-net.jp/?a=36882&d=494714&url=http%3A%2F%2Fwww%2E10keiya%2Ecom%2Fitem%2F5083%2Ehtml
  1154. //Janet ==============================================================================
  1155. }else if(href.match(/.j-a-net.jp.*(\?|\&)url=http/)){
  1156. strUrl = getRedirectUrl(href,"url");
  1157.  
  1158. //http://www2.jp.jskypro.com/affiliate/click.php?uid=3168&did=208724
  1159. }else if(host.match("jskypro.com")){
  1160. getUrl("expand","GET",obj);
  1161. return;
  1162.  
  1163. //http://affiliates.jskyservices.com/scripts/click.php?a_aid=50179d7c1f314&a_bid=569789f5&desturl=http%3A%2F%2Fmy.tokyo-hot.com%2Fdetail%2Fid%2F20098.html
  1164. //JSKY(接続できないので未確認)========================================================
  1165. }else if(href.match(/affiliates.jskyservices.com.*(\?|\&)desturl=http/)){
  1166. strUrl = getRedirectUrl(href,"desturl");
  1167.  
  1168. //http://clk.kau.li/?dat=CBL9XwBfbF7yua-GPwxErsGTvRp75RNx0zI8g0dwtu6b1GtHV3lKEI6AyXDjh-rlP-FCCmsdf777XWpl9BR61UDSYNhKCKKPS4jNe_L2puIPz__Q0WPH58muaVeFBiHTz5O8hgtVmNg9N1oXi0eRuaSHd12oYC8NhJNz6CQM2eN1nsyAecNxpg&rurl=http%3A%2F%2Fanicobin.ldblog.jp%2F&url=http%3A%2F%2Fanicobin.ldblog.jp%2Farchives%2F39788443.html&rd=http%3A%2F%2Fdaikoku.ebis.ne.jp%2Ftr_set.php%3Fargument%3DtKnnLCT6%26ai%3Da53a298bd5b584
  1169. //Kauli============================================================================================
  1170. }else if(href.match(/.kau.li.*(\?|\&)rd=http/)){
  1171. strUrl = getRedirectUrl(href,"rd");
  1172.  
  1173. //http://kt-joker.com/movie_3404196194_unm96.php?adwares=A9999999&id=N0000087&from=
  1174. }else if(host.match(/(jskyservices|kt-joker|oooo9|peepfox).com/)){
  1175. if(href.match(/(\?|&)url=h/)){
  1176. strUrl = getRedirectUrl(href,"url");
  1177. }else{
  1178. strUrl = setParams(href,["id","adwares","from"],"del");
  1179. }
  1180.  
  1181. //http://www.linkshare.ne.jp/scland/mgm/?id=gzfSX9*DI5k
  1182. //linkshare================================================================================================
  1183. }else if(href.match(/.linkshare..*(\?|\&)id=/)){
  1184. strUrl = setParams(href,["id"],"del");
  1185.  
  1186. //http://www.sofmap.com/buy/lsurl_entry.aspx?lstid=U4AfXeaTNq4-l7EnG4eSREjOnqPlmXjqpw&lsurl=http%3A%2F%2Fwww.sofmap.com%2F
  1187. //http://amanaimages.com/lsgate?lstid=pM6b0jdQgVM-Y9ibFgTe6Zv1N0oD2nYuMA&lsurl=http%3A%2F%2Famanaimages.com%2Flp%2Fcreative%2Fafpl130225.html%3Frtm%3Dad_ls%26waad%3DJGpD1ReZ
  1188. //http://www.necdirect.jp/redir/ndentryls.asp?lstid=CBTtYXMkwwI-TaKj1VZm5Y78w0wJpYbXYg&lsurl=http%3A%2F%2Fwww.necdirect.jp%2Fshop%2Fnote%2Flavie%2Fsh%2Findex.html
  1189. //linkshare?(多岐のドメイン)============================================================================================
  1190. }else if(href.match(/(\?|\&)lsurl=http/ && /(\?|\&)lstid=/)){
  1191. strUrl = getRedirectUrl(href,"lsurl");
  1192.  
  1193. //linksynergy linkshareらしい ==============================================================================
  1194. }else if(host.match(/.linksynergy./)){
  1195.  
  1196. if(href.match(/RD_PARM1=/)){
  1197. strUrl = decURI(getRedirectUrl(href,"RD_PARM1"));
  1198.  
  1199. //http://click.linksynergy.com/link?id=123456789&offerid=300091.2&type=3&murl=http%3A%2F%2Fwww.bestbuy.com%2Fsite%2Fcanon-eos-60d-dslr-camera-with-18-135mm-is-lens-black%2F1221963.p%3Fid%3D1218237703503%26skuId%3D1221963%26cmp%3DRMX%26ky%3D2dN2vg9ikE823Sb2cqFFchnSnf6JkvQna
  1200. }else if(href.match(/(\?|\&)murl=http/)){
  1201. strUrl = decURI(getRedirectUrl(href,"murl"));
  1202.  
  1203. }else if(href.match(/(\?|\&)subid=http/)){
  1204. strUrl = decURI(getRedirectUrl(href,"subid"));
  1205. }else{
  1206. getUrl("expand","GET",obj);
  1207. return;
  1208. }
  1209.  
  1210. //https://www2.liveads.jp/widgets_src/cc.php?c=vs%3D2439871%26amp%3Bvp%3D876489954%26amp%3Bvcptn%3Dfeb92ec1_2_106001%26amp%3Bvc_url%3Dhttp%253A%252F%252F
  1211. //liveads.jp==================================================================================
  1212. }else if(href.match(/www2.liveads.jp.*vc_url/)){
  1213. strUrl = href.replace(/&amp;/g, "&");
  1214. strUrl = getRedirectUrl(strUrl,"vc_url");
  1215.  
  1216. //http://altfarm.mediaplex.com/ad/ck/10591-62045-26616-588?ACD=XQu4C3KR0Oc-QSMuOOkWxZkxzlLa6Riubw&DURL=http%3A%2F%2Falienware.jp%2F
  1217. //http://adfarm.mediaplex.com/ad/ck/10591-173392-30165-0?ACD=10591173392301650&!mpro=http://lt.dell.com/lt/lt.aspx?CID=21501&LID=4996848&DGC=LS&DGSeg=DHS&ACD=GSAXENiMcvI-CV438pQz9B3coGmNm0VKeg&DURL=http%3A%2F%2Fwww.dell.com%2Fjp%2Fp%2Fdeals%23!dlpgid%3Dmobility-laptop-deals
  1218.  
  1219. //mediaplex.com(検索するとウィルスがどうのとか出てくるリダイレクトサイト)=========================================
  1220. }else if(href.match(/.mediaplex.com.*(\?|\&)DURL=http/)){
  1221. strUrl = getRedirectUrl(href,"DURL");
  1222.  
  1223. //http://mineo.jp/lp/lp_10.html?cid=DBNA000NANAAFEAFB00000027150601
  1224. }else if(host.match(/mineo.jp/)){
  1225. strUrl = setParams(href,["cid"],"del");
  1226.  
  1227. //http://c.af.moshimo.com/af/c/click?a_id=420859&p_id=170&pc_id=185&pl_id=4062&url=http://www.amazon.co.jp/dp/B000MGBPNI
  1228. //もしもアフィリエイト==============================================================================
  1229. }else if(href.match(/.moshimo.com.*(\?|\&)url=/)){
  1230. strUrl = getRedirectUrl(href,"url");
  1231.  
  1232. //http://pixel.everesttech.net/2127/cq?ev_sid=3&ev_ln=&ev_crx=47568359292&ev_mt=&ev_n=g&ev_ltx=pla:602973&ev_plx=602973-MT&ev_ptid=138541425612&ev_mid=6578989&ev_cty=JP&ev_lan=ja&ev_dvc=c&ev_dvm=&url=http%3A%2F%2Fwww%2Efelissimo%2Eco%2Ejp%2Fhaco%2Fv34%2Fcfm%2Fproducts%5Fdetail001%2Ecfm%3FGCD%3D602973%26bid%3D12257%26xid%3Dp_lso_fc_PLA
  1233. //pixel.everesttech.net
  1234. }else if(href.match(/pixel.everesttech.net.*(\?|\&)url=/)){
  1235. strUrl = getRedirectUrl(href,"url");
  1236.  
  1237. //http://refer.ccbill.com/cgi-bin/clicks.cgi?CA=930223-0000&PA=2574586&HTML=http://www2.g-queen.com/index2.html
  1238. //refer.ccbill.com
  1239. }else if(host.match(/refer.ccbill.com/)){
  1240. if(href.match(/HTML/)){
  1241. strUrl = getRedirectUrl(href,"HTML");
  1242. }else if(href.match(/clicks/)){
  1243. getUrl("expand","GET",obj);
  1244. return;
  1245. }
  1246.  
  1247.  
  1248. //http://www2.sbs-ad.com/track/traffic.php?c=22068-1-102&b=10202779&u=http%3A%2F%2Fwww.xxx-av.com%2Fhome.html
  1249. }else if(host.match(/sbs-ad.com/)){
  1250. if(href.match(/(\?|\&)u=/)){
  1251. strUrl = getRedirectUrl(href,"u");
  1252. }else if(href.match(/traffic/)){
  1253. getUrl("expand","GET",obj);
  1254. return;
  1255. }
  1256.  
  1257.  
  1258. //http://intr.shinobi.jp/LandingHandler?nm=46095&commercial_id=2
  1259. //忍者admax紹介================================================================================
  1260. }else if(href.match("shinobi.jp/LandingHandler")){
  1261. strUrl = href.replace(/\?.*$/,"");
  1262.  
  1263. //http://英数字.qqc.co/url/http://
  1264. //trafficgate==============================================================================
  1265. }else if(strUrl.match(/.qqc.co\/url\/http/)){
  1266. strUrl = href.replace(/.*.qqc.co\/url\/http/,"http");
  1267.  
  1268. //https://track.affiliate-b.com/visit.php?guid=ON&a=R75062-w256343j&p=t409868V
  1269. //track.affiliate-b.com==============================================================
  1270. }else if(host.match(/track.affiliate-b.com/)){
  1271. getUrl("expand","GET",obj);
  1272. return;
  1273.  
  1274. //trafficgate==============================================================================
  1275. }else if(strUrl.match("trafficgate.net")){
  1276.  
  1277. //http://ad2.trafficgate.net/t/r/18/702/44662/0/-/https://shop.elecom.co.jp/Store/Product.aspx?JanCd=4953103062849
  1278. if(href.match("/-/http")){
  1279. strUrl = href.replace(/.*\/-\/http/,"http");
  1280.  
  1281. //http://ad2.trafficgate.net/t/r/1/45/175962_199702/0/TSTOXPz14TNbPnh19Y2tV_oDFr6RLlN
  1282. }else{
  1283. getUrl("expand","GET",obj);
  1284. return;
  1285. }
  1286.  
  1287. //trafficgateのwebantenna(gaが広告主情報)==============================================================================
  1288. //http://tr.webantenna.info/rd?waad=vOAmxCtv&ga=WAylLT-1
  1289. }else if(href.match(/tr.webantenna.info.*(\?|&)ga=/)){
  1290. //何故かパラメータごと消すとエラーが出るので数値だけ削除
  1291. strUrl = setParams(href,["ga"],"");
  1292. setLink(obj);
  1293. return;
  1294.  
  1295. //http://ck.jp.ap.valuecommerce.com/servlet/referral?sid=13940&pid=877084383&vc_url=http://www.dospara.co.jp/5shopping/detail_parts.php?ic=80552&waad=vx2bADUp
  1296. //http://atq.ck.valuecommerce.com/servlet/atq/referral?sid=2219441&pid=877510753&vcptn=auct/p/lvqz8ovHd60uhKFgupcFng--&vc_url=http%3A%2F%2Fpage3.auctions.yahoo.co.jp%2Fjp%2Fauction%2Fc424445646
  1297. //valuecommerce ==============================================================================
  1298. }else if(href.match("valuecommerce.")){
  1299.  
  1300. if(href.match(/(\?|&)vc_url/)){
  1301. strUrl = getRedirectUrl(href,"vc_url");
  1302.  
  1303. //http://ck.jp.ap.valuecommerce.com/servlet/referral?va=2266773&sid=3091344&pid=882260177&vcid=bGmU_AHjllv84Mt-fZ4weDItjcOmmGcAFaJssucpwdz9kF75jqBDmQ&vcpub=0.621401729893042
  1304. //valuecommerce======================================================================
  1305. //vc_urlの指定がないものはpid(ユーザーID?)とofferid(商店ID?)によってオリジナルリンクへ飛ぶ模様
  1306. }else{
  1307.  
  1308. getUrl("expand","GET",obj,2);
  1309. return;
  1310. // strUrl = setParams(href,["va","vcid","vcpub"],"");
  1311. }
  1312.  
  1313.  
  1314. //http://aff.makeshop.jp/redirect.html?service_id=1&shop_id=yutapro&media_id=KCH&url=www.yutapro.net%2Fshopdetail%2F016003000007%2F
  1315. //makeshop ==============================================================================
  1316. }else if(host.match(/^http:\/\/aff.makeshop.jp/)){
  1317. strUrl = 'http://' + getRedirectUrl(href,"url");
  1318.  
  1319. //http://r.advg.jp/
  1320. //makeshop ==============================================================================
  1321. }else if(host.match(/advg.jp/)){
  1322. getUrl("expand","GET",obj,2);
  1323. return;
  1324.  
  1325. //outgoing.prod.mozaws.net
  1326. }else if(href.match(/^https?:\/\/outgoing.prod.mozaws.net\/.*?\/(https?%3A\/\/.*$)/)){
  1327. strUrl = RegExp.$1.replace("%3A//",'://');
  1328.  
  1329. //http://whi.linguette.net/519T154
  1330. }else if(href.match(/https?:\/\/(\w+).((linguette|natadecoco).net|(choucreme|crostol).com)\/(\d{3}.\d{3}\/?)/)){
  1331. strUrl = href.replace(RegExp.$5,"");
  1332.  
  1333. }else{
  1334.  
  1335. }
  1336.  
  1337. //RSS-------------------------------------------------------------------
  1338. //基本的には対応しない(「RSS広告削除社」などすでに広告削除してくれるサービスがあるため)
  1339.  
  1340.  
  1341. //http://psrd.yahoo.co.jp/PAGE=P/LOC=PRD/R=1/O=P/MID=store-wax/TBID=/SIG=1243tval6/EXP=1206101243/*-http%3A//rd.store.yahoo.co.jp/wax/fu-esa-10ce.html
  1342. //yahooのRSS?==============================================================================
  1343. if(href.match(/.yahoo..*\*\-http/)){
  1344. strUrl = decURI(href.replace(/.*\/\*\-http/,"http"));
  1345.  
  1346. //http://rdsig.yahoo.co.jp/rss/l/headlines/prod/zdn_pc/RV=1/RU=aHR0cDovL2hlYWRsaW5lcy55YWhvby5jby5qcC9obD9hPTIwMTQxMjI2LTAwMDAwMDY5LXpkbl9wYy1wcm9k
  1347. }else if(href.match(/.yahoo..*\/rss\//)){
  1348. getUrl("expand","GET",obj);
  1349. return;
  1350.  
  1351. //その他::::::::::::::::::::::::::::::::::::::::::::::::
  1352.  
  1353. }else{
  1354. }
  1355.  
  1356.  
  1357.  
  1358. //サイト別----------------------------------------------------------------
  1359.  
  1360. //Shop系::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1361.  
  1362. //7netshopping========================================================================
  1363. //http://www.7netshopping.jp/relay/affiliate/entranceProcess.do?url=http%3A%2F%2Fwww.7netshopping.jp%2Fbooks%2Fdetail%2F-%2Fisbn%2F9784088798349&affid=1231517777783348&site=0&link=6
  1364. if(href.match(/7netshopping..*(\?|&)url=http/)){
  1365. strUrl = getRedirectUrl(href,"url");
  1366.  
  1367. //amazon==============================================================================
  1368. }else if(href.match(/^https?:\/\/(www.|affiliate.)?amazon.(jp|co.jp|com|ca|com.br|com.mx|co.uk|de|fr|it|es|cn|in|com.au)\/./)){
  1369.  
  1370.  
  1371. if(href.match(/%26tag%3D/)) href = strUrl;
  1372.  
  1373. //http://www.amazon.co.jp/gp/product/images/4048919377/ref=dp_otherviews_z_0?ie=UTF8&img=0&s=books
  1374. //商品画像の切り替えURLだったら除外
  1375. if(href.match(/(\/gp\/product\/images\/|\/ask\/questions\/)/)){
  1376. //何もしない
  1377.  
  1378. //アマゾンのリダイレクト除去
  1379. }else if(href.match(/(\/|sl)redirect.*=/i) ){
  1380.  
  1381. //https://www.amazon.co.jp/gp/slredirect/picassoRedirect.html/ref=sspa_dk_detail_0?ie=UTF8&adId=A3MVUJ952SPOS9&qualifier=1539854521&id=2875222140936219&widgetName=sp_detail&url=%2Fdp%2FB076HH9Z5J%2Fref%3Dsspa_dk_detail_0%3Fpsc%3D1%26pd_rd_i%3DB076HH9Z5J%26pf_rd_m%3DAN1VRQENFRJN5%26pf_rd_p%3D35261a28-eed5-46a8-9369-308fa0c478f8%26pf_rd_r%3DMBQ2DRTD21JC6PA45Y6G%26pd_rd_wg%3DbvWAI%26pf_rd_s%3Ddesktop-dp-sims%26pf_rd_t%3D40701%26pd_rd_w%3DAas4z%26pf_rd_i%3Ddesktop-dp-sims%26pd_rd_r%3D452c763a-d2b7-11e8-9ead-972dad541d9c
  1382. if(href.match(/.*\/slredirect\/.*(&|\?)url=.*/)){
  1383. strUrl = getRedirectUrl(href,"url");
  1384.  
  1385. //http://www.amazon.co.jp/gp/redirect.html/ref=amb_link_68694429_2?ie=UTF8&location=http%3A%2F%2Fwww.amazon.co.jp%2Fgp%2Fhelp%2Fcustomer%2Fdisplay.html%3FnodeId%3D200505800&token=0AE1DFACC954F91986074504F57C1362C85FB6E8&pf_rd_m=AN1VRQENFRJN5&pf_rd_s=merchandised-search-left-2&pf_rd_r=0PW7G1RFAKKV592CEXCJ&pf_rd_t=101&pf_rd_p=157968649&pf_rd_i=2799399051
  1386. }else if(href.match(/(\?|\&)location=http/)){
  1387. strUrl = getRedirectUrl(href,"location");
  1388.  
  1389. //http://www.amazon.co.jp/exec/obidos/redirect?tag=bestgate-22&path=http%3A%2F%2Fwww.amazon.co.jp%2Fgp%2Foffer-listing%2FB00CL7LC3O%2F%3Fcondition%3Dnew
  1390. }else if(href.match(/(\&|\?)path=http/)){
  1391. strUrl = getRedirectUrl(href,"path");
  1392.  
  1393. //http://www.amazon.co.jp/exec/obidos/redirect?link_code=ur2&camp=247&tag=naritanetmap-22&creative=1211&path=external-search%3Fsearch-type=ss%26keyword=%25E3%2583%25AA%25E3%2582%25B9%25E3%2583%2588%25E3%2583%25A9%25E6%2592%2583%25E9%2580%2580%25EF%25BC%25A1%25EF%25BC%25A2%25EF%25BC%25A3%25E3%2580%2580%26index=books-jp
  1394. //http://www.amazon.co.jp/exec/obidos/redirect?link_code=ur2&camp=247&tag=naritanetmap-22&creative=1211&path=external-search?search-type=ss&keyword=%E3%83%AA%E3%82%B9%E3%83%88%E3%83%A9%E6%92%83%E9%80%80%EF%BC%A1%EF%BC%A2%EF%BC%A3%E3%80%80&index=books-jp
  1395. }else if(href.match(/(\?|\&)path=/)){
  1396. strUrl = href.replace(/(.*)redirect\?.*$/i,'$1' + getRedirectUrl(href,"path"));
  1397. }
  1398.  
  1399. //http://www.amazon.co.jp//ref=as_sl_pd_tf_lc?tag=a8-affi-62498-22&camp=1&creative=1&linkCode=ur1&ref-refURL=http%3A%2F%2Frcm-jp.amazon.co.jp%2F
  1400. //rcm-jp.amazon(アマゾンのURLの後に//が来るパターンはトップページへのリンクだけ?)
  1401. }else if(href.match(/amazon.(jp|co.jp|com|ca|com.br|com.mx|co.uk|de|fr|it|es|cn|in|com.au)\/\//) && !href.match(/(ASIN|product|dp)/)){
  1402. strUrl = href.replace(/(.*.amazon..*?\/)\/(.*$)/i,"$1");
  1403.  
  1404.  
  1405. //正しいアドレスhttp://www.amazon.co.jp/gp/aw/d/B003YU3XUM
  1406. //http://www.amazon.co.jp/gp/aw/rd.html?uid=アフィIDらしきもの&at=アフィIDらしきもの&a=B003YU3XUM&url=%2Fgp%2Faw%2Fd.html&lc=msn
  1407. //スマホ用アドレス(暫定対応)
  1408. }else if(href.match(/\/gp\/aw\//)){
  1409. strUrl = setParams(href,["uid","at"],"del");
  1410.  
  1411. //修正
  1412. strUrl=strUrl.replace(/(\/gp\/aw\/d\/)(.*?)(\/|\?).*$/i, "$1" + "$2/");
  1413.  
  1414. //商品説明のリンクで必要なパラメータまで消すので補てん
  1415. if(!strUrl.match("dsc=") && href.match("dsc=")){
  1416. params = createParamArray(href); //パラメータ格納
  1417. strUrl = strUrl + "?dsc=" + params["dsc"];
  1418. }
  1419. //詳細説明のリンクで必要なパラメータまで消すので補てん
  1420. if(!strUrl.match("pd=") && href.match("pd=")){
  1421. params = createParamArray(href); //パラメータ格納
  1422. strUrl = strUrl + "?pd=" + params["pd"];
  1423. }
  1424.  
  1425. //http://www.amazon.co.jp/G246%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-24%E5%9E%8B%E3%83%AF%E3%82%A4%E3%83%89%E6%B6%B2%E6%99%B6%E3%83%A2%E3%83%8B%E3%82%BF%E3%83%BC-1920%C3%971080-%E5%85%A5%E5%8A%9B%E7%AB%AF%E5%AD%90%E3%83%9F%E3%83%8BD-Sub15%E3%83%94%E3%83%B3%E3%83%BBDVI-D%E2%80%BBHDCP%E5%AF%BE%E5%BF%9C%E3%83%BBHDMI-G246HLABID/dp/B00ADGM1A8%3FSubscriptionId%3D0571BBGTQZ5YYPEDSY02%26tag%3Dkakaku-pc-pcother-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00ADGM1A8%26me%3dAN1VRQENFRJN5
  1426. //通常の商品URL
  1427. }else {
  1428.  
  1429. //修正
  1430. //strUrl=href.replace(/(amazon\.(jp|co.jp|com|ca|com.br|com.mx|co.uk|de|fr|it|es|cn|in|com.au))\/(.*\/)?(ASIN|product|dp)(\/.*?)(\/|\?).*$/i, "$1/" + "dp" + "$5/");
  1431.  
  1432. //商品IDの前にTOCなど入るURLもある(ex:amazon.co.jp/dp/toc/商品ID)
  1433. //product-descriptionが入る場合もあるがどちらも消さない
  1434.  
  1435.  
  1436.  
  1437. //年齢確認のリダイレクトは無視
  1438. //http://www.amazon.co.jp/gp/product/cero-black-curtain-redirect.html?ie=UTF8&redirectUrl=%2Fgp%2Fproduct%2F商品ID
  1439. if(href.match(/\&redirectUrl=%2F/)) return;
  1440.  
  1441.  
  1442. var amaUrl = href.split("/");
  1443. var amaTmp = amaUrl[0] + "/" + amaUrl[1] + "/" + amaUrl[2] + "/";
  1444. strUrl = amaTmp;
  1445.  
  1446. try{
  1447. var id;
  1448. //ama=2がドメインのところ
  1449. for(var ama=3;ama<amaUrl.length;ama++){
  1450. //GM_log(amaUrl[ama]);
  1451.  
  1452. if(amaUrl[ama].match(/^(ASIN|asin|product|dp)$/)){
  1453. //商品IDなら
  1454. if(amaUrl[ama+1].length == 10 || amaUrl[ama+1].match(/(\?|%3f)/i)){
  1455.  
  1456. //GM_log(amaUrl[ama+1]);
  1457. id = decURI(amaUrl[ama+1]).replace(/\?.*$/,"");
  1458. if(!id) id = getRedirectUrl(href,"ASIN");
  1459.  
  1460. strUrl += "dp/" + id;
  1461.  
  1462. //商品IDじゃない
  1463. }else if(amaUrl[ama+2]){
  1464. //GM_log(amaUrl[ama+1]);
  1465. strUrl += "dp/" + amaUrl[ama+1] + "/" + amaUrl[ama+2].replace(/\?.*$/,"") + "/";
  1466.  
  1467. }
  1468.  
  1469. break;
  1470.  
  1471. //https://affiliate.amazon.co.jp/gp/associates/network/build-links/individual/get-html.html?ie=UTF8&asin=B009OAGO84&marketplace=amazon&quicklinks=1&subflow=sp_
  1472. }else if(amaUrl[ama].match(/get-html\.html/)){
  1473. id = amaUrl[ama].replace(/.*?(asin|product)=(.*)/i,"$2").replace(/(.*?)&.*/,"$1");
  1474. strUrl = strUrl.replace(/affiliate/,"www") + "dp/" + id;
  1475. break;
  1476. }
  1477.  
  1478. if(amaUrl[ama].match(/^b\?.*node=/) && ama != 3){
  1479. strUrl = href.replace(amaUrl[ama-1]+"/","");
  1480. }
  1481. }
  1482. }catch(e){
  1483. GM_log("AKiller_amazon_Error:"+e);
  1484. }
  1485.  
  1486. if(amaTmp == strUrl){ strUrl = href; }
  1487.  
  1488.  
  1489. }//通常ここまで
  1490.  
  1491.  
  1492. //残ったアフィリエイトパラメータ削除("bbn"は必要なので除外)
  1493. if(strUrl.match(/(\?|\&).*?=./)){
  1494. dataDB = ["tag","adid","AssociateTag","creative","linkCode","linkId","ref-refURL","SubscriptionId"];
  1495.  
  1496. params = createParamArray(strUrl); //パラメータ格納
  1497. for(var key in params){
  1498. if(key.match("pf_rd_")){ dataDB.push(key); };
  1499. }
  1500.  
  1501. strUrl = setParams(strUrl,dataDB,"del");
  1502. }
  1503.  
  1504. //リファラ削除(amazonのページだと表示が重くなるので、行動追跡されるけど除外)
  1505. if(strUrl.match("/ref=") && !location.href.match(/https?:\/\/(www.)?amazon./)){
  1506. var amaRef = strUrl.split("?")[0].match(/\/ref=.*/);
  1507. strUrl = strUrl.replace(amaRef,"/");
  1508. }
  1509.  
  1510. //URL修正
  1511. if(strUrl.match("amazon.jp")){
  1512. strUrl = strUrl.replace(/amazon.jp/,"amazon.co.jp");
  1513. }
  1514.  
  1515. //消し過ぎたパラメータ復活
  1516. if(href.match(/(\?|&)m=/) && !strUrl.match(/(\?|&)m=/)){
  1517. params = createParamArray(href); //パラメータ格納
  1518. var q = "?m=";
  1519. if(strUrl.match(/\?/)) q = "&m=";
  1520. strUrl = strUrl + q + params["m"];
  1521. }
  1522.  
  1523. //http://www.aliexpress.com/item/In-Ear-Earphone-IE80-Hifi-Headset-IE-80-In-Ear-headphones-Auricular-with-retail-box-Fast/32383318705.html?shortkey=ymiAvuuM&addresstype=600
  1524. }else if(host.match(/^https?:\/\/.*?.aliexpress.com/)){
  1525. strUrl = setParams(href,["shortkey","addresstype"],"del");
  1526.  
  1527. }else if(host.match(/^https?:\/\/s.aliexpress.com/)){
  1528. getUrl("expand","GET",obj);
  1529. return;
  1530.  
  1531. //appbankstore=============================================================
  1532. //http://www.appbankstore.jp/link.php?url=
  1533. }else if(href.match(/http:\/\/www.appbankstore.jp\/link.php\?url=/)){
  1534. strUrl = 'http://www.appbankstore.jp' + getRedirectUrl(href,"url");
  1535.  
  1536. //AppleStore==============================================================================
  1537. }else if(host.match("aos.prf.hn")){
  1538. //デコードhttp://aos.prf.hn/click/camref:10ld4j/pubref:Orbotix Sphero/destination:http://store.apple.com/jp/product/HD162LL/A/orbotix-sphero-20-ロボティックボール?fnode=43
  1539. //デコードhttp://aos.prf.hn/click/camref:10ldan/pubref:Iphone 5s Case/destination:http://store.apple.com/jp/product/MF041FE/A/iphone-5s-case-ブラウン?fnode=47
  1540. strUrl = setParams(strUrl,["fnode"],"del");
  1541. strUrl = strUrl.replace(/.*destination:/,"");
  1542.  
  1543. //http://store.apple.com/us/browse/home/specialdeals/mac/macbook_pro?afid=p231%7Ccamref%3AikL5&cid=AOS-US-AFF-PHG
  1544. //AppleStoreその2==============================================================================
  1545. }else if(href.match(/store.apple.com.*(\?|&)afid=/)){
  1546. strUrl = setParams(href,["afid","cid"],"del");
  1547.  
  1548. //https://itunes.apple.com/jp/app/camera+/id329670577?mt=8&uo=4&at=11lc2w
  1549. //https://widgets.itunes.apple.com/widget.html?c=jp&brc=FFFFFF&blc=FFFFFF&trc=FFFFFF&tlc=FFFFFF&d=&t=&m=music&e=album&w=250&h=300&ids=660107804&wt=discovery&partnerId=&affiliate_id=&at=11lc2w&ct=
  1550. //itunes(パラメータatがアフィリエイトID。uoはついでに削除)==============================================================================
  1551. }else if(href.match(/itunes.apple.com.*\?.*=/)){
  1552. strUrl = setParams(href,["at","uo","aId","ct"],"del");
  1553.  
  1554.  
  1555. //http://www.ark-pc.co.jp/i/20104755/?cid=kakaku
  1556. //ark-pcのトラッカー==============================================================================
  1557. }else if(href.match(/ark-pc.co.jp.*(\?|&)cid=/)){
  1558. strUrl = href.replace(/(\?|&)cid=.*$/,"");
  1559.  
  1560. //正しいhttp://www.askul.co.jp/p/商品ID/
  1561. //http://www.askul.co.jp/stn?mode=affiliate&tool=215&frameURL=/p/商品ID/&sc_e=cp_a_as_vc_ps_a_p_kakaku
  1562. //askul==============================================================================
  1563. }else if(href.match(/www.askul.co.jp.*\/p\//)){
  1564. strUrl = href.replace(/(www.askul.co.jp)\/.*(\/p\/)(.*\/).*$/i,"$1$2$3");
  1565.  
  1566. //http://askulcorporation.tt.omtrdc.net/m2/askulcorporation/ubox/page?mbox=Lohaco_pc_yshppoint_redirect&mboxDefault=http%3A%2F%2Flohaco.jp%2Fevent%2Fbonus_winter%2F%3Fbk%3Dy%26sc_e%3Dj_as_ya_pc_n_pc
  1567. //http://askulcorporation.tt.omtrdc.net/m2/askulcorporation/ubox/page?mbox=Lohaco_pc_yshppoint_redirect&mboxDefault=http://lohaco.jp/event/bonus_winter/?bk=y
  1568. //askulcorporation==============================================================================
  1569. }else if(href.match(/askulcorporation.*(\?|&)mboxDefault/)){
  1570. strUrl = getRedirectUrl(href,"mboxDefault");
  1571. strUrl = href.replace(/(\?|\&)bk=.*$/,'');
  1572.  
  1573. //http://bookwalker.jp/series/492/?adpcnt=7qM_Wzs
  1574. //bookwalker========================================================================
  1575. }else if(href.match(/bookwalker.jp.*(\?|&)adpcnt=/)){
  1576. strUrl = setParams(href,["adpcnt"],"del");
  1577.  
  1578. //http://bicycle.kaigai-tuhan.com/rd.php?url=https%3A%2F%
  1579. //bicycle.kaigai-tuhan.com==============================================================
  1580. }else if(href.match(/bicycle.kaigai-tuhan.com.*(\?|&)url=http/)){
  1581. strUrl = getRedirectUrl(href,"url");
  1582.  
  1583. //carview(trafficgate)===============================================================
  1584. }else if(href.match(/.carview.co.jp\/.*(\?|\&)dest=/)){
  1585. //http://www.carview.co.jp/link/outbound.asp?orgpoint=mk%5Feditersblog%5Fmypage02&dest=http%3A%2F%2Fminkara%2Ecarview%2Eco%2Ejp%2Fuserid%2F285744%2Fblog%2F
  1586. if(href.match(/(\?|\&)dest=http/)){
  1587. strUrl = getRedirectUrl(href,"dest");
  1588.  
  1589. //https://kaitori.carview.co.jp/route.aspx?src=cv_minkara_20140501_kijinaka50040_0450_01_assess_032&dest=/service/assess/lp/032/
  1590. }else if(href.match(/route.aspx/)){
  1591. strUrl = "https://kaitori.carview.co.jp" + getRedirectUrl(href,"dest");
  1592. }
  1593.  
  1594. //http://www.dena-ec.com/item/167425291?aff_id=ckk
  1595. //dena==============================================================================
  1596. }else if(href.match(/dena-ec.com.*(\?|\&)aff_id=/)){
  1597. strUrl = setParams(href,["aff_id"],"del");
  1598.  
  1599. //https://www.mydocomo.com/onlineshop/products/smart_phone/SO02F.html?cid=OLS_PRD_SO02F_from_kdc_PRD_SO02F
  1600. //docomo==============================================================================
  1601. }else if(href.match(/mydocomo.com.*.html\?/)){
  1602. strUrl = setParams(href,["cid"],"del");
  1603.  
  1604. //http://www.dominos.jp/affiliate/lsdlp.php?siteID=2xz7U9Rg3UU-EQa7KfIyfr1jMEoV07nNfw
  1605. //dominos==============================================================================
  1606. }else if(href.match(/dominos.jp.*(\?|\&)siteID=/)){
  1607. strUrl = setParams(href,["siteID"],"del");
  1608.  
  1609. //http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575046443&toolid=10001&campid=5337310214&customid=&mpre=http%3A%2F%2Fwww.ebay.com%2Fitm%2FBULK-WHOLESALE-ARACHNOPHOBIA-ALUMINIUM-METAL-CASE-COVER-BUMPER-FOR-IPHONE-5-%2F111042804375%3Fpt%3DUK_MobilePhones_MobilePhonesCasesPouches%26var%3D%26hash%3Ditem19daaaba97
  1610. //ebay===============================================================================
  1611. }else if(href.match(/.ebay.com.*\?/)){
  1612.  
  1613. if(href.match("mpre=http")){
  1614. strUrl = getRedirectUrl(href,"mpre");
  1615.  
  1616. //http://rover.ebay.com/rover/1/711-53200-19255-0/1?icep_ff3=2&pub=5575128834&toolid=10001&campid=5337706690&customid=A846&icep_item=261466346649&ipn=psmain&icep_vectorid=229466&kwid=902099&mtid=824&kw=lg
  1617. }else if(href.match(/icep_item=/)){
  1618. strUrl = 'http://www.ebay.com/itm/' + getRedirectUrl(href,"icep_item");
  1619.  
  1620. //http://www.ebay.com/rpp/verabradley/vera-bradley-on-ebay/?customid=wKpbcDqpEeOGLorIgZYqDQ1xf4_s7wk3_0_0_0&pub=5574652453&afepn=5337259887&campid=5337259887&_trksid=p2050601.m1256&_ipg=192&_trkparms=%26clkid%3D2130385891313813204&afepn=5337259887
  1621. }else{
  1622. strUrl = setParams(href,["customid","_trksid"],"del");
  1623. }
  1624.  
  1625. //http://www.gearbest.com/graphics-tablets/pp_364944.html?lkid=11042271
  1626. //ebay===============================================================================
  1627. }else if(href.match(/.gearbest.com.*\?/)){
  1628. strUrl = setParams(href,["lkid"],"del");
  1629.  
  1630. //http://www.ksdenki.com/ec/commodity/00000000/4905524811384&vcptn=DPF-C70A%20W/
  1631. //ks電気の不要で不明なパラメータ削除==============================================================================
  1632. }else if(href.match(/(\?|\&)vcptn/)){
  1633. strUrl = setParams(href,["vcptn"],"del");
  1634.  
  1635. //http://shopap.lenovo.com/SEUILibrary/controller/e/jpweb/LenovoPortal/ja_JP/catalog.workflow:item.detail?GroupID=460&Code=0B47190&category-id=3FB2CEB78A0F49D18148731559AF4603&hide_menu_area=yes&cid=jp:affiliate:iVOuRL&&cid=jp:615300&
  1636. //正しいhttp://shopap.lenovo.com/jp/itemdetails/0B47190/460/3FB2CEB78A0F49D18148731559AF4603
  1637. //lenovo===============================================================================
  1638. //code:商品ID、category-id:商品カテゴリー、GroupID:不明(460固定?)
  1639. }else if(href.match(/https?:\/\/shopap.lenovo.com.*(\?|\&)Code=/)){
  1640. params = createParamArray(href); //パラメータ格納
  1641.  
  1642. strUrl = "http://shopap.lenovo.com/jp/itemdetails/" + params["Code"] + "/" + params["GroupID"] + "/" + (params["category-id"]||"");
  1643.  
  1644. //http://lohaco.jp/product/2690832/?sc_e=a_as_vc_ps_a_kakaku
  1645. //http://lohaco.jp/lksearch/?categoryLl=&categoryL=&categoryM=&categoryS=&searchWord=%E6%8E%83%E9%99%A4%E6%A9%9F&andOr=&itemExpl=0&resultType=&resultCount=&itemSpec=&sortDir=&sc_e=l_dt_ya_se_c_pc_58000000000_458653&ioneid=SI_692255038__1&sissr=1
  1646. //lohaco==============================================================================
  1647. }else if(href.match(/lohaco.jp.*(\?|\&)sc_e=/)){
  1648. strUrl = setParams(href,["sc_e","ioneid","gclid"],"del");
  1649.  
  1650. //niconico
  1651. }else if(href.match(/http:\/\/rd.nicovideo.jp\/cc/)){
  1652. if(href.match("nicotop_seiga")){
  1653. strUrl = "http://seiga.nicovideo.jp/seiga/" + href.replace(/.*nicotop_seiga\//,"");
  1654. }else if(href.match("cc_video_id=")){
  1655. strUrl = "http://www.nicovideo.jp/watch/" + getRedirectUrl(href,"cc_video_id");
  1656. }else if(href.match("cc_article_id=")){
  1657. strUrl = "http://ch.nicovideo.jp/article/ar" + getRedirectUrl(href,"cc_article_id");
  1658. }
  1659.  
  1660.  
  1661. //http://www.nissen.co.jp/sho_item/regular/6400/6400_12861.asp?book=6400&cat=other003/
  1662. //ニッセンの不要で不明なパラメータ削除==============================================================================
  1663. }else if(href.match(/nissen.co.jp.*\?/)){
  1664. strUrl = href.replace(/.asp.*$/,".asp");
  1665.  
  1666. //http://www.e-nls.com/access_prod.php?agency_id=af739546-o08&pcode=7713
  1667. //nls===============================================================================
  1668. }else if(href.match(/e-nls.com.*(\?|\&)agency_id/)){
  1669. params = createParamArray(href); //パラメータ格納
  1670. strUrl = setParams(href,["agency_id"],"del");
  1671.  
  1672. //http://comic.pixiv.net/works/59?ads=tx-w59
  1673. //pixiv=============================================================================
  1674. }else if(href.match(/pixiv.net.*(\?|\&)ads=/)){
  1675. strUrl = setParams(href,["ads"],"del");
  1676.  
  1677. //http://pt.afl.rakuten.co.jp/c/数字/_RTvrgj数字?url=http%3A%2F%2Fitem.rakuten.co.jp%2Fサイト名とか
  1678. //楽天==============================================================================
  1679. }else if(href.match(/rakuten.co(.jp|m)/)){
  1680.  
  1681. //iasアフィ
  1682. if(href.match(/ias.rakuten.co/)){
  1683. getUrl("expand","GET",obj,2);
  1684. return;
  1685. }
  1686.  
  1687. //http://item.rakuten.co.jp/jet-pc/4300_15/--hybrid--http://item.rakuten.co.jp/jet-pc/4300_15/&subid=&type=10&tmpid=11045
  1688. //楽天のリダイレクト除去
  1689. if(strUrl.match("--hybrid--http")){
  1690. strUrl = strUrl.replace(/.*--hybrid--http/,"http").replace(/(\?|\&)subid=.*$/,'');
  1691. }
  1692.  
  1693. //アフィリエイト除去
  1694. if(href.match(/pt.afl.rakuten.co.*(\?|\&)url=http/)){
  1695. strUrl = getRedirectUrl(href,"url");
  1696.  
  1697. }else if(href.match(/hb.afl.rakuten.co.*(\?|\&)pc=http/)){
  1698. strUrl = getRedirectUrl(href,"pc");
  1699. }
  1700.  
  1701. //http://rd.rakuten.co.jp/a/?R2=http://ranking.rakuten.co.jp/daily/gender=female/?scid=s_kwa_dsa&lsid=000006
  1702. if(href.match(/rd.rakuten.co.*(\?|\&)R2=http/)){
  1703. strUrl = getRedirectUrl(href,"R2");
  1704. }
  1705.  
  1706. //http://ecustom.listing.rakuten.co.jp/rms/sd/ecustom/mall?cl=FFB82E&nm=アフィサイトタイトル&bk=アフィサイトURL&hd=&aid=アフィID&sg=&g=ジャンル&v=2&p=0&s=2&sub=0&min=&max=&f=A&sw=検索ワード&nw=
  1707. //誰かのショッピングモール
  1708. if(strUrl.match(/(\?|\&)(\?|\&)(nm|bk|aid)=/)){
  1709. strUrl = setParams(strUrl,["nm","bk","aid"],"del");
  1710. }
  1711.  
  1712. //http://affiliate.rakuten.com/deeplink?id=xxxxxxxxxxx&mid=36342&murl=http%3A%2F%2Fwww.rakuten.com%2Fprod
  1713. //rakuten.comのアフィリエイト(linkshare)
  1714. if(href.match(/(\?|\&)murl=http/)){
  1715. strUrl = getRedirectUrl(href,"murl");
  1716. }
  1717.  
  1718. //http://hb.afl.rakuten.co.jp/hsc/0c7031f6.2eb3cef8.0c7031f5.c8f60840/
  1719. if(strUrl.match(/hb.afl.rakuten.co.jp/)){
  1720. getUrl("expand","GET",obj);
  1721. return;
  1722. }
  1723.  
  1724. //http://ecustom.listing.rakuten.co.jp/rms/sd/ecustom/mall?cl=ABA063&nm=WEBマーケティングブログ&bk=web-marketing.zako.org/&hd=web-marketing.zako.org/images/logo.gif&aid=03fec45a.d28a5cec&sg=0&sub=0&s=0&v=2&sw=ハリナックス ステープラー&f=A&nw=ノート タック GETPLUS&g=215783&min=&max=&p=1
  1725. //おそらくパラメータのscidはトラッカーでsc2idがアフィIDと思われるのでまとめて削除
  1726. //gはグループ?
  1727. if(strUrl.match(/\?/)){ strUrl = setParams(strUrl,["scid","sc2id","cad","nm","bk","hd","cl","aid","iasid"],"del"); }
  1728.  
  1729.  
  1730. //http://affiliate.suruga-ya.jp/modules/af/af_jump.php?user_id=227&goods_url=http%3A%2F%2Fwww.suruga-ya.jp%2Fgame.html
  1731. //駿河屋==============================================================================
  1732. }else if(href.match(/suruga-ya..*(\?|\&)goods_url=http/)){
  1733. strUrl = getRedirectUrl(href,"goods_url");
  1734.  
  1735. //ツクモのトラッカー==============================================================================
  1736. }else if(href.match(/tsukumo.co.jp.*(\?|\&)cid=/)){
  1737. strUrl = href.replace(/(\?|\&)cid=.*$/,"");
  1738.  
  1739. //http://lx03.www.tsutaya.co.jp/affiliate/index.pl?aspKind=004&retUrl=http://shop.tsutaya.co.jp/game/product/4521329189819/
  1740. //ツタヤのトラッカー==============================================================================
  1741. }else if(href.match(/tsutaya.co.jp\/affiliate.*(\?|\&)retUrl=/)){
  1742. strUrl = getRedirectUrl(href,"retUrl");
  1743.  
  1744. //yahoo=============================================================================================
  1745. }else if(href.match(".yahoo.")){
  1746.  
  1747. //ヤフオク外部リンク除外
  1748. if(href.match('/bouncer?')) return;
  1749.  
  1750.  
  1751. //http://rd.listing.yahoo.co.jp/o/shop/FOR=S1i43IwqjlY6D7pQe57uxmGLnstXXQo1xbvXhyeuVhgpSb9J7jjgtHs1.cDrqA--;/aclk;_ylt=A3JvdlJIaDFTX34AMlOkKdhE;_ylu=X3oDMTRkZTBza3F0BE9WTANOBFIDMQRhZGdyaWQDOTI1MTE5NDAxMwRjb3N0A29aLllOSHhLaFd2awRjcnR2aWQDMzA1NzM2NTc2NTMEZ2NsbnRpZANleHRlcm5hbC15ai1wYXJ0bmVyLWczLWFkLTAwMDA0MARvbW0DZQRzZWMDb3YtdG9wBHNwYWNlaWQDMTE1NTAxNzEyNA--?sa=l&ai=CbBULSGgxU8-OLNHB-QOe8IC4Br3T8t4EzYnri3KbnsnhUAgAEAEgiq3GGygCUOOCuL35_____wFgicvBhOwToAG7jvPZA8gBAakCobEkFGAGRT6qBCBP0PlWubvcavx2c1oHxugF_cK0CWlnZeNXj4yL7OLhyKoGAIAHrfGMJpAHAQ&sig=zOu8r1I75B6If2Q8VWzjkkTKFV4_a1yaiXW_2MQWxJ4geCFv5_y7/**http://www.yodobashi.com/ec/category/index.html%3Fword%3DHD598%26yad1%3De%26yad3%3Dhd598%26yad4%3D30573657653%26xfr%3Dyad%26utm_source%3Dyahoo%26utm_medium%3Dcpc%26utm_term%3DHD598
  1752. //yahoo広告 スポンサードサーチ
  1753. if(href.match(/\*\*http/)){
  1754. strUrl = strUrl.replace(/.*\/\*\*http(.*$)/i,'http$1' );
  1755. }
  1756.  
  1757. //http://rd.yahoo.co.jp/shopping/adwords/evt=71758/0bc80r6/*http://rd.yahoo.co.jp/shp/listing/ad/evt=86270/evj=0bc80r6/?http://store.shopping.yahoo.co.jp/eastnoboru/y00119.html
  1758. //yahoo広告(ヤフオクのカレンダー追加が文字化けのため調整中。
  1759. //アフィIDが含まれるかもわからないので一時凍結)→/ad/のURLのみに変更で様子見
  1760. if(href.match(/\/(adwords|ad)\/.*\?http/)){
  1761. strUrl = href.replace(/.*\/\?http/,"http");
  1762. }
  1763.  
  1764. //http://ard.yahoo.co.jp/SIG=159riqdlj/M=300839622.301691697.303279450.312101179/D=jp_auc_sjp/S=2084231756:SQB/_ylt=A7dPeB51J4VTtSoAerBM2jp8/Y=jp/EXP=1401242517/L=mQR8z7dPe_IFrZpbUytdIwJHdvB8IlOFJ3UACIjt/B=OsbWALdPhAs-/J=1401235317631220/SIG=12469dh71/A=301897421/R=0/*http://8190.co.jp/rd/rd.php?aid=yau_south_140526_3
  1765. //http://ard.yahoo.co.jp/SIG=159f1c93q/M=300842054.301694579.303279426.312441763/D=jp_auc_dir/S=2084000003:YSP/Y=jp/EXP=1401243943/L=7v8Go7dPF9kFrZpbUytdIwAjdvB8IlOFLQcABB.a/B=DVX9ALdPhAs-/J=1401236743377411/SIG=11j2mllb9/A=301897373/R=0/*http://card.yahoo.co.jp/campaign/
  1766. //yahoo広告
  1767. if(href.match(/\/\*http/)){
  1768. strUrl = strUrl.replace(/.*\/\*http/,"http");
  1769. }
  1770.  
  1771. //http://rd.ane.yahoo.co.jp/rd?ep=Zu8M71vT9mdngAGwggXc7XSnf9kuszvHyFc5TZbjl2TngsfCpch0pxpjcag_g.93uqTr2ZyM1ZNOlxs2LxSkPO1NdV.l3tpu9e6mhYL8G9wqOKRxhOJW4xj3XQKKxQvtqyqtUJKeifRur24Svte1UnOJ_0KWk0JT8NNDyGpvrdMGYw--&a=hY1Vje8_xD5MDIo7Jw--&s=FSi8Pp49lQ--&t=DpEYQJl6yQAvrid1soQ834am&C=9&D=1&I=&RI=b819b94c4e16443476c39e842f1bc244&S=124a3ff80a84&as=1&f=1&ff=0&fq_d=1,1,1,0&fq_m=3,3,3,0&fq_w=1,1,1,0&g=4&lp=http%3a//promotionalads.yahoo.co.jp/ads/listing04/%3fo=JP1000&maf=0&mid=0&o=9&p=9&qfid=&r=0&rfm=&sfid=0&skwid=0&F=0&tlid=0&u=detail.chiebukuro.yahoo.co.jp/qa/question_detail/
  1772. //yahoo広告 Yahoo!ディスプレイアドネットワーク(YDN)
  1773. if(href.match(/lp=http/)){
  1774. strUrl = getRedirectUrl(href,"lp");
  1775. }
  1776.  
  1777. //http://openuser.auctions.yahoo.co.jp/jp/show/auctions?userID=出品ユーザーID&u=アフィID
  1778. //yahooオークションのアフィトラッカーらしきもの
  1779. if(href.match(/auctions.yahoo..*(\?|\&)u=/)){
  1780. strUrl = setParams(href,["u"],"del");
  1781. }
  1782.  
  1783. if(strUrl.match(/rd.listing.yahoo.co.jp/)){
  1784. strUrl = getUrl("expand","GET",obj);
  1785. return;
  1786. }
  1787.  
  1788.  
  1789. /*必須のため除去不可。コメントアウト
  1790. //http://navi.auctions.yahoo.co.jp/jp/config/remember?aID=185394159&.crumb=g//sIm7P2rd&.done=http://auctions.search.yahoo.co.jp/search?ei=UTF-8&p=roventa&auccat=0&tab_ex=commerce&ei=UTF-8
  1791. //yahooのセキュリティ用のトラッカーというかリファラみたいなもの(個人情報確認のログインで必須のため除去不可)
  1792. //.doneというパラメータはリファラ的なものと思われる
  1793. if(href.match(/done=http/)){
  1794. strUrl = href.replace(/\&.done=http.*$/,"");
  1795. }
  1796. */
  1797.  
  1798.  
  1799. //http://www.yodobashi.com/ec/category/index.html?word=HD598&yad1=e&yad3=hd598&yad4=30573657653&xfr=yad
  1800. //http://www.yodobashi.com/ec/product/100000001001705391?kad1=1&xfr=kad
  1801. //ヨドバシ==============================================================================
  1802. }else if(href.match(/yodobashi.com.*ad1/)){
  1803. dataDB = ["xfr"];
  1804.  
  1805. params = createParamArray(strUrl); //パラメータ格納
  1806. for(key in params){
  1807. if(key.match(/^.ad\d/)){ dataDB.push(key); };
  1808. }
  1809. strUrl = setParams(strUrl,dataDB,"del");
  1810.  
  1811.  
  1812. //http://tracking.yourguide.co.jp/in/ya-575042/http://shopping.yourguide.co.jp/word/HD598/
  1813. //tracking.yourguide==============================================================================
  1814. }else if(href.match(/tracking.yourguide.co.jp.*\/http/)){
  1815. strUrl = href.replace(/.*http/,"http");
  1816.  
  1817. }else{
  1818.  
  1819. }
  1820.  
  1821.  
  1822.  
  1823.  
  1824.  
  1825. //同人系::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  1826.  
  1827. //http://www.akibain.com/afbc.php?afid=アフィリエイトID(数字)&url=d6/
  1828. //http://www.akibain.com/affiliate.php?afbid=商品ID&type=0&link=1&dir=1&afid=2
  1829. //アキバイン========================================================================
  1830. if(href.match(/akibain.com.*(\?|\&)afid=/)){
  1831. strUrl = setParams(href,["afid"],"del");
  1832.  
  1833. //http://www.akibain.com/afb.php?afbid=商品ID&type=4&link=0&dir=1(←カテゴリ)&afid=アフィリエイトID(数字)
  1834. //正しいURLhttp://www.akibain.com/d1(←カテゴリ)/?cls=cntdtl&cid=商品ID
  1835. if(href.match(/(\?|\&)afbid=/ && /(\?|\&)dir=/)){
  1836. params = createParamArray(href); //パラメータ格納
  1837. strUrl = "http://www.akibain.com/d" + params["dir"] + "/?cls=cntdtl&cid=" + params["afbid"];
  1838. }
  1839.  
  1840. //http://www.digiket.com/index/_data/AFID=dldoujin/
  1841. //http://www.digiket.com/work/show/_data/ID=ITM0099465/AFID=dldoujin/
  1842. if(href.match(/AFID=/)){
  1843. strUrl = href.replace(/AFID=.*\//,"");
  1844. }
  1845.  
  1846.  
  1847. //http://www.d-drops.com/?af_cd=AF12696
  1848. //d-drop(閉鎖→再開?)========================================================================
  1849. }else if(href.match(/d-drops.com.*(\?|\&)af_cd=/)){
  1850. strUrl = setParams(href,["af_cd"],"del");
  1851.  
  1852. //http://www.dd-style.com/index.php?ad=2041
  1853. //dd-Style========================================================================
  1854. }else if(href.match(/dd-style.com.*(\?|\&)ad=/)){
  1855. strUrl = href.replace(/(\?|\&)ad=.*$/,"");
  1856.  
  1857. //デジケット========================================================================
  1858. }else if(host.match("digiket.com")){
  1859. //http://www.digiket.com/p/aflink/_data/AFID=dldoujin/?URL=http%3A%2F%2Fwww.digiket.com%2Fcommon%2Faffiliate%2F
  1860. if(href.match(/(\?|\&)URL=http/)){
  1861. strUrl = getRedirectUrl(href,"URL");
  1862. }
  1863.  
  1864. //http://www.digiket.com/work/show/_data/ID=ITM0092020/AFID=k1040041/
  1865. if(href.match(/\/AFID=/)){
  1866. strUrl = href.replace(/\AFID=.*?\//,"");
  1867. }
  1868.  
  1869.  
  1870. //DLげっちゅ========================================================================
  1871. }else if(href.match(/getchu.com.*af/)){
  1872. //念のため先にアフィID消去
  1873. if(href.match(/(\?|\&)aff=/)){
  1874. strUrl = getRedirectUrl(href,"aff");
  1875. }
  1876.  
  1877. //http://order.getchu.com/r.php?aff=001560-01-00&t=2&gcd=D0025474
  1878. //正しいURLhttp://dl.getchu.com/index.php?action=gd&gcd=D0028859
  1879. if(href.match(/(\?|\&)gcd=/)){
  1880. params = createParamArray(href); //パラメータ格納
  1881. strUrl = "http://dl.getchu.com/index.php?action=gd&gcd=" + params["gcd"];
  1882. }
  1883.  
  1884. //正しいURLhttp://dl.getchu.com/index.php?action=mStatic&tno=StgPLog_NEW
  1885. //デコードURLhttp://order.getchu.com/r.php?aff=&url=http://dl.getchu.com/index.php?action=mStatic&tno=StgPLog_NEW+
  1886. //http://order.getchu.com/r.php?aff=000010-02-00&url=http%3A%2F%2Fdl.getchu.com%2Findex.php%3Faction%3DmStatic%26tno%3DStgPLog_NEW+
  1887. //URLリダイレクトの場合
  1888. if(href.match(/(\?|\&)url=http/)){
  1889. strUrl = getRedirectUrl(href,"url");
  1890.  
  1891. //不要な最後の+を削除
  1892. if(strUrl.match(/\+$/)){
  1893. strUrl = strUrl.slice(0,-1);
  1894. }
  1895. }
  1896.  
  1897. //http://image.getchu.com/api/geturl.phtml/id/769002/af/601/aftype/1/sid/851/url/soft.phtml-/?id=769002
  1898. //正しいURLhttp://www.getchu.com/soft.phtml?id=769002
  1899. if(href.match(/\/af\// && /\/aftype\// && /\/sid\//)){
  1900. strUrl = href.replace(/\/af\/.*?\//,"/");
  1901. strUrl = strUrl.replace(/\/aftype\/.*?\//,"/");
  1902. strUrl = strUrl.replace(/\/sid\/.*?\//,"/");
  1903. strUrl = "http://www.getchu.com/" + strUrl.replace(/.*\/url\/(.*?)-\//i,"$1");
  1904. }
  1905.  
  1906.  
  1907. //Dlsite==============================================================================
  1908. }else if(href.match(/.dlsite.com.*(\/|%2F)dlaf(\/|%2F)/)){
  1909.  
  1910. //正しいURL http://www.dlsite.com/maniax(←ジャンル)/work/=/product_id/RJ番号/
  1911. //http://www.dlsite.com/home/dlaf/=/aid/アフィID/url/http://www.dlsite.com/maniax/work/=/product_id/RJ番号.html/?medium=blog&program=on_sale&source=blogparts_v_ranking
  1912. //http://www.dlsite.com/maniax/work/=/product_id/RJ番号/?medium=blog&program=on_sale&source=blogparts_RankingParts&unique_op=af
  1913. //商品ページへのジャンプクッションを削除
  1914. if(href.match("/url/http")){
  1915. strUrl = decURI(strUrl.replace(/.*\/url\/http/,"http")).replace(/.html.*$/,"/");
  1916.  
  1917. //正しいURL http://www.dlsite.com/maniax/work/=/product_id/RJ番号/
  1918. //http://www.dlsite.com/maniax/dlaf/=/link/work/aid/アフィID/id/RJ番号.html
  1919. //http://maniax.dlsite.com/dlaf/=/link/work/aid/アフィID/id/RJ番号.html
  1920. //商品ページ
  1921. }else if(href.match(/id\/(R|B|V)J/) ){
  1922. strUrl=href.replace(/.html.*$/,"/").replace(/aid\/.*?\/id/,'=/product_id').replace(/\/dlaf\/=\/link/,'');
  1923.  
  1924. //正しいURLhttp://www.dlsite.com/maniax/circle/profile/=/maker_id/RG番号.html
  1925. //http://www.dlsite.com/maniax/dlaf/=/link/profile/aid/アフィID/maker/RG番号.html
  1926. //出版グループ
  1927. }else if(href.match(/maker\/(R|B)G/)){
  1928. strUrl=href.replace(/dlaf\/.*?\/maker/,'circle/profile/=/maker_id');
  1929.  
  1930. //http://www.dlsite.com/home/dlaf/=/aid/アフィID/link/top.html
  1931. //http://www.dlsite.com/maniax/dlaf/=/aid/アフィID/year/2014/month/5/day/31/link/news.html
  1932. //こうするとアフィリエイト消せるhttp://www.dlsite.com/maniax/dlaf/=/year/2014/month/5/day/31/link/news.html
  1933. //dlaf/=/ありでサイトに行くとトラッカーパラメータが付いちゃうけど肝心のアフィリエイトID無いのでおそらく無害
  1934. //正しいURLhttp://www.dlsite.com/maniax/new/=/year/2014/mon/5/day/31/
  1935. //その他
  1936. }else if(href.match("/aid/")){
  1937. strUrl = href.replace(/\/aid\/.*?\//,"/");
  1938. }
  1939.  
  1940. setLink(obj);
  1941. //CSS修正
  1942. dlsiteCSS(obj)
  1943.  
  1944. //Dlsite残り===========================================================================
  1945. }else if(host.match(/^https?:\/\/www.dlsite.com/)){
  1946. if(href.match(/\/\?/)){
  1947. strUrl=href.replace(/\/\?.*$/,"/");
  1948. setLink(obj);
  1949. dlsiteCSS(obj)
  1950. }
  1951.  
  1952.  
  1953. //DMM==============================================================================
  1954. }else if(host.match(/.dmm.co(m|.jp)/)){
  1955.  
  1956.  
  1957. if(href.match("/affi_id=")){
  1958. strUrl = href.replace(/(.*?\/)affi_id=.*?($|\/(.*$))/,"$1$3");
  1959.  
  1960. //http://dlsoft.dmm.co.jp/detail/商品ID/ab=3c65Bc7XJ9//fnscar-001(アフィID)
  1961. //http://www.dmm.co.jp/netgame_s/ゲームID/danmitsu-036(アフィID)
  1962. //http://www.dmm.co.jp/digital/videoa/-/list/=/article=maker/id=動画番号/affiliate-990
  1963. }else if(href.match(/^https?:\/\/dlsoft.dmm./) || href.match(/\/netgame_s\//)){
  1964. strUrl = href.replace(/(.*?\/(detail|netgame_s)\/.*?\/).*/,"$1");
  1965.  
  1966. //http://ad.dmm.com/ad/p/r?_site=2287&_article=3472&_link=32470&_image=32512&_lurl=http://www.dmm.co.jp/mono/pcgame/-/detail/=/cid=746apc10797/?/tag=1
  1967. }else if(href.match(/(\?|\&)_lurl=/)){
  1968. strUrl=decURI(href.replace(/.*_lurl=/,""));
  1969.  
  1970. //http://www.dmm.co.jp/ppm/=/_jloff=1/123d-006
  1971. //http://www.dmm.co.jp/digital/doujin/=/_jloff=1/doujin-001
  1972. //http://www.dmm.com/rental/-/detail/=/cid=000_384/_jloff=1/
  1973. //http://www.dmm.com/digital/video/mondo/moroyama_porori/index_html/=/ch_navi=/jloff-001
  1974. }else if(href.match(/(_jloff=|jloff-)/)){
  1975. strUrl=href.replace(/\/(_jloff|jloff-)=.*$/i,'/');
  1976.  
  1977. //http://www.dmm.co.jp/dc/doujin/-/list/=/article=maker/id=商品IDらしき/アフィリエイトID
  1978. //http://www.dmm.co.jp/mono/book/-/detail/=/cid=商品IDらしき/アフィリエイトID
  1979. //http://www.dmm.co.jp/mono/book/-/detail/=/cid=商品IDらしき/sort=英文字/page=数字/アフィリエイトID
  1980. }else if(href.match(/\/c?id=.*\//)){
  1981.  
  1982. var dmmParams = href.replace(/.*\/c?id=.*?\/(.*$)/i,"$1").split("/"); //パラメータ(複数)
  1983. var dmmAffi = ""; //アフィID
  1984.  
  1985. //アフィリエイトIDかどうかURLを「/」で区切って調べる()
  1986. for(var j=0; j < dmmParams.length; j++) {
  1987. if(!dmmParams[j].match("=")
  1988. && !dmmParams[j].match(/^#/) && !dmmParams[j].match(/^\?/)){ //ページ内ショートカットリンクなどは除外
  1989. dmmAffi = dmmParams[j];
  1990. if(dmmAffi != "") break;
  1991. }
  1992. }
  1993.  
  1994. //アフィID削除
  1995. if(dmmAffi != ""){ //「レビューを見る」などのショートカット除外
  1996.  
  1997. strUrl = href.replace("/" + dmmAffi,'');
  1998.  
  1999. }
  2000.  
  2001. //http://www.dmm.co.jp/lp/game/walkure/index02_html/=/navi=none/nijisoku-001
  2002. }else if(href.match(/\/\=\//)){
  2003. var tmpArray;
  2004. strUrl = href;
  2005.  
  2006. tmpArray = href.replace(/.*\/\=\//,"");
  2007. tmpArray = tmpArray.split("/");
  2008.  
  2009. if(tmpArray.length == 0) return;
  2010.  
  2011. for(var dm=0;dm<tmpArray.length;dm++){
  2012. if(!tmpArray[dm].match(/\=/)){ strUrl = strUrl.replace(tmpArray[dm],""); }
  2013. }
  2014. if(strUrl == href) return;
  2015.  
  2016. //dmmスマホ
  2017. }else if(host.match(/sp.dmm.co.jp/)){
  2018. //http://sp.dmm.co.jp/mono/detail/index/shop/dvd/cid/h_139doks304/momo1210-003
  2019. if(href.match(/\/cid\//)){
  2020. strUrl = href.replace(/(.*\/cid\/.*?\/).*/,"$1");
  2021.  
  2022. //http://sp.dmm.co.jp/lp/freegame/p05/nijisoku-001
  2023. }else if(href.match(/freegame\/p/)){
  2024. strUrl = href.replace(/(.*\/freegame\/.*?\/).*/,"$1");
  2025. }
  2026. }
  2027.  
  2028. //http://www.dmm.co.jp/digital/videoa/アフィ名-990
  2029. if(!href.match(/c?id=/) && strUrl.match(/-99\d/)){
  2030. strUrl = strUrl.replace(/(.*\/)[a-zA-Z0-9]+-99\d/,'$1');
  2031. }
  2032.  
  2033. if(strUrl.match(/^(https?\:\/\/book.dmm.co.jp\/detail\/.*?)\/.*/)){
  2034. strUrl = RegExp.$1;
  2035. }
  2036.  
  2037. //残るパラメータ削除
  2038. strUrl = setParams(strUrl,["af","tag"],"del");
  2039.  
  2040. //ぎゅっと==============================================================================
  2041. }else if(href.match(/gyutto.com.*\/af-/)){
  2042.  
  2043.  
  2044. //gyutto.com/book/af-1299/b-61/aftype-2/(←最後のスラッシュが無いURLもあるので注意)
  2045. if(href.match(/aftype.*\//)){
  2046. strUrl = href.replace(/\/af-.*aftype.*?\//,"/");
  2047.  
  2048. //http://gyutto.com/cart/af-9256/aftype-1?action=add&id=104409&item_price_id=152819
  2049. //正しいURLhttp://gyutto.com/cart/?action=add&id=104409&item_price_id=152819
  2050. }else if(href.match(/(\?|\&)id=/ && /(\?|\&)item_price_id/)){
  2051. strUrl = href.replace(/af-.*\?/,"?");
  2052.  
  2053. //http://gyutto.com/af-9878(←アフィリエイトID)/search/search_list.php?prePage=&action=sort&genre_id=20687&mode=search&sub_category_id=16&search_item_search_id=&set_category_flag=1&stype=new
  2054. }else if(href.match(/\/af-.*?\//) && !href.match("aftype")){
  2055. strUrl = href.replace(/\/af-.*?\//,"/");
  2056.  
  2057. }else{
  2058. strUrl = href.replace(/\/af-.*$/,"");
  2059. }
  2060.  
  2061.  
  2062. //http://gyut.to/category.phtml?afid=767-T&item=115684
  2063. //修正http://gyut.to/item115684
  2064. //その後飛ぶhttp://gyutto.com/i/item115684
  2065. //ぎゅっと==============================================================================
  2066. }else if(host.match("gyut.to")){
  2067. if(href.match(/(\?|\&)afid=/ && /(\?|\&)item=/)){
  2068. params = createParamArray(href); //パラメータ格納
  2069. strUrl = "http://gyutto.com/i/item" + params["item"];
  2070. }
  2071.  
  2072.  
  2073. //http://www.melonbooks.com/index.php?main_page=affi_go&affi_url=http%3A%2F%2Fwww.melonbooks.com%2Findex.php%3Fmain_page%3Dindex%26age%3D1%26category%3D0&affi_id=doujin
  2074. //メロンブックス==============================================================================
  2075. }else if(host.match("melonbooks.com")){
  2076. if(href.match(/(\?|\&)affi_url=/)){
  2077. strUrl = getRedirectUrl(href,"affi_url");
  2078. }
  2079. //http://www.melonbooks.com/index.php?main_page=product_info&products_id=IT0000159969#.U4nnw1FQJUM.twitter
  2080. if(href.match("#.")){
  2081. strUrl = href.replace(/#\..*$/,"");
  2082. }
  2083.  
  2084. //http://market.surpara.com/go/?IID=商品ID&AFID=アフィリエイトID
  2085. //http://market.surpara.com/go/?AFID=アフィリエイトID&IID=商品ID
  2086. //サーパラ==============================================================================
  2087. }else if(href.match(/surpara.com.*(\?|\&)AFID/)){
  2088. strUrl = setParams(href,["AFID"],"del");
  2089.  
  2090. //その他::::::::::::::::::::::::::::::::::::::::::::::::::::::::
  2091. }else{
  2092. }
  2093.  
  2094.  
  2095. //スマホ関連(無駄かもしれないけど余分なパラメータ削除)-----------------------------------------
  2096.  
  2097. //http://appdriver.jp/s/smart-c/click?digest=ff3e42b83eea658736cade80fd6c0a7faaf447484fcdad0d00acf253a2a4c23d&campaign_id=17571&identifier=2w4olVtC
  2098. //app-adforce====================================================================
  2099. if(href.match("appdriver.jp/s/")){
  2100. strUrl = setParams(strUrl,["identifier"],"del");
  2101.  
  2102. //http://spnet33.i-mobile.co.jp/ad_link.ashx?pid=26079&asid=184265&advid=837756&ctid=2&vh=9eee599e712138198a3a1ea8b5f134f6
  2103. //アイモバイルi-mobile.co.jp=======================================================
  2104. }else if(href.match(/^https?:\/\/spnet.*.i-mobile.*(\?|\&)pid=/)){
  2105. getUrl("expand","GET",obj);
  2106. return;
  2107.  
  2108. //http://javhighquality.blog.fc2.com/blog-entry-18139.html?sp
  2109. }else if(href.match(/javhighquality.blog.fc2.com\/.*html\?(all|sp)/)){
  2110. strUrl = href.replace(/\?(all|sp)/,"");
  2111.  
  2112. //その他:::::::::::::::::::::::::::::::::::::::::::::::::::::
  2113. }else{
  2114. }
  2115.  
  2116.  
  2117. //海外アフィサイト関連(無駄かもしれないけど余分なパラメータ削除)-----------------------------------------
  2118.  
  2119. //http://scripts.affiliatefuture.com/AFClick.asp?affiliateID=306800&merchantID=6286&programmeID=17357&mediaID=141595&tracking=Ebsetphotos.com&url=
  2120. //http://scripts.affiliatefuture.com/AFClick.asp?merchantID=99999999&programmeID=17357&mediaID=999999999&tracking=
  2121. //affiliate future(海外)=================================================================
  2122. //programmeIDは残す
  2123. if(href.match(/affiliatefuture.com.*(\?|\&)affiliateID=/)){
  2124. if(href.match(/(\?|&)url=http/)){
  2125. strUrl = getRedirectUrl(href,"url");
  2126. setLink(obj);
  2127. return;
  2128. }
  2129.  
  2130. // strUrl = setParams(href,["merchantID","mediaID"],"99999999");
  2131. strUrl = setParams(strUrl,["tracking"],"");
  2132. strUrl = setParams(strUrl,["url"],"del");
  2133.  
  2134.  
  2135. //http://affiliates.jlist.com/click/4721?url=http://www.jlist.com/product/PRE3657
  2136. //Affiliate jlist(海外系)==============================================================================
  2137. }else if(host.match("affiliates.jlist.com")){
  2138. if(href.match(/(\?|\&)url=http/)){
  2139. strUrl = getRedirectUrl(href,"url");
  2140. }
  2141.  
  2142. //http://www.awin1.com/cread.php?awinmid=5618&awinaffid=!!!id!!!&clickref=&p=http%3A%2F%2Fwww.okadirect.com%2Foutlet%2F
  2143. //Affiliate Window(海外系)==============================================================================
  2144. }else if(host.match("awin1.com")){
  2145. if(href.match(/(\?|\&)p=http/)){
  2146. strUrl = getRedirectUrl(href,"p");
  2147.  
  2148. //https://www.awin1.com/awclick.php?mid=1074&id=176917
  2149. }else if(href.match(/(\?|\&)id=/)){
  2150. strUrl = setParams(href,["id"],"del");
  2151. }
  2152.  
  2153. //http://affiliate.buy.com/deeplink?id= & mid = & murl =
  2154. //buy.com(linkshare)=====================================================================
  2155. }else if(href.match(/.buy.com.*(\?|\&)murl=http/)){
  2156. strUrl = getRedirectUrl(href,"murl");
  2157.  
  2158. //http://www.cdjapan.co.jp/aff/click.cgi/PytJTGW7Lok/4759/A013611/goods%2Fgoods_detail.html?KEY=NEOGDS-106499
  2159. //正しいhttp://www.cdjapan.co.jp/product/NEOGDS-106499
  2160. //cdJapan(海外)==========================================================================
  2161. }else if(href.match(/www.cdjapan.co.jp\/aff\//)){
  2162. params = createParamArray(href); //パラメータ格納
  2163.  
  2164. if(params["KEY"] != ""){
  2165. strUrl = href.replace(/\/aff\/.*/,"/product/") + params["KEY"];
  2166. }
  2167.  
  2168. //http://www.cdjapan.co.jp/cgi-bin/affclick.cgi?KEY=&to=http%3A%2F%2Fwww.cdjapan.co.jp%2Fdetailview.html&click=59cTi%2FH.dYDAsTAqe1uaTO5Pa8WB&is_neolog=0
  2169. //cdJapan(海外)==========================================================================
  2170. }else if(href.match(/www.cdjapan.co.jp\/cgi-bin\/affclick.cgi.*(\?|\&)to=http/)){
  2171. strUrl = getRedirectUrl(href,"to");
  2172.  
  2173. //http://www.clixgalore.com/PSale.aspx?BID=33228&AfID=181601&AdID=4685&LP=www.winemakerschoice.com.au
  2174. //clixgalore(海外系アフィ)===============================================================
  2175. }else if(href.match(/clixgalore.com.*(\?|\&)LP=[a-zA-Z]/)){
  2176. strUrl = getRedirectUrl(href,"LP");
  2177. if(!strUrl.match(/^http/)){
  2178. strUrl = "http://" + strUrl;
  2179. }
  2180.  
  2181. //http://www.jdoqocy.com/click-7474779-10676026?url=http%3A%2F%2Fwww.disneystore.com%2Ftransfer%2F224510%2Ftees-tops-shirts-clothes-country-bear-jamboree-attraction-poster-tee-for-adults-limited-availability%2Fmp%
  2182. //http://www.tkqlhce.com/click-7474779-10676026?url=http%3A%2F%2Fwww.disneystore.com%2Ftransfer%2F224510%2Ftees-tops-shirts-clothes-country-bear-jamboree-attraction-poster-tee-for-adults-limited-availability%2Fmp%2F1356296%2F1000228%2F%3FCMP%3DAFL-AffLSGen%26att%3DLSGenAffl&cjsku=7505055880490M
  2183. //Commission Junction(海外)==============================================================
  2184. //リダイレクト後に気休め程度に修正
  2185. }else if(href.match(/(jdoqocy.com | tkqlhce.com)/)){
  2186. if(href.match(/(\?|\&)url=http/)){
  2187. strUrl = getRedirectUrl(href,"url");
  2188.  
  2189. //http://www.jdoqocy.com/click-7474779-10676026
  2190. }else{
  2191. strUrl = href.replace(/\/click-.*?-/,"/click-0-");
  2192. }
  2193.  
  2194. //http://cj.dotomi.com/pb115gv32L/v16/KKMNMOQJ/J/J/J/J?w=d%3C%3Cq22y%3A%2F%2F555.smxzxl7.lxv%3AH9%2Flurlt-9-AACDCEG9%3C%3CP%3Cq22y%3A%2F%2F555.smxzxl7.lxv%2F%3C
  2195. //Commission Junction(海外)==============================================================
  2196. }else if(href.match(/dotomi.com.*\?/)){
  2197. if(href.match(/rurl=http/)) strUrl = getRedirectUrl(href,"rurl");
  2198. else strUrl = href.replace(/\?.*$/,"");
  2199.  
  2200.  
  2201. //http://www.s2d6.com/x/?x=c&z=s&v=736781&t=http%3A%2F%2Fitunes.apple.com%2Fau%2Falbum%2Fborn-this-way-bonus-track%2Fid438662372%3Fuo%3D4%26partnerId%3D1002
  2202. //DGM PRO===========================================================================
  2203. }else if(href.match(/s2d6.com\/x\//)){
  2204. if(href.match(/(\?|&)t=http/)){
  2205. strUrl = getRedirectUrl(href,"t");
  2206. }
  2207.  
  2208. //esellerate(海外系)====================================================================================
  2209. //共通に統合
  2210.  
  2211. //http://track.moreniche.com/hit.php?w=245362&s=256
  2212. //MoreNiche(海外系)====================================================================================
  2213. }else if(href.match(/track.moreniche.com.*(\?|\&)w=/)){
  2214. strUrl = setParams(href,["w"],"del");
  2215.  
  2216. //http://track.omguk.com/?AID=573874&MID=519512&PID=11285&CID=4148223&CRID=62355&WID=50210
  2217. //Online Media Group(海外)=======================================================================
  2218. //AIDがアフィPIDがページでどちらも消せない。飛んだあとのページを修正して対応
  2219. //CRIDは画像URLっぽい
  2220. }else if(href.match(/track.omg(uk|2|.*).com.*WID=/)){
  2221. strUrl = setParams(href,["MID","CID","WID"],"del");
  2222.  
  2223. //http://www.mydeal.com.my/travel/?a_aid=1234567891
  2224. //Online Media Group(海外)=======================================================================
  2225. }else if(href.match(/mydeal.com.my.*(\?|\&)a_aid=/)){
  2226. strUrl = setParams(href,["a_aid"],"del");
  2227.  
  2228.  
  2229. //http://www.paidonresults.net/c/37645/1/876/0
  2230. //paid on results(海外)==================================================================
  2231. }else if(href.match(/paidonresults.net\/c\//)){
  2232. strUrl = href.replace(/(paidonresults.net\/c\/).*?\//,"$1" + "9999999999/");
  2233.  
  2234. //http://secure.strawberrynet.com/cjPage.aspx?url=http%3A//us.strawberrynet.com/new-customer/
  2235. //secure.strawberrynet?海外なのでよくわかんないけどCommission Junctionから飛んだ
  2236. }else if(href.match(/secure.strawberrynet.com.*(\?|\&)url=http/)){
  2237. strUrl = getRedirectUrl(href,"url");
  2238.  
  2239. //https://www.shareasale.com/r.cfm?u=841156&b=234786&m=27601&afftrack=&urllink=www%2Eticketfly%2Ecom%
  2240. //shareasale(海外)=============================================================
  2241. //urllinkの指定がないものもあったけど、修正不可能だった(パラメータuとmを自分の物に差し替えれば行けるみたい)
  2242. //b=本来のURL、u=アフィリエイトID、m=アフィリエイトIDと紐づいている何かの数値
  2243. }else if(href.match(/shareasale.com.*(\?|\&)urllink=/)){
  2244. strUrl = getRedirectUrl(href,"urllink");
  2245.  
  2246. if(strUrl != ""){
  2247. if(strUrl.match(/^http/)){
  2248. // setLink(obj);
  2249. }else{
  2250. strUrl = "http://" + strUrl;
  2251. }
  2252. }
  2253.  
  2254. //http://clkuk.tradedoubler.com/click?p=21874&a=2212750&g=21225632&epi=bdpcsdbpcuk2712
  2255. //Tradedoubler(海外系)===============================================================
  2256. }else if(host.match(/tradedoubler.com\//)){
  2257. //pとaは必須。gがアフィっぽい
  2258. if(href.match("g=")){
  2259. strUrl = setParams(href,["g","epi"],"del");
  2260. }
  2261.  
  2262. //http://solutions.tradedoubler.com/redirect/expedia/?td_program_id=21874&AFFCID=expe.uk.001.000.2212750.0&cuid=e61021eaf3ce284c164782552a09e100&AFFLID=&url=http%3A%2F%2Fwww.expedia.co.uk
  2263. if(href.match(/(\?|\&)url=http/)){
  2264. strUrl = getRedirectUrl(href,"url");
  2265. }
  2266.  
  2267. //http://track.webgains.com/click.html?wgprogramid=5586&wgcampaignid=%5E%5E%5Ecampaign_id%5E%5E%5E&wgtarget=http://track.webgains.com/click.html?wgcampaignid=%5E%5E%5Ecampaign_id%5E%5E%5E&wgprogramid=5586&wgtarget=http://www.identitydirect.co.uk/my-special-christmas-adventure-big.html?mid=13064&utm_source=webgains&utm_medium=affiliate&utm_campaign=13064
  2268. //webgains(海外)====================================================================
  2269. }else if(href.match(/track.webgains.com.*(\?|\&)wgtarget=http/)){
  2270. strUrl = getRedirectUrl(href,"wgtarget");
  2271.  
  2272. //http://ad.zanox.com/ppc/?12621111C1452709100T&ULP=http%3A%リダイレクト先
  2273. //Zanox(海外)===============================================================
  2274. }else if(href.match(/ad.zanox.com.*(\?|\&)ULP=http/)){
  2275. strUrl = getRedirectUrl(href,"ULP");
  2276.  
  2277. //http://1006-ant.conversive.nl/in/?c_id=1006&n_id=40&l_id=0&a_id=21771&aff_id=153289&aff_x=444671%3A%3A153289%3A%3A%3A%3A%3A%3A1408947807&pu=http%3A%2F%2Fwww.bobshop.nl%2Fnl%2Fpersoonlijke-verzorging%2Fvoor-hem%2Fscheerapparaten%2Fphilips%2Frq1175-sensotouch-scheerapparaat%2Fp45611%253Fref%253Dconversive&ant_sid=MF5zMGd2NTZoZnFsbzY2NDd1ZjFmc2ZvaWlidTQyZHA1bw%3D%3D
  2278. //Zanox(海外)===============================================================
  2279. }else if(href.match(/ant.conversive.nl.*(\?|\&)aff_.*=/)){
  2280. if(href.match(/(\?|&)pu=http/)){ strUrl = getRedirectUrl(href,"pu");
  2281. }else{
  2282. strUrl = setParams(href,["aff_id=","aff_x"],"del");
  2283. }
  2284.  
  2285. //http://r.refinedads.com/bs-mapping.php?v=z1&aid=3814&oid=1031&zanpid=1916947465651987456&userid=1021583&url=http%3A%2F%2Fwww3.base.de%2Fads%3Frt%3D8%26et%3D16%26i%3D63027%26se%3Dp%26cs%3D5044%26ev%3D[MEDIACODE]%26userid%3D1021583
  2286. //Zanox(海外)===============================================================
  2287. }else if(href.match(/refinedads.com.*(\?|\&)url=http/)){
  2288. strUrl = getRedirectUrl(href,"url");
  2289.  
  2290. }else{
  2291.  
  2292. }
  2293.  
  2294.  
  2295.  
  2296.  
  2297. //共通トラッカー系(トラッカー専門系)---------------------------------------------------------------------
  2298.  
  2299. //行動分析系::::::::::::::::::::::::::::::::::::::::::::::::
  2300.  
  2301. //http://www.suruga-ya.jp/database/107100001000.html?utm_source=coneco&utm_medium=CPC&utm_campaign=kakaku_new&i4c=190&i4a=5
  2302. //http://www.caravan-yu.com/shop/g/g4905524811384/?utm_source=kakaku.com&utm_medium=priceComparison&utm_campaign=kakaku.com
  2303. //http://p.tl/6bXQ?utm_content=bufferd0045
  2304. //google ユニバーサルアナリティクス
  2305. //utm_source,,utm_campaign,utm_medium,utm_content
  2306. if(href.match(/(\?|\&)utm_/)){
  2307. if(href.match(/utm_[a-z]/)){
  2308. strUrl = href.replace(/(\?|\&)utm_.*$/,"");
  2309. }
  2310.  
  2311. }else if(host.match(/track.xmax.jp/)){
  2312. getUrl("expand","GET",obj);
  2313. }else if(href.match(/.*(\/ref\/\d+\/affiliate_banner_id\/\d+)/)){
  2314. strUrl = href.replace(RegExp.$1,'');
  2315.  
  2316. }
  2317.  
  2318.  
  2319. //クッション::::::::::::::::::::::::::::::::::::::::::::::::::::
  2320.  
  2321.  
  2322. //2ch==============================================================================
  2323. if(href.match(/((www\d?\.|)(ime|nun).(nu|st)\/\??|jbbs\.shitaraba\.net\/.*\?url=|jump.2ch.net\/\?|n2ch.net\/x\?u=|pinktower.com\/|2ch.io\/|l.moapi.net\/|t.2nn.jp\/|.*\/bbs\/link\.cgi\?URL=|fast.io\/)/i)){
  2324. strUrl=decURI(href.replace(/(h?ttps?):\/\/((www\d?\.|)(ime|nun).(nu|st)\/\??|jbbs\.shitaraba\.net\/.*\?url=|jump.2ch.net\/\?|n2ch.net\/x\?u=|(www.)?pinktower.com\/\??|2ch.io\/|.*l.moapi.net\/|t\.2nn\.jp\/|.*\/bbs\/link\.cgi\?URL=|fast.io\/)+/ig,"$1://").replace(/(h?ttps?:\/\/)+(h?ttps?)/img,"$2"));
  2325.  
  2326.  
  2327. //http://route5.org/?q=http://www.kincho.co.jp/wnew/200903/liquid_cordless/index.html
  2328. //READ2CH
  2329. }else if(href.match(/route5.org\/\?q=/)){
  2330. strUrl = getRedirectUrl(href,"q");
  2331.  
  2332. //http://bubjs.com/http://www.4gamer.net/games/106/G010649/20140305012/
  2333. //Rちゃんねる==============================================================================
  2334. }else if(href.match(/bubjs.com\/http/)){
  2335. strUrl = href.replace(/https?:\/\/bubjs.com\/http/,"http");
  2336.  
  2337. //http://r2jav.com/download-links/http://www.datafile.com/d/TVRVek5UWXpORGsF9/enkou55_113314.part1.rar
  2338. }else if(href.match(/download-links\/http/)){
  2339. strUrl = href.replace(/.*\/download-links\/http/,"http");
  2340.  
  2341. //http://www.sexyvideos.co/go?a%3A
  2342. }else if(href.match(/\/(go|out)\?a(%3A|:)/)){
  2343. getUrl("expand","GET",obj);
  2344. return;
  2345.  
  2346. //http://yeng.web.fc2.com/jump.html?url=http%3A%2F%2Fdetail.chiebukuro.yahoo.co.jp%2Fqa%2Fquestion_detail%2Fq1329427188
  2347. //http://chien.sytes.net/jump.html?url=http%3A%2F%2Fdetail.chiebukuro.yahoo.co.jp%2Fqa%2Fquestion_detail%2Fq13139039453
  2348. }else if(href.match(/\/jump.(html|php)\?url=http/)){
  2349. strUrl = decURI(href.replace(/.*(\?|&)url=http/,"http"));
  2350. }
  2351.  
  2352.  
  2353. //アフィリエイト系トラッカー::::::::::::::::::::::::::::::::::::::::::::::::
  2354. //※ショップ系独自のトラッカーなどはショップ別に追加
  2355.  
  2356. //http://adclr.jp/c/qojdmuij?pc_maist_buyer=2581&_cvpoint=811&_xuid=xuidx4677b0cf38x31c
  2357. //adclr=============================================================================
  2358. if(href.match(/adclr.jp.*\?/)){
  2359. strUrl = href.replace(/\?.*$/,"");
  2360.  
  2361. //http://www.flog.jp/w.php/http://www.nicovideo.jp/watch/sm番号?top_flog&num=3
  2362. //flog
  2363. }else if(href.match("www.flog.jp/w.php/http")){
  2364. strUrl = href.replace(/.*\/w.php\//,"").replace(/\?.*$/,"");
  2365.  
  2366. //http://www.mgstage.com/~アフィID/ppv/video/動画番号/
  2367. //http://www.mgstage.com/product/product_detail/動画番号/
  2368. //http://www.mgstage.com/ppv/video/動画番号/?aff=アフィID
  2369. //動画番号は「ローマ字-数字」形式?
  2370. //mgstage.com
  2371. }else if(href.match("www.mgstage.com")){
  2372. strUrl = href.replace(/\?aff=.*/,'');
  2373. if(href.match("/~")) strUrl = href.replace(/\~.*?\/video\//,'product/product_detail/');
  2374.  
  2375. //http://dms.netmng.com/si/CM/Tracking/TrackRedirect.aspx?siclientid=2520&redirecturl=http%3A%2F%2Fpt.afl.rakuten.co.jp%2Fc%2F001134ce.0fc3b133%2F_RTvrgj10000063%3Furl%3Dhttp%3A%2F%2Fitem.rakuten.co.jp%2Fdtc%2F4960999964164%2F&SICustTransType=9854&transactionamount=18&x1=2683&x2=01802080&x3=1130627295&x4=&jscript=0
  2376. //http://dms.netmng.com/si/CM/Tracking/TrackRedirect.aspx?siclientid=2520&redirecturl=http://www.amazon.co.jp/dp/B0019DPHVO/ref=asc_df_B0019DPHVO953949/?tag=coneco-ce-22&creative=9311&creativeASIN=B0019DPHVO&linkCode=asn&me=AN1VRQENFRJN5&SICustTransType=9854&transactionamount=52.6&x1=2828&x2=01109999&x3=1090909212&x4=8f001b2487cda54cc46496c3308668c1&jscript=0
  2377. //netmng==============================================================================
  2378. }else if(href.match(/dms.netmng.com.*(\?|&)redirecturl=http/)){
  2379. strUrl = getRedirectUrl(href,"redirecturl");
  2380.  
  2381. //http://textad.net:10001/cgi-bin/redir.cgi?uid=10473&bid=2&from=video&site=http://www.2ica.net/%E6%96%99%E9%87%91/
  2382. //textad
  2383. }else if(href.match(/textad.net.*(\?|&)site=http/)){
  2384. strUrl = getRedirectUrl(href,"site");
  2385.  
  2386. //zigsow
  2387. }else if(href.match(/zigsow.jp.*(\\\?|&)site=/)){
  2388. getUrl("expand","GET",obj);
  2389. return;
  2390.  
  2391. //その他::::::::::::::::::::::::::::::::::::::::::::::::
  2392.  
  2393. }else{
  2394. }
  2395.  
  2396.  
  2397.  
  2398.  
  2399.  
  2400. //最終修正(パラメータ削除系)=========================================================================
  2401. if(strUrl.match(/\?.*=/)){
  2402. //wapr,xadid 広告経由後にオリジナルURLの後につくらしい(trafficgate?)
  2403. //LSID Commission Junction(海外系)の残り?
  2404. //_xuid xaid追跡パラメータ削除
  2405. //waad 実験的に削除
  2406. //"banner_id","s_kwcid"onamae.comなどのパラメータ
  2407. //"agencyid","advid"affinetのパラメータ
  2408. strUrl = setParams(strUrl,["a_aid","a_bid","advid","affiliate_id","affiliate_type","affid","affuid","afid","AFID","agencyid",
  2409. "_bdadid","banner_id","bannerid","dmai","fbclid","jaehuid","LSID",
  2410. "partnerid","partnerId","s_kwcid","vos","waad","wapr","adcd","xadid","_xuid","sc_e"],"del");
  2411.  
  2412. //ad_codeは広告の精度をあげるらしいので削除
  2413. strUrl = setParams(strUrl,["ad_code","AD_CODE"],"del");
  2414.  
  2415. }
  2416.  
  2417. //http://dms.netmng.com/si/cm/tracking/clickredirect.aspx?sitrackingid=565231550&siclientid=7722&siadtrackid=31891032366&sinetwork=s&simobile=&sidevice=c
  2418. //http://track.searchignite.com/si/cm/tracking/clickredirect.aspx?sitrackingid=696296406&siclientid=9992&siadtrackid=42697278684&sinetwork=s&simobile=&sidevice=c
  2419. //パラメータsitrackingid以降除去(実験的実装)==============================================================================
  2420. if(href.match("sitrackingid")){
  2421. params = createParamArray(href); //パラメータ格納
  2422. strUrl = href.replace(/(.*sitrackingid).*$/i,'$1=') + params["sitrackingid"];
  2423. }
  2424.  
  2425.  
  2426. //http://ad.c-ats.jp/ad/p/r?_site=67&_article=74&_link=93&_image=93
  2427. //http://ad.maist.jp/ad/p/r?_site=10165&_loc=10450&_campaign=663&_article=5777&_link=34346&_image=35521&_deliver=1
  2428. //http://ad.dmm.com/ad/p/r?_site=9999999&_article=1052&_link=転送先のURL指定用の数字&_image=不明な数字
  2429. //http://app-adforce.jp/ad/p/r?_site=9364&_article=56674&_link=1731290&_image=1731291&suid=eae08ff6d51e68e81788caa37cd7eb80435272c7aa68bf6432373904dffe967c&sad=324379238
  2430. //最小構成(_linkが必要な場合もある?)http://app-adforce.jp/ad/p/r?_article=56674&_image=1731291
  2431. //DMM系か?_siteを消すと怒られる場合があるのでありえない大きい数字指定。_articleがURL指定=================
  2432. //残すパラメータ:"_article","_site"
  2433. //対策されたようで存在しない数値だとエラーに。よって対応不可
  2434.  
  2435.  
  2436. //最終修正ここまで===========================================================================
  2437.  
  2438. setLink(obj);
  2439. }catch(e){
  2440. GM_log("AKiller_mainCheck_Error:"+e);
  2441. }
  2442.  
  2443. clearTimeout(obj.timer);
  2444. objSet = obj = null;
  2445. }//mainCheckここまで
  2446.  
  2447.  
  2448.  
  2449.  
  2450. //==================================mainの共通ファンクション===============================================
  2451.  
  2452. //URLを変更&オリジナルURL追加
  2453. function setLink(obj,absFlg){
  2454. try{
  2455.  
  2456. //if(absFlg) obj.setAttribute("Akill_check","added_before")
  2457.  
  2458. if(Object.prototype.toString.call(obj).slice(8, -1).match(/(Text|Comment)/)
  2459. //checkedでももう一度確認する
  2460. || (obj.hasAttribute("Akill_check") && obj.getAttribute("Akill_check").match(/(before|Loading|killed$)/))
  2461. || (!absFlg && obj.innerHTML == '[Killer]')
  2462. ) return;
  2463.  
  2464. //ページ遷移を消しすぎてたら復元
  2465. if(href.match("#") && !strUrl.match("#") && !href.match(/#.*(\?|&)/)){
  2466. strUrl = strUrl + href.replace(/.*(#.*$)/i,"$1");
  2467. }
  2468.  
  2469. //特殊文字の修正
  2470. if(!strUrl.match(/\.css\?/)) strUrl = strUrl.replace(/amp;/gi,"");
  2471.  
  2472. //何もしない
  2473. //ループ防止用
  2474. if(decURI(decURI(href)) == strUrl || decURI(href) == strUrl || href == strUrl
  2475. //ページスクロール系は除外
  2476. || href.slice(-1) == "#"
  2477. //strUrlがおかしい数値
  2478. || strUrl == "" || strUrl == "http://" || href == strUrl
  2479. ){
  2480.  
  2481. //これ以上修正できない場合完了フラグを立てる
  2482. if(decURI(obj.href) == strUrl){
  2483.  
  2484. var flag = '';
  2485. if(obj.hasAttribute("Akill_check")){
  2486. flag = obj.getAttribute("Akill_check");
  2487. }
  2488. if(!flag.match('_checked'))obj.setAttribute("Akill_check",flag.replace(/_checking/igm,'') + "_checked");
  2489. }
  2490. //何もしない
  2491. return;
  2492. }
  2493.  
  2494.  
  2495. //"?"を消し過ぎた場合最初の&を?に戻す
  2496. if(strUrl.match("&") && !strUrl.match(/\?/)){
  2497. strUrl = strUrl.replace(/(.*?)&(.*=.*$)/i,"$1?$2");
  2498. }
  2499.  
  2500.  
  2501.  
  2502. //AREAタグの場合引き継ぎ必須?
  2503. var setCoords = "";
  2504. if(obj.hasAttribute("coords")){ setCoords = obj.getAttribute("coords") }
  2505.  
  2506. //imgタグがあった場合
  2507. var strHW = "";
  2508. var picArray = [];
  2509. var objPic = "";
  2510. if(obj.innerHTML.match(/(<img |<IMG )/)){
  2511.  
  2512. //solty designのAmazon Modern Rankingに対応
  2513. //元のリンクに高さと幅の設定があった場合変数にセットして後で復元
  2514. if(obj.hasAttribute("style")){
  2515. if(obj.getAttribute("style").match("height:")){
  2516. strHW = "height:" + obj.getAttribute("style").replace(/.*height:(.*?)\;.*$/i,"$1") + ";"
  2517. }
  2518. if(obj.getAttribute("style").match("width:")){
  2519. strHW += "width:" + obj.getAttribute("style").replace(/.*width:(.*?)\;.*$/i,"$1") + ";"
  2520. }
  2521. }
  2522.  
  2523. //noscriptタグ内にimgタグがあった場合このままだと何故かtextとして追加されるのでオブジェクトとしてimgを追加しなおす
  2524. if(obj.innerHTML.match(/<noscript/)){
  2525.  
  2526. var beforeNoscript = obj.getElementsByTagName("noscript")[0];
  2527. var objImg = beforeNoscript.getElementsByTagName("img");
  2528. if(beforeNoscript && objImg && objImg.length > 0){
  2529. for(var ii = 0;ii < objImg.length;ii++){
  2530. objPic = document.createElement("img");
  2531. objPic.src = objImg[ii].getAttribute("src");
  2532. objPic.alt = objImg[ii].getAttribute("alt");
  2533. objPic.style = objImg[ii].getAttribute("style");
  2534. picArray.push(objPic);
  2535. beforeNoscript.removeChild(objImg[ii]); //削除後、後でobjPicを追加
  2536. }
  2537. }
  2538. beforeNoscript = objImg = null;
  2539.  
  2540. }
  2541.  
  2542. //画像遅延ロードを無効化
  2543. var imgTmp = obj.getElementsByTagName("img");
  2544. if(imgTmp){
  2545. var typeSrc = ["data-original","data-src"];
  2546. typeSrc.forEach(function(srcName){
  2547. for(var imm=0;imm < imgTmp.length;imm++){
  2548. if(imgTmp[imm].hasAttribute(srcName))imgTmp[imm].src = imgTmp[imm].getAttribute(srcName);
  2549. }
  2550. });
  2551. }
  2552.  
  2553. }
  2554.  
  2555. //修正したリンク内に元のタグ内の要素を残す(imgなど)
  2556. var strTxt = obj.innerHTML;
  2557.  
  2558.  
  2559. //元のリンクの後に修正したリンクを追加
  2560. var domLink = document.createElement(obj.tagName);
  2561. domLink.href = strUrl;
  2562. domLink.rel = "noreferrer";
  2563. domLink.innerHTML = strTxt;
  2564.  
  2565. //属性の継承
  2566. var attr = obj.attributes;
  2567. var attrCheck = ["^class$","^style$","^id$","^data-","^target$"];
  2568.  
  2569. for(var at = 0;at < attr.length;at++){
  2570. attrCheck.forEach(function(attrData){
  2571. var regAttr = new RegExp(attrData,"i");
  2572. if(attr[at].name.match(regAttr)) domLink.setAttribute(attr[at].name, attr[at].value);
  2573. });
  2574.  
  2575. }
  2576.  
  2577. if(setCoords != ""){
  2578. domLink.setAttribute("coords",setCoords);
  2579. //AREAタグの場合、修正したリンクが最初の子ノードじゃないといけない
  2580. obj.parentNode.insertBefore(domLink, obj);
  2581. }else if(obj.nextSibling) obj.parentNode.insertBefore(domLink, obj.nextSibling);
  2582. else obj.parentNode.appendChild(domLink);
  2583.  
  2584. /*
  2585. //旧設定(noscriptタグ内だと要素ではなく文章になるので廃止予定の様子見)
  2586. var setTxt = '<' + obj.tagName
  2587. + ' coords="' + setCoords + '"'
  2588. + ' href="' + strUrl + '"'
  2589. + ' rel="noreferrer"'
  2590. + '>' + strTxt + '</' + obj.tagName + '>';
  2591. obj.insertAdjacentHTML('afterend', setTxt);
  2592. */
  2593.  
  2594. //元のリンクがaタグじゃなかった場合、aタグにしてノード修正
  2595. if(!obj.tagName.match(/^a$/i)){
  2596. var oldNode = obj;
  2597.  
  2598. var newNode = document.createElement('a');
  2599. newNode.href = oldNode.href;
  2600. newNode.innerHTML = oldNode.innerHTML;
  2601.  
  2602. oldNode.parentNode.replaceChild( newNode, oldNode );
  2603. newNode = null;
  2604. }
  2605.  
  2606. //ヤフオクはクラス名削除
  2607. if(location.host.match(/auctions.search.yahoo.co.jp/)) obj.removeAttribute("class");
  2608.  
  2609. var beforeCheck = obj.getAttribute("Akill_check");
  2610.  
  2611. //修正直前に修正済みという判定用フラグ追加
  2612. if(!obj.hasAttribute("Akill_check")){
  2613. obj.setAttribute("Akill_check","original_killed"); //最初のリンク
  2614. }else{
  2615. obj.setAttribute("Akill_check","killed");
  2616. }
  2617. //(※※注意!!!!!この間に処理を挟まない!!!!※※※)
  2618. obj.innerHTML = '[Killer]';
  2619. //(※※注意!!!!!この間に処理を挟まない!!!!※※※)
  2620. //修正直後に追加済みという判定用フラグ追加
  2621. domLink.setAttribute("Akill_check","added_checking");
  2622. // if(beforeCheck && beforeCheck.match(/added_before/)) domLink.setAttribute("Akill_check",beforeCheck);
  2623. // else domLink.setAttribute("Akill_check","added_checking");
  2624.  
  2625. //google image
  2626. if(location.host.match(/google\./) && location.href.match(/tbm=isch/) && obj.hasAttribute("jsaction")){
  2627. domLink.setAttribute("jsaction","str.hc;mousedown:str.hmd;mouseover:str.hmov;mouseout:str.hmou")
  2628. }
  2629.  
  2630.  
  2631.  
  2632. //AREAタグまたは要素内にimgタグがあった場合
  2633. if(setCoords != ""
  2634. || domLink.innerHTML.match(/(<img |<IMG )/)){
  2635.  
  2636. //元のリンクにCSS付加
  2637. obj.setAttribute("style", strStyle + 'position:absolute;');
  2638.  
  2639. //元のリンクにstyleで高さと幅の指定があった場合は上書き
  2640. if(strHW != "") domLink.setAttribute("style", strHW);
  2641.  
  2642. //noscriptタグ内にimgタグがあった場合の後処理
  2643. if(objPic){
  2644. var afterNoscript = domLink.getElementsByTagName("noscript")[0];
  2645. for(var pp=0;pp < picArray.length;pp++){
  2646. afterNoscript.appendChild(picArray[pp]);
  2647. }
  2648. afterNoscript = null;
  2649. }
  2650.  
  2651. //それ以外
  2652. }else{
  2653. //元のリンクにCSS付加
  2654. obj.setAttribute("style", strStyle + 'position:relative;');
  2655. }
  2656.  
  2657. var chk = '';
  2658. if(domLink.hasAttribute("Akill_check")) chk = domLink.getAttribute("Akill_check");
  2659.  
  2660.  
  2661. if(chk && !chk.match(/(_checked|killed|before)$/)) multi(domLink);
  2662.  
  2663.  
  2664. }catch(e){
  2665. // throw(e);
  2666. GM_log("AKiller_setLink:" + e);
  2667. }
  2668. // throw new Error();
  2669.  
  2670. obj = objPic = domLink = null;
  2671.  
  2672. }//setLinkここまで
  2673.  
  2674.  
  2675. //Dlsiteのリンク修正用CSS
  2676. function dlsiteCSS(obj){
  2677. if(href != strUrl){
  2678.  
  2679. //CSS付加
  2680. obj.setAttribute("style", 'height:auto;width:auto;float:left;position:absolute;z-index:' + zIndex + ';background:rgba(255,0,0,0.2);margin:0!important;padding:0!important;');
  2681. //画像埋め込みタイプ以外にCSS付加
  2682. if(!obj.nextSibling.innerHTML.match("src=")){
  2683. obj.nextSibling.setAttribute("style", "margin-left:55px;");
  2684. }
  2685. }
  2686. obj = null;
  2687. }
  2688.  
  2689.  
  2690.  
  2691.  
  2692. //===============================================================================================
  2693.  
  2694. //パラメータ削除
  2695. function setParams(url,name,flag){
  2696. try{
  2697. if(!name || name.length == 0 && !url.match(/\?/)){ return url; }
  2698.  
  2699. var tmpUrl = url;
  2700.  
  2701. for(var k=0; k < name.length; k++){
  2702. var params = createParamArray(tmpUrl); //パラメータ格納
  2703.  
  2704. if(!(name[k] in params)){ continue; }
  2705.  
  2706. var tmpReg;
  2707.  
  2708. //全部削除("?param=data" > "")
  2709. if(flag == "del"){
  2710. tmpReg = new RegExp("(\\?|&)" + name[k] + "=" + params[name[k]],'g');
  2711. tmpUrl = tmpUrl.replace(tmpReg,"");
  2712.  
  2713. //パラメータの数値変更((?param=999999))。""指定で数値だけ削除(?param=)
  2714. }else{
  2715. tmpReg = new RegExp(name[k] + "=" + params[name[k]]);
  2716. tmpUrl = tmpUrl.replace(tmpReg,name[k] + "=" + flag);
  2717. }
  2718.  
  2719. //"?"を消し過ぎた場合最初の&を?に戻す
  2720. if(tmpUrl.match("&") && !tmpUrl.match(/\?/)){
  2721. tmpUrl = tmpUrl.replace(/(.*?)&(.*=.*$)/i,"$1?$2");
  2722. }
  2723.  
  2724. }//for文ここまで
  2725.  
  2726. return tmpUrl;
  2727.  
  2728. }catch(e){
  2729. GM_log("AKiller_setParams:"+url + e);
  2730. return tmpUrl;
  2731. }
  2732. }
  2733.  
  2734.  
  2735. //Googleトラッカー除去==================================================================
  2736.  
  2737. function remTrack(node){
  2738.  
  2739. if(Object.prototype.toString.call(node).slice(8, -1).match(/(Text|Comment)/)
  2740. || ( !location.href.match(/^https\:\/\/www\.google\..*?\/search\?.*/) && !location.href.match(/^https?:\/\/shopping.yahoo.*/) )
  2741. ) return;
  2742.  
  2743. try{
  2744. if(Object.prototype.toString.call(node).slice(8, -1) != "HTMLDocument" && node.hasAttribute('onmousedown')){
  2745. node.removeAttribute('onmousedown'); return;
  2746. }
  2747.  
  2748.  
  2749.  
  2750. var resultLinks = document.evaluate('.//a[@onmousedown]', node, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
  2751.  
  2752. for (var l = 0; l < resultLinks.snapshotLength; l++){
  2753. var oldLink = resultLinks.snapshotItem(l); //検索結果のURL(Original URL)
  2754.  
  2755. if (oldLink.hasAttribute('onmousedown')) {
  2756. oldLink.removeAttribute('onmousedown');
  2757. }
  2758. }
  2759.  
  2760. }catch(e){
  2761. GM_log("AKiller_remTrack_Error:" + e);
  2762. }
  2763. node = null;
  2764. }
  2765.  
  2766.  
  2767. //url取得
  2768. function getUrl(pattern,type,obj,skip){
  2769.  
  2770. var chkFlg = '';
  2771. if(obj.hasAttribute("Akill_check")) chkFlg = obj.getAttribute("Akill_check");
  2772. if(chkFlg.match(/(Loading|killed|^Done)/)) return;
  2773.  
  2774. var url = obj.href;
  2775.  
  2776. if(obj.hasAttribute('Akill_URL') && obj.getAttribute('Akill_URL').match(/^http/)){
  2777. url = obj.getAttribute('Akill_URL');
  2778. }
  2779.  
  2780. //GM_xmlhttpRequestが非同期のため、その対応
  2781. if(!expDB[url] && !url.match(/(getlinkinfo.com|araishi.com)/)){
  2782. expDB[url] = ['',isToday()]
  2783.  
  2784. }else if(expDB[url] && !url.match(/http.*http/)){
  2785.  
  2786. checkTimer(obj,url);
  2787. obj = null;
  2788. return;
  2789. }
  2790.  
  2791. if(pattern == "expand" && !url.match(/(getlinkinfo.com|araishi.com|x-1.jp|^https?:\/\/bit\.ly.*\+$)/)){
  2792. if(!skip || skip == 2) url = getinfoURL + encodeURIComponent(url);
  2793. else if(skip == 3) url = araishiURL + encodeURIComponent(url);
  2794. else if(skip == 5) url = x1URL + encodeURIComponent(url);
  2795. }
  2796.  
  2797. obj.setAttribute("Akill_check","Loading");//スタートフラグセット
  2798.  
  2799. //url修正ここまで---------------------------------------
  2800.  
  2801. GM_xmlhttpRequest({
  2802. method: type,
  2803. url: url,
  2804. onload: function (res) {
  2805.  
  2806. var resTxt = res.responseText;
  2807. var expWEB = "";
  2808.  
  2809. if(type == "GET"){
  2810. if(pattern == "expand"){
  2811. var tmp,startUrl,finalUrl,beforeUrl,redirectNum;
  2812. beforeUrl = '';
  2813.  
  2814. //最初のURL展開
  2815. if(url.match(/getlinkinfo.com/)){
  2816. if(obj.getAttribute("AKill_ExpWEB") == "araishi"){
  2817. return;
  2818. }
  2819.  
  2820. resTxt = resTxt.replace(/[\r\n]/mg," ").replace(/.*(link-redirections.*?\<\/dd\>).*/i,'$1');
  2821.  
  2822. expWEB = "getlink";
  2823. startUrl = decURI(url.replace(getinfoURL,""));
  2824. var strGet = '<li><a href="(http.*?)"';
  2825. var regGetAll = new RegExp(strGet,"g");
  2826. var regGet = new RegExp(strGet,"i");
  2827. tmp = resTxt.match(regGetAll); //リダイレクト経路すべてのURL配列
  2828.  
  2829. if(tmp){
  2830. redirectNum = tmp.length;
  2831. finalUrl = tmp[redirectNum-1].replace(regGet,"$1"); //最後の要素
  2832.  
  2833. //リダイレクト最後の直前のURLを保存する
  2834. if(redirectNum > 1){
  2835. for(var gli=1;gli < tmp.length - 1;gli++){
  2836. beforeUrl += '|||||' + tmp[gli].replace(regGet,"$1");
  2837. };
  2838.  
  2839. obj.setAttribute("akill_BeforeURL", beforeUrl);
  2840. }
  2841.  
  2842. //何らかの原因でリダイレクト先に行けなかった場合
  2843. }else{ finalUrl = url;}
  2844.  
  2845. //次の展開がミスった場合
  2846. }else if(url.match(/araishi.com/)){
  2847. expWEB = "araishi";
  2848. startUrl = decURI(url.replace(araishiURL,""));
  2849. var strAraishi = '<td>(http.*?)<\/td>';
  2850. var regAraishiAll = new RegExp(strAraishi,"g");
  2851. var regAraishi = new RegExp(strAraishi,"i");
  2852. tmp = resTxt.match(regAraishiAll);
  2853.  
  2854. if(tmp){
  2855. redirectNum = tmp.length;
  2856. finalUrl = tmp[redirectNum-1].replace(regAraishi,"$1"); //最後の要素
  2857.  
  2858. if(redirectNum > 1){
  2859. for(var ara=0;ara < tmp.length - 1;ara++){
  2860. beforeUrl += '|||||' + tmp[ara].replace(regAraishi,"$1");
  2861. };
  2862. obj.setAttribute("akill_BeforeURL", beforeUrl);
  2863. }
  2864. //何らかの原因でリダイレクト先に行けなかった場合
  2865. }else{ finalUrl = url;}
  2866.  
  2867.  
  2868. //次の展開がミスった場合
  2869. }else if(url.match(/^http:\/\/x-1.jp\//)){
  2870.  
  2871. expWEB = "x1.jp";
  2872. startUrl = decURI(url.replace(x1URL,""));
  2873. var strx1 = '<tr><th>経路\\d<\/th><td>(http.*?)<\/td><\/tr>';
  2874. var regx1All = new RegExp(strx1,"g");
  2875. var regx1 = new RegExp(strx1,"i");
  2876. tmp = resTxt.match(regx1All);
  2877.  
  2878. if(tmp){
  2879. redirectNum = tmp.length;
  2880. finalUrl = tmp[redirectNum-1].replace(regx1,"$1"); //最後の要素
  2881.  
  2882. if(redirectNum > 1){
  2883. for(var x1j=1;x1j < tmp.length - 1;x1j++){
  2884. beforeUrl += '|||||' + tmp[x1j].replace(regx1,"$1");
  2885. };
  2886. obj.setAttribute("akill_BeforeURL", beforeUrl);
  2887. }
  2888. //何らかの原因でリダイレクト先に行けなかった場合
  2889. }else{ finalUrl = url;}
  2890.  
  2891. //bit.lyの展開
  2892. }else if(url.match(/^https?:\/\/bit.ly.*\+$/)){
  2893. expWEB = "bit.ly";
  2894. var info = resTxt.match(/var info = ({.*?})\;/);
  2895. if(!info){obj = null;return;}
  2896. info = JSON.parse(info[1]); //連想配列
  2897. startUrl = url.slice(0,-1);
  2898. finalUrl = info["long_url"];
  2899.  
  2900. //すべての展開がミスった
  2901. }else{
  2902. expWEB = "error";
  2903. GM_log("AKiller_expand_ALLError")
  2904. obj = null;
  2905. return;
  2906. }
  2907.  
  2908. obj.setAttribute("AKill_ExpWEB",expWEB); //最後に展開に使用したサービス
  2909.  
  2910. //何らかの原因でリダイレクト先に行けなかった場合
  2911. var regTmp;
  2912. if(finalUrl) regTmp = new RegExp(finalUrl + "$");
  2913. if(!finalUrl || finalUrl && (url.match(regTmp) || url == finalUrl || decURI(startUrl) == finalUrl)){
  2914.  
  2915. if(url.match(/getlinkinfo.com/)){
  2916. obj.setAttribute('Akill_URL',araishiURL + encodeURIComponent(startUrl));
  2917. }else if(url.match(/araishi.com/)){
  2918. obj.setAttribute('Akill_URL',x1URL + encodeURIComponent(startUrl));
  2919. }else if(url.match(/^http:\/\/x-1.jp/)){
  2920. //何故かbit.lyだけ展開できない場合があるのでbit.lyの公式展開サービス利用
  2921. if(url.match(/bit.ly/)){
  2922. obj.setAttribute('Akill_URL',decURI(startUrl) + "+");
  2923. }else{
  2924.  
  2925. obj.setAttribute('akill_check',"_checked");
  2926. obj.setAttribute('AKill_ExpWEB',"リダイレクト解除失敗");
  2927. return;
  2928. }
  2929. }else return;
  2930.  
  2931. obj.setAttribute("Akill_check","");//スタートフラグセット
  2932.  
  2933. getUrl("expand","GET",obj);
  2934. return;
  2935. }
  2936.  
  2937. //展開ミス
  2938. var txtTmp = '^(' + getinfoURL + '|' + araishiURL + '|' + x1URL + ')';
  2939. txtTmp = txtTmp.replace(/\?/g,'\\?');
  2940.  
  2941. regTmp = new RegExp(txtTmp);
  2942.  
  2943. if(finalUrl.match(regTmp)) return;
  2944. if(finalUrl.match("x-1.jp")) return;
  2945.  
  2946. //展開成功
  2947. obj.setAttribute('Akill_URL',finalUrl);
  2948. obj.setAttribute('Akill_check','Done');
  2949.  
  2950. if(beforeUrl && !beforeUrl.match(/^\|\|\|\|\|/)) beforeUrl = "|||||" + beforeUrl;
  2951.  
  2952. setDB(startUrl,finalUrl + beforeUrl);
  2953. multi(obj);
  2954. checkTimer(obj,startUrl);
  2955. obj = null;
  2956. return;
  2957. }
  2958.  
  2959.  
  2960. //短縮linkis
  2961. if(pattern == "linkis"){
  2962.  
  2963. var regLinkis = new RegExp('longUrl: "(http.*?)"');
  2964. var setUrl = resTxt.match(regLinkis);
  2965. if(setUrl) setUrl = setUrl[1];
  2966. else{ GM_log("AKill_linkis_Error"); obj = null;return;}
  2967.  
  2968. obj.setAttribute('Akill_URL',setUrl);
  2969. obj.setAttribute('Akill_check','Done');
  2970. var tmpUrl = url.replace(/\/ln.is\//,"/linkis.com/");
  2971.  
  2972. setDB(tmpUrl,setUrl);
  2973. multi(obj);
  2974. obj = null;
  2975. return;
  2976. }
  2977.  
  2978.  
  2979.  
  2980. //bloglovin埋め込み用
  2981. if(obj.innerHTML.match("killer")){ obj = null;return; } //ループ防止
  2982.  
  2983. //サンプル<iframe frameborder="0" src="http://url/" class="bl-viewer">
  2984. var strOrigin = resTxt.match(/<iframe frameborder="0" src="(.*?)" class="bl-viewer">/)[1];
  2985.  
  2986. obj.insertAdjacentHTML('afterend', '<a' + ' Akill_check=added href="' + strOrigin + '" rel="noreferrer">' + obj.innerHTML + '</a>');
  2987. obj.innerHTML = "[killer]";
  2988. obj.setAttribute("style",strStyle);
  2989.  
  2990. setDB(url,strOrigin);
  2991.  
  2992. //一個前のURLが重複修正してたら不要な要素削除
  2993. if(obj.parentNode.firstChild.getAttribute("Akill_check") == "killed"){
  2994. obj.parentNode.removeChild(obj);
  2995. }else{
  2996. obj.setAttribute("Akill_check","killed");
  2997. }
  2998.  
  2999. }else if(type == "HEAD"){
  3000. }
  3001.  
  3002. obj = null;
  3003. res = null;
  3004. }
  3005. });
  3006. }
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012. //短縮URLの重複分
  3013. function checkTimer(obj,url,num){
  3014. if(!num) num = 1;
  3015. if(num>15){
  3016. obj.setAttribute("Akill_check","chkTimeout");//フラグセット
  3017. // expDB[url] = null;
  3018. return;
  3019. }
  3020.  
  3021. var timer = 1000 * (num - 1);
  3022.  
  3023. setTimeout( function() {
  3024. try{
  3025. if(getExpDB(obj,url,num)) main("expand",obj);
  3026. obj = null;
  3027. return;
  3028.  
  3029. }catch(e){
  3030. GM_log("AKiller_checkTimer_Error:"+e)
  3031. }
  3032. }, timer );
  3033. }
  3034.  
  3035.  
  3036. //DBに登録とsetvalue
  3037. function setDB(url,data){
  3038. if(!expDB[url]) expDB[url] = [];
  3039. expDB[url][0] = data;
  3040. expDB[url][1] = isToday();
  3041.  
  3042. GM_setValue("expDB",JSON.stringify(expDB));
  3043. }
  3044.  
  3045.  
  3046. //展開済URLをDBから取得
  3047. function getExpDB(obj,url,num){
  3048. try{
  3049. var tmpUrl = expDB[url];
  3050. if(tmpUrl)tmpUrl = tmpUrl[0];
  3051.  
  3052. if(!tmpUrl || tmpUrl == ""){
  3053. if(num){
  3054. num++;
  3055. checkTimer(obj,url,num);
  3056. }
  3057. return false;
  3058. }
  3059.  
  3060. var urlArray,tmpBeforeUrl;
  3061.  
  3062.  
  3063. //複数の要素
  3064. if(tmpUrl.match(/\|\|\|\|\|/)){
  3065. urlArray = tmpUrl.split("|||||");
  3066.  
  3067. if(urlArray.length > 1){
  3068. tmpBeforeUrl = tmpUrl.replace(urlArray[0] + '|||||','');
  3069. }
  3070. tmpUrl = urlArray[0];
  3071.  
  3072. obj.setAttribute("akill_BeforeURL",tmpBeforeUrl)
  3073. }
  3074.  
  3075. obj.setAttribute('Akill_URL',tmpUrl);
  3076. obj.setAttribute('Akill_check','Done');
  3077. //multi(obj);
  3078.  
  3079. return true;
  3080.  
  3081. }catch(e){
  3082. GM_log("AKiller_getExpDB_Error:"+e);
  3083.  
  3084. return false;
  3085. }
  3086. }
  3087.  
  3088.  
  3089. //DBクリア
  3090. function clearDB(){
  3091. if(GM_getValue("expDB")) expDB = JSON.parse(GM_getValue("expDB"));
  3092. else return;
  3093.  
  3094. var today = isToday()
  3095.  
  3096. for(var key in expDB){
  3097. try{
  3098. var accessDay = expDB[key][1];
  3099. if(getDiff(today,accessDay) < clearInterval) continue;
  3100. }catch(e){}
  3101.  
  3102. delete expDB[key];
  3103.  
  3104. GM_setValue("expDB",JSON.stringify(expDB));
  3105. }
  3106.  
  3107. }
  3108. function isToday(){
  3109.  
  3110. var date = new Date();
  3111. var year = date.getFullYear().toString();
  3112. var month = (date.getMonth() + 1).toString();
  3113. if(month < 10) month = "0" + month;
  3114. var day = date.getDate().toString();
  3115. if(day < 10) day = "0" + day;
  3116.  
  3117. return year + '-' + month + '-' + day;
  3118. }
  3119. function getDiff(today, lastday) {
  3120. var newDay = new Date(today);
  3121. var oldDay = new Date(lastday);
  3122.  
  3123. var mSec = newDay.getTime() - oldDay.getTime(); //ミリ秒計算
  3124. var diff = Math.floor(mSec / (1000 * 60 * 60 *24)); //日付に戻す
  3125. return diff;
  3126. }
  3127.  
  3128. //クッキー削除
  3129. function removeCookie(){
  3130. if(!document.cookie || document.cookie.length <= 0){
  3131. GM_log("AKiller_httponly? Can't get Cookie.");
  3132. return;
  3133. }
  3134.  
  3135.  
  3136. //どうせcookie仕込まれるので有効期限切れで消すようにはせず、値を空文字に変更する
  3137. for(var site in nameDB){
  3138. for(var cookieName in nameDB[site]){
  3139. if(!getCookie(site,cookieName)) continue;
  3140.  
  3141. if(Object.keys(cookieDB).length > 0 && cookieName in cookieDB){
  3142. setCookie(site,cookieName);
  3143. }
  3144. }
  3145. }
  3146. }
  3147.  
  3148. //クッキーの値を取得
  3149. function getCookie(site,cookieName){
  3150. var tmpUrl = "";
  3151. if(nameDB[site][cookieName]["domain"] != ""){ tmpUrl = nameDB[site][cookieName]["domain"];
  3152. }else{ tmpUrl = nameDB[site][cookieName]["host"]; }
  3153.  
  3154. if(!location.href.match(tmpUrl)) return false;
  3155.  
  3156. var tmpDB = {};
  3157. tmpDB = document.cookie.split("; ");
  3158.  
  3159. for(var key in tmpDB){
  3160. var name = tmpDB[key].replace(/(.*?)=.*$/i,"$1"); //クッキー名
  3161. var data = tmpDB[key].replace(/.*?=(.*$)/i,"$1"); //クッキー値
  3162. cookieDB[name] = data;
  3163. }
  3164. return true;
  3165. }
  3166.  
  3167. //クッキーの値をセット
  3168. function setCookie(site,cookieName){
  3169. if(!document.cookie || document.cookie.length <= 0){ return; }
  3170. var domain="",host="",data="";
  3171.  
  3172. if(nameDB[site][cookieName]["domain"] != ""){
  3173. domain = " domain=" + nameDB[site][cookieName]["domain"] + ";";
  3174. if(!location.href.match(nameDB[site][cookieName]["domain"])){ return; }
  3175. }else{
  3176. host = " host=" + nameDB[site][cookieName]["host"] + ";";
  3177. if(!location.href.match(nameDB[site][cookieName]["host"])){ return; }
  3178. }
  3179.  
  3180. document.cookie = cookieName + "=" + data + ";" + domain + host + " path=" + nameDB[site][cookieName]["path"] + ";";
  3181.  
  3182. }
  3183.  
  3184. //クッキー情報DB作成
  3185. function makeDB(site,cookieName,domain,host,path){
  3186. var check = domain || host;
  3187. if(!location.host.match(check)) return;
  3188.  
  3189. if(!nameDB[site]){ nameDB[site] = {}; }
  3190. if(!nameDB[site][cookieName]){ nameDB[site][cookieName] = {}; }
  3191. nameDB[site][cookieName]["domain"] = domain;
  3192. nameDB[site][cookieName]["host"] = host;
  3193. nameDB[site][cookieName]["path"] = path;
  3194.  
  3195. }
  3196.  
  3197.  
  3198.  
  3199. //URLデコード
  3200. function decURI(str){
  3201.  
  3202. var charCode = "";
  3203. if (str.match("%")) {
  3204. try {
  3205. charCode = GetEscapeCodeType(str);
  3206. if ( charCode == "UTF8" ) {
  3207. str = UnescapeUTF8(str);
  3208. }else if ( charCode == "EUCJP" ) {
  3209. str = UnescapeEUCJP(str);
  3210. }else if ( charCode == "SJIS" ) {
  3211. str = UnescapeSJIS(str);
  3212. }else if ( charCode == "Unicode" ) {
  3213. str = unescape(str);
  3214. }
  3215. return str;
  3216. }catch(e){
  3217. //throw(e);
  3218. GM_log("AKiller_URL-DECODE:" + e);
  3219. }
  3220. }else{
  3221. return str;
  3222. }
  3223.  
  3224. //throw new Error();
  3225. }
  3226.  
  3227. //キー入力で要素非表示
  3228. function keydownHide(){
  3229.  
  3230. //post messageでiframeにまたがる要素にも対応-----------------------------------------
  3231.  
  3232. //メッセージ送信
  3233. function sendMessage(msg){
  3234. var target;
  3235.  
  3236. //親window
  3237. if(window==parent){
  3238. target = window.frames;
  3239. //複数のiframeに送信
  3240. for(var m=0; m < target.length; m++){
  3241. target[m].postMessage(msg,"*");
  3242. }
  3243. //iframe内
  3244. }else{
  3245. target = (parent.postMessage ? parent : (parent.document.postMessage ? parent.document : undefined));
  3246. target.postMessage(msg,"*");
  3247. }
  3248. }
  3249.  
  3250. //メッセージ受信
  3251. function receiveMessage(e){
  3252. //alert(e.origin);
  3253. //alert(e.data);
  3254.  
  3255. try{
  3256. if(e.data.match(/^show_added/)){
  3257. document.body.setAttribute("ToT_hide","show_added");
  3258. }else if(e.data.match(/^show_ALL/)){
  3259. document.body.setAttribute("ToT_hide","show_ALL");
  3260. }else if(e.data.match(/^show_before$/)){
  3261. document.body.setAttribute("ToT_hide","show_before");
  3262. }else if(e.data.match(/^ak_show$/)){
  3263. document.body.setAttribute("ToT_hide",false);
  3264. }
  3265.  
  3266. }catch(e){
  3267. }
  3268. }
  3269. window.addEventListener('message', receiveMessage, false);
  3270. //post messageここまで-----------------------------------------------------
  3271.  
  3272.  
  3273. //キー入力で要素非表示----------------------------------------------------
  3274. var keyCheck = [];
  3275.  
  3276. window.addEventListener("keydown",keyDown,false);
  3277. window.addEventListener("keyup",keyUp,false);
  3278.  
  3279.  
  3280.  
  3281. function keyDown(evt){
  3282. if (evt){
  3283. var kc = evt.key;
  3284. }
  3285.  
  3286. if(kc != "Shift" && kc != "Control" && kc != "Alt"){ return; } //ログ解析で、入力内容を漏洩しないように除外
  3287.  
  3288.  
  3289. switch(kc){
  3290. case "Shift"://shift
  3291. keyCheck[16] = true;
  3292. break;
  3293. case "Control"://ctrl
  3294. keyCheck[17] = true;
  3295. break;
  3296. case "Alt"://alt
  3297. keyCheck[18] = true;
  3298. break;
  3299. default:
  3300. break;
  3301. }
  3302.  
  3303. actionKey();
  3304. };
  3305.  
  3306. function keyUp(evt){
  3307. var kc;
  3308. if (evt){
  3309. kc = evt.key;
  3310. }else{
  3311. kc = event.key;
  3312. }
  3313.  
  3314. if(kc != "Shift" && kc != "Control" && kc != "Alt"){ return; } //ログ解析で、入力内容を漏洩しないように除外
  3315.  
  3316.  
  3317. switch(kc){
  3318. case "Shift"://shift
  3319. keyCheck[16] = false;
  3320. if(!keyCheck[18]){document.body.setAttribute("ToT_hide",false);}
  3321. sendMessage('ak_show');
  3322. break;
  3323. case "Control"://ctrl
  3324. keyCheck[17] = false;
  3325. document.body.setAttribute("ToT_hide",false);
  3326. sendMessage('ak_show');
  3327. break;
  3328. case "Alt"://alt
  3329. keyCheck[18] = false;
  3330. if(!keyCheck[16]){document.body.setAttribute("ToT_hide",false);}
  3331. sendMessage('ak_show');
  3332. break;
  3333. default:
  3334. break;
  3335. }
  3336.  
  3337. actionKey();
  3338.  
  3339. };//キー入力で要素非表示ここまで----------------------------------------------------
  3340.  
  3341. function actionKey(){
  3342. //CTRL ALT show beforeURL & addedURL & added_before
  3343. if(keyCheck[17] && keyCheck[18]){
  3344. //GM_log("AKiller_ctrl+alt同時押し");
  3345. document.body.setAttribute("ToT_hide","show_before");
  3346. sendMessage('show_before');
  3347. }
  3348.  
  3349. //SHIFT CTRL show only addedURL
  3350. if(keyCheck[16] && keyCheck[17]){
  3351. //GM_log("AKiller_shift+ctrl同時押し");
  3352. document.body.setAttribute("ToT_hide","show_added");
  3353. sendMessage('show_added');
  3354. }
  3355.  
  3356. //CTRL ALT SHIFT show only beforeURL & addedURL
  3357. if(keyCheck[16] && keyCheck[17] && keyCheck[18]){
  3358. //GM_log("AKiller_shift+ctrl+alt同時押し");
  3359. document.body.setAttribute("ToT_hide","show_ALL");
  3360. sendMessage('show_ALL');
  3361. }
  3362. }
  3363.  
  3364. //追加した監視の削除
  3365. var onEventUnloadKey = function(){
  3366. window.removeEventListener('message', receiveMessage, false);
  3367. window.removeEventListener("keydown",keyDown,false);
  3368. window.removeEventListener("keyup",keyUp,false);
  3369.  
  3370. window.removeEventListener("beforeunload", onEventUnloadKey,false);
  3371. };
  3372. window.addEventListener('beforeunload',onEventUnloadKey, false);
  3373. }
  3374.  
  3375. //======================================================================================
  3376.  
  3377.  
  3378. function userCfg(name){
  3379. //ユーザ設定から読み込み(Load user's settings)
  3380. var strText = GM_getValue(name);
  3381.  
  3382. if(strText == "hide"){
  3383. GM_registerMenuCommand("show all [killer] -now hide all-", showCfg);
  3384.  
  3385. }else if(strText == "show"){
  3386. GM_registerMenuCommand("show a [killer] only original -now show all-", oneCfg);
  3387.  
  3388. // }else if(strText == "one"){
  3389. }else{
  3390. GM_registerMenuCommand("hide all [killer](It's troubled,when correction mistook.) -now only one-", hideCfg);
  3391.  
  3392. if(strText != "one"){
  3393. strText = "one";
  3394. GM_setValue( name, strText);
  3395. //延々とリロードする場合があるので無効
  3396. // window.document.location.reload();
  3397. }
  3398. }
  3399. return strText;
  3400. }
  3401. function showCfg(){
  3402. GM_setValue( "hideOriginLink", "show");
  3403. window.document.location.reload();
  3404. }
  3405. function hideCfg(){
  3406. GM_setValue( "hideOriginLink", "hide");
  3407. window.document.location.reload();
  3408. }
  3409. function oneCfg(){
  3410. GM_setValue( "hideOriginLink", "one");
  3411. window.document.location.reload();
  3412. }
  3413.  
  3414. //パラメータ取得
  3415. function createParamArray(url){
  3416. try{
  3417. var params = {};
  3418.  
  3419. var tmp = url.replace(/.*?\?/,"");
  3420. var tmpAry = tmp.replace("?","&").split("&");
  3421.  
  3422. for(var prm=0;prm<tmpAry.length;prm++){
  3423. if(!tmpAry[prm].match("=")){ continue; }
  3424.  
  3425. // params[tmpAry[prm].split("=")[0]] = tmpAry[prm].split("=")[1];
  3426. params[tmpAry[prm].split("=")[0]] = tmpAry[prm].replace(/.*?=/,"");
  3427. }
  3428. return params;
  3429.  
  3430. }catch(e){
  3431. GM_log("AKiller_Error_createParamArray:"+e);
  3432. }
  3433.  
  3434. }
  3435.  
  3436. function getRedirectUrl(url, paramName){
  3437. try{
  3438. var params = createParamArray(url);
  3439. var redirectUrl = decURI(params[paramName]);
  3440. return redirectUrl;
  3441. }catch(e){
  3442. GM_log("AKiller_Error_getRedirectUrl:"+e);
  3443. }
  3444. }
  3445.  
  3446.  
  3447. /*****************************css追加*************************
  3448. 要素説明(akill_check)
  3449. <a>tag
  3450. added:追加したURL。複数リダイレクトじゃない
  3451. added_before:追加したURL。複数リダイレクトされてきた場合
  3452. before:複数リダイレクトの最後から一個前のURL(デフォルトは非表示)
  3453. killed:修正前の元のURL
  3454.  
  3455. <body>tag
  3456. show_added:CTRL SHIFT @show added & added_before @hide before & killed
  3457. show_before:CTRL ALT @show before & added & added_before@hide killed
  3458. show_ALL:全部押し @show ALL
  3459. ***************************************************************/
  3460. var cssTxt,cssCommon;
  3461.  
  3462. cssCommon = 'A[akill_check*="killed"]{ color:rgb(26,13,171)!important; text-shadow:1px 1px 0 rgb(255,255,255);}'
  3463. + 'A[akill_check*="killed"]:hover{ color: rgba(26,13,171,0.3)!important; text-shadow:1px 1px 0 rgba(255,255,255,0.5)!important; }'
  3464. ;//ここまで
  3465.  
  3466.  
  3467. //killer全部表示
  3468. if(hideOriginLinkFlg == "show"){
  3469. //非表示
  3470. cssTxt = 'BODY[ToT_hide="show_added"] A[akill_check*="killed"],'
  3471. + 'BODY[ToT_hide="show_before"] A[akill_check*="killed"]{ display:none!important; visibility:hidden!important; }'
  3472. //表示
  3473. + 'BODY[ToT_hide="show_before"] A[akill_check*="before"],'
  3474. + 'BODY[ToT_hide="show_ALL"] A[akill_check*="before"]{ display:inline!important; visibility:visible!important; }'
  3475. ;//ここまで
  3476. //全部消す
  3477. }else if(hideOriginLinkFlg == "hide"){
  3478. //非表示
  3479. cssTxt = 'A[akill_check*="killed"]{ display:none!important; visibility:hidden!important; }'
  3480. //表示
  3481. + 'BODY[ToT_hide="show_before"] A[akill_check*="before"],'
  3482. + 'BODY[ToT_hide="show_added"] A[akill_check*="killed"],'
  3483. + 'BODY[ToT_hide="show_ALL"] A[akill_check*="killed"],'
  3484. + 'BODY[ToT_hide="show_ALL"] A[akill_check*="before"]{ display:inline!important; visibility:visible!important; }'
  3485. ;//ここまで
  3486.  
  3487. //[kill]を最初だけ表示する設定の場合
  3488. }else if(hideOriginLinkFlg == "one"){
  3489. //非表示
  3490. cssTxt = 'BODY[ToT_hide="show_added"] A[akill_check*="killed"],'
  3491. + 'BODY[ToT_hide="show_before"] A[akill_check*="killed"]{ display:none!important; visibility:hidden!important; }'
  3492. //表示
  3493. + 'BODY[ToT_hide="show_before"] A[akill_check*="before"],'
  3494. + 'BODY[ToT_hide="show_ALL"] A[akill_check*="before"]{ display:inline!important; visibility:visible!important; }'
  3495. ;//ここまで
  3496. }
  3497.  
  3498. var style = document.createElement('style');
  3499. style.type = 'text/css';
  3500. style.innerHTML = cssCommon + cssTxt;
  3501.  
  3502.  
  3503. //headerに追加------------------------------------------------
  3504. function addHeader(obj) {
  3505. try{
  3506. var head = document.head ;
  3507.  
  3508. head.appendChild(obj);
  3509.  
  3510. }catch(e){
  3511. GM_log("affiliatekiller ヘッダ:"+e);
  3512. //alert("affiliatekiller ヘッダ:"+e);
  3513. }
  3514. }
  3515. addHeader(style);
  3516.  
  3517.  
  3518.  
  3519.  
  3520. //==============================================================
  3521. //GreaseForkがrequireの審査必要なのでいっそのこと埋め込みました。
  3522. //require (c)http://www.drk7.jp/pub/js/ecl_test/ecl_new.js
  3523. //==============================================================
  3524. function ecl(){
  3525. try{
  3526. //============================引用開始===================================
  3527.  
  3528. //
  3529. // Escape Codec Library: ecl.js (Ver.041208)
  3530. //
  3531. // Copyright (C) http://nurucom-archives.hp.infoseek.co.jp/digital/
  3532. //
  3533.  
  3534. EscapeSJIS=function(str){
  3535. return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){
  3536. var c=s.charCodeAt(0),m;
  3537. return c<128?(c<16?"%0":"%")+c.toString(16).toUpperCase():65376<c&&c<65440?"%"+(c-65216).toString(16).toUpperCase():(c=JCT11280.indexOf(s))<0?"%81E":"%"+((m=((c<8272?c:(c=JCT11280.lastIndexOf(s)))-(c%=188))/188)<31?m+129:m+193).toString(16).toUpperCase()+(64<(c+=c<63?64:65)&&c<91||95==c||96<c&&c<123?String.fromCharCode(c):"%"+c.toString(16).toUpperCase())
  3538. })
  3539. };
  3540.  
  3541. UnescapeSJIS=function(str){
  3542. return str.replace(/%(8[1-9A-F]|[9E][0-9A-F]|F[0-9A-C])(%[4-689A-F][0-9A-F]|%7[0-9A-E]|[@-~])|%([0-7][0-9A-F]|A[1-9A-F]|[B-D][0-9A-F])/ig,function(s){
  3543. var c=parseInt(s.substring(1,3),16),l=s.length;
  3544. return 3==l?String.fromCharCode(c<160?c:c+65216):JCT11280.charAt((c<160?c-129:c-193)*188+(4==l?s.charCodeAt(3)-64:(c=parseInt(s.substring(4),16))<127?c-64:c-65))
  3545. })
  3546. };
  3547.  
  3548. EscapeEUCJP=function(str){
  3549. return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){
  3550. var c=s.charCodeAt(0);
  3551. return (c<128?(c<16?"%0":"%")+c.toString(16):65376<c&&c<65440?"%8E%"+(c-65216).toString(16):(c=JCT8836.indexOf(s))<0?"%A1%A6":"%"+((c-(c%=94))/94+161).toString(16)+"%"+(c+161).toString(16)).toUpperCase()
  3552. })
  3553. };
  3554.  
  3555. UnescapeEUCJP=function(str){
  3556. return str.replace(/(%A[1-9A-F]|%[B-E][0-9A-F]|%F[0-9A-E]){2}|%8E%(A[1-9A-F]|[B-D][0-9A-F])|%[0-7][0-9A-F]/ig,function(s){
  3557. var c=parseInt(s.substring(1),16);
  3558. return c<161?String.fromCharCode(c<128?c:parseInt(s.substring(4),16)+65216):JCT8836.charAt((c-161)*94+parseInt(s.substring(4),16)-161)
  3559. })
  3560. };
  3561.  
  3562. EscapeJIS7=function(str){
  3563. var u=String.fromCharCode,ri=u(92,120,48,48,45,92,120,55,70),rj=u(65377,45,65439,93,43),
  3564. H=function(c){
  3565. return 41<c&&c<58&&44!=c||64<c&&c<91||95==c||96<c&&c<123?u(c):"%"+c.toString(16).toUpperCase()
  3566. },
  3567. I=function(s){
  3568. var c=s.charCodeAt(0);
  3569. return (c<16?"%0":"%")+c.toString(16).toUpperCase()
  3570. },
  3571. rI=new RegExp;rI.compile("[^*+.-9A-Z_a-z-]","g");
  3572. return ("g"+str+"g").replace(RegExp("["+ri+"]+","g"),function(s){
  3573. return "%1B%28B"+s.replace(rI,I)
  3574. }).replace(RegExp("["+rj,"g"),function(s){
  3575. var c,i=0,t="%1B%28I";while(c=s.charCodeAt(i++))t+=H(c-65344);return t
  3576. }).replace(RegExp("[^"+ri+rj,"g"),function(s){
  3577. var a,c,i=0,t="%1B%24B";while(a=s.charAt(i++))t+=(c=JCT8836.indexOf(a))<0?"%21%26":H((c-(c%=94))/94+33)+H(c+33);return t
  3578. }).slice(8,-1)
  3579. };
  3580.  
  3581. UnescapeJIS7=function(str){
  3582. var i=0,p,q,s="",u=String.fromCharCode,
  3583. P=("%28B"+str.replace(/%49/g,"I").replace(/%1B%24%4[02]|%1B%24@/ig,"%1B%24B")).split(/%1B/i),
  3584. I=function(s){
  3585. return u(parseInt(s.substring(1),16))
  3586. },
  3587. J=function(s){
  3588. return u((3==s.length?parseInt(s.substring(1),16):s.charCodeAt(0))+65344)
  3589. },
  3590. K=function(s){
  3591. var l=s.length;
  3592. return JCT8836.charAt(4<l?(parseInt(s.substring(1),16)-33)*94+parseInt(s.substring(4),16)-33:2<l?(37==(l=s.charCodeAt(0))?(parseInt(s.substring(1,3),16)-33)*94+s.charCodeAt(3):(l-33)*94+parseInt(s.substring(2),16))-33:(s.charCodeAt(0)-33)*94+s.charCodeAt(1)-33)
  3593. },
  3594. rI=new RegExp,rJ=new RegExp,rK=new RegExp;
  3595. rI.compile("%[0-7][0-9A-F]","ig");rJ.compile("(%2[1-9A-F]|%[3-5][0-9A-F])|[!-_]","ig");
  3596. rK.compile("(%2[1-9A-F]|%[3-6][0-9A-F]|%7[0-9A-E]){2}|(%2[1-9A-F]|%[3-6][0-9A-F]|%7[0-9A-E])[!-~]|[!-~](%2[1-9A-F]|%[3-6][0-9A-F]|%7[0-9A-E])|[!-~]{2}","ig");
  3597. while(p=P[i++])s+="%24B"==(q=p.substring(0,4))?p.substring(4).replace(rK,K):"%28I"==q?p.substring(4).replace(rJ,J):p.replace(rI,I).substring(2);
  3598. return s
  3599. };
  3600.  
  3601. EscapeJIS8=function(str){
  3602. var u=String.fromCharCode,r=u(92,120,48,48,45,92,120,55,70,65377,45,65439,93,43),
  3603. H=function(c){
  3604. return 41<c&&c<58&&44!=c||64<c&&c<91||95==c||96<c&&c<123?u(c):"%"+c.toString(16).toUpperCase()
  3605. },
  3606. I=function(s){
  3607. var c=s.charCodeAt(0);
  3608. return (c<16?"%0":"%")+(c<128?c:c-65216).toString(16).toUpperCase()
  3609. },
  3610. rI=new RegExp;rI.compile("[^*+.-9A-Z_a-z-]","g");
  3611. return ("g"+str+"g").replace(RegExp("["+r,"g"),function(s){
  3612. return "%1B%28B"+s.replace(rI,I)
  3613. }).replace(RegExp("[^"+r,"g"),function(s){
  3614. var a,c,i=0,t="%1B%24B";while(a=s.charAt(i++))t+=(c=JCT8836.indexOf(a))<0?"%21%26":H((c-(c%=94))/94+33)+H(c+33);return t
  3615. }).slice(8,-1)
  3616. };
  3617.  
  3618. UnescapeJIS8=function(str){
  3619. var i=0,p,s="",
  3620. P=("%28B"+str.replace(/%1B%24%4[02]|%1B%24@/ig,"%1B%24B")).split(/%1B/i),
  3621. I=function(s){
  3622. var c=parseInt(s.substring(1),16);
  3623. return String.fromCharCode(c<128?c:c+65216)
  3624. },
  3625. K=function(s){
  3626. var l=s.length;
  3627. return JCT8836.charAt(4<l?(parseInt(s.substring(1),16)-33)*94+parseInt(s.substring(4),16)-33:2<l?(37==(l=s.charCodeAt(0))?(parseInt(s.substring(1,3),16)-33)*94+s.charCodeAt(3):(l-33)*94+parseInt(s.substring(2),16))-33:(s.charCodeAt(0)-33)*94+s.charCodeAt(1)-33)
  3628. },
  3629. rI=new RegExp,rK=new RegExp;
  3630. rI.compile("%([0-7][0-9A-F]|A[1-9A-F]|[B-D][0-9A-F])","ig");
  3631. rK.compile("(%2[1-9A-F]|%[3-6][0-9A-F]|%7[0-9A-E]){2}|(%2[1-9A-F]|%[3-6][0-9A-F]|%7[0-9A-E])[!-~]|[!-~](%2[1-9A-F]|%[3-6][0-9A-F]|%7[0-9A-E])|[!-~]{2}","ig");
  3632. while(p=P[i++])s+="%24B"==p.substring(0,4)?p.substring(4).replace(rK,K):p.replace(rI,I).substring(2);
  3633. return s
  3634. };
  3635.  
  3636. EscapeUnicode=function(str){
  3637. return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){
  3638. var c=s.charCodeAt(0);
  3639. return (c<16?"%0":c<256?"%":c<4096?"%u0":"%u")+c.toString(16).toUpperCase()
  3640. })
  3641. };
  3642.  
  3643. UnescapeUnicode=function(str){
  3644. return str.replace(/%u[0-9A-F]{4}|%[0-9A-F]{2}/ig,function(s){
  3645. return String.fromCharCode("0x"+s.substring(s.length/3))
  3646. })
  3647. };
  3648.  
  3649. EscapeUTF7=function(str){
  3650. var B="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),
  3651. E=function(s){
  3652. var c=s.charCodeAt(0);
  3653. return B[c>>10]+B[c>>4&63]+B[(c&15)<<2|(c=s.charCodeAt(1))>>14]+(0<=c?B[c>>8&63]+B[c>>2&63]+B[(c&3)<<4|(c=s.charCodeAt(2))>>12]+(0<=c?B[c>>6&63]+B[c&63]:""):"")
  3654. },
  3655. re=new RegExp;re.compile("[^+]{1,3}","g");
  3656. return (str+"g").replace(/[^*+.-9A-Z_a-z-]+[*+.-9A-Z_a-z-]|[+]/g,function(s){
  3657. if("+"==s)return "+-";
  3658. var l=s.length-1,w=s.charAt(l);
  3659. return "+"+s.substring(0,l).replace(re,E)+("+"==w?"-+-":"*"==w||"."==w||"_"==w?w:"-"+w)
  3660. }).slice(0,-1)
  3661. };
  3662.  
  3663. UnescapeUTF7=function(str){
  3664. var i=0,B={};
  3665. while(i<64)B["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(i)]=i++;
  3666. return str.replace(RegExp("[+][+/-9A-Za-z]*-?","g"),function(s){
  3667. if("+-"==s)return "+";
  3668. var b=B[s.charAt(1)],c,i=1,t="";
  3669. while(0<=b){
  3670. if((c=i&7)<6)c=c<3?b<<10|B[s.charAt(++i)]<<4|(b=B[s.charAt(++i)])>>2:(b&3)<<14|B[s.charAt(++i)]<<8|B[s.charAt(++i)]<<2|(b=B[s.charAt(++i)])>>4;
  3671. else{c=(b&15)<<12|B[s.charAt(++i)]<<6|B[s.charAt(++i)];b=B[s.charAt(++i)]}
  3672. if(c)t+=String.fromCharCode(c)
  3673. }
  3674. return t
  3675. })
  3676. };
  3677.  
  3678. EscapeUTF8=function(str){
  3679. return str.replace(/[^*+.-9A-Z_a-z-]/g,function(s){
  3680. var c=s.charCodeAt(0);
  3681. return (c<16?"%0"+c.toString(16):c<128?"%"+c.toString(16):c<2048?"%"+(c>>6|192).toString(16)+"%"+(c&63|128).toString(16):"%"+(c>>12|224).toString(16)+"%"+(c>>6&63|128).toString(16)+"%"+(c&63|128).toString(16)).toUpperCase()
  3682. })
  3683. };
  3684.  
  3685. UnescapeUTF8=function(str){
  3686. return str.replace(/%(E(0%[AB]|[1-CEF]%[89AB]|D%[89])[0-9A-F]|C[2-9A-F]|D[0-9A-F])%[89AB][0-9A-F]|%[0-7][0-9A-F]/ig,function(s){
  3687. var c=parseInt(s.substring(1),16);
  3688. return String.fromCharCode(c<128?c:c<224?(c&31)<<6|parseInt(s.substring(4),16)&63:((c&15)<<6|parseInt(s.substring(4),16)&63)<<6|parseInt(s.substring(7),16)&63)
  3689. })
  3690. };
  3691.  
  3692. EscapeUTF16LE=function(str){
  3693. var H=function(c){
  3694. return 41<c&&c<58&&44!=c||64<c&&c<91||95==c||96<c&&c<123?String.fromCharCode(c):(c<16?"%0":"%")+c.toString(16).toUpperCase()
  3695. };
  3696. return str.replace(/[^ ]| /g,function(s){
  3697. var c=s.charCodeAt(0);return H(c&255)+H(c>>8)
  3698. })
  3699. };
  3700.  
  3701. UnescapeUTF16LE=function(str){
  3702. var u=String.fromCharCode,b=u(92,120,48,48,45,92,120,70,70);
  3703. return str.replace(/^%FF%FE/i,"").replace(RegExp("%[0-9A-F]{2}%[0-9A-F]{2}|%[0-9A-F]{2}["+b+"]|["+b+"]%[0-9A-F]{2}|["+b+"]{2}","ig"),function(s){
  3704. var l=s.length;
  3705. return u(4<l?"0x"+s.substring(4,6)+s.substring(1,3):2<l?37==(l=s.charCodeAt(0))?parseInt(s.substring(1,3),16)|s.charCodeAt(3)<<8:l|parseInt(s.substring(2),16)<<8:s.charCodeAt(0)|s.charCodeAt(1)<<8)
  3706. })
  3707. };
  3708.  
  3709. GetEscapeCodeType=function(str){
  3710. if(/%u[0-9A-F]{4}/i.test(str))return "Unicode";
  3711. if(/%([0-9A-DF][0-9A-F]%[8A]0%|E0%80|[0-7][0-9A-F]|C[01])%[8A]0|%00|%[7F]F/i.test(str))return "UTF16LE";
  3712. if(/%E[0-9A-F]%[8A]0%[8A]0|%[CD][0-9A-F]%[8A]0/i.test(str))return "UTF8";
  3713. if(/%F[DE]/i.test(str))return /%8[0-9A-D]|%9[0-9A-F]|%A0/i.test(str)?"UTF16LE":"EUCJP";
  3714. if(/%1B/i.test(str))return /%[A-D][0-9A-F]/i.test(str)?"JIS8":"JIS7";
  3715. var S=str.substring(0,6143).replace(/%[0-9A-F]{2}|[^ ]| /ig,function(s){
  3716. return s.length<3?"40":s.substring(1)
  3717. }),c,C,i=0,T;
  3718. while(0<=(c=parseInt(S.substring(i,i+=2),16))&&i<4092)if(128<=c){
  3719. if((C=parseInt(S.substring(i,i+2),16))<128)i+=2;
  3720. else if(194<=c&&c<240&&C<192){
  3721. if(c<224){T="UTF8";i+=2;continue}
  3722. if(2==parseInt(S.charAt(i+2),16)>>2){T="UTF8";i+=4;continue}
  3723. }
  3724. if(142==c&&161<=C&&C<224){if(!T)T="EUCJP";if("EUCJP"==T)continue}
  3725. if(c<161)return "SJIS";
  3726. if(c<224&&!T)
  3727. if((164==c&&C<244||165==c&&C<247)&&161<=C)i+=2;
  3728. else T=224<=C?"EUCJP":"SJIS";
  3729. else T="EUCJP"
  3730. }
  3731. return T?T:"EUCJP"
  3732. };
  3733.  
  3734. JCT11280=Function('var a="zKV33~jZ4zN=~ji36XazM93y!{~k2y!o~k0ZlW6zN?3Wz3W?{EKzK[33[`y|;-~j^YOTz$!~kNy|L1$353~jV3zKk3~k-4P4zK_2+~jY4y!xYHR~jlz$_~jk4z$e3X5He<0y!wy|X3[:~l|VU[F3VZ056Hy!nz/m1XD61+1XY1E1=1y|bzKiz!H034zKj~mEz#c5ZA3-3X$1~mBz$$3~lyz#,4YN5~mEz#{ZKZ3V%7Y}!J3X-YEX_J(3~mAz =V;kE0/y|F3y!}~m>z/U~mI~j_2+~mA~jp2;~m@~k32;~m>V}2u~mEX#2x~mBy+x2242(~mBy,;2242(~may->2&XkG2;~mIy-_2&NXd2;~mGz,{4<6:.:B*B:XC4>6:.>B*BBXSA+A:X]E&E<~r#z+625z s2+zN=`HXI@YMXIAXZYUM8X4K/:Q!Z&33 3YWX[~mB`{zKt4z (zV/z 3zRw2%Wd39]S11z$PAXH5Xb;ZQWU1ZgWP%3~o@{Dgl#gd}T){Uo{y5_d{e@}C(} WU9|cB{w}bzvV|)[} H|zT}d||0~{]Q|(l{|x{iv{dw}(5}[Z|kuZ }cq{{y|ij}.I{idbof%cu^d}Rj^y|-M{ESYGYfYsZslS`?ZdYO__gLYRZ&fvb4oKfhSf^d<Yeasc1f&a=hnYG{QY{D`Bsa|u,}Dl|_Q{C%xK|Aq}C>|c#ryW=}eY{L+`)][YF_Ub^h4}[X|?r|u_ex}TL@YR]j{SrXgo*|Gv|rK}B#mu{R1}hs|dP{C7|^Qt3|@P{YVV |8&}#D}ef{e/{Rl|>Hni}R1{Z#{D[}CQlQ||E}[s{SG_+i8eplY[=[|ec[$YXn#`hcm}YR|{Ci(_[ql|?8p3]-}^t{wy}4la&pc|3e{Rp{LqiJ],] `kc(]@chYnrM`O^,ZLYhZB]ywyfGY~aex!_Qww{a!|)*lHrM{N+n&YYj~Z b c#e_[hZSon|rOt`}hBXa^i{lh|<0||r{KJ{kni)|x,|0auY{D!^Sce{w;|@S|cA}Xn{C1h${E]Z-XgZ*XPbp]^_qbH^e[`YM|a||+=]!Lc}]vdBc=j-YSZD]YmyYLYKZ9Z>Xcczc2{Yh}9Fc#Z.l{}(D{G{{mRhC|L3b#|xK[Bepj#ut`H[,{E9Yr}1b{[e]{ZFk7[ZYbZ0XL]}Ye[(`d}c!|*y`Dg=b;gR]Hm=hJho}R-[n}9;{N![7k_{UbmN]rf#pTe[x8}!Qcs_rs[m`|>N}^V})7{^r|/E}),}HH{OYe2{Skx)e<_.cj.cjoMhc^d}0uYZd!^J_@g,[[[?{i@][|3S}Yl3|!1|eZ|5IYw|1D}e7|Cv{OHbnx-`wvb[6[4} =g+k:{C:}ed{S]|2M]-}WZ|/q{LF|dYu^}Gs^c{Z=}h>|/i|{W]:|ip{N:|zt|S<{DH[p_tvD{N<[8Axo{X4a.^o^X>Yfa59`#ZBYgY~_t^9`jZHZn`>G[oajZ;X,i)Z.^~YJe ZiZF^{][[#Zt^|]Fjx]&_5dddW]P0C[-]}]d|y {C_jUql] |OpaA[Z{lp|rz}:Mu#]_Yf6{Ep?f5`$[6^D][^u[$[6^.Z8]]ePc2U/=]K^_+^M{q*|9tYuZ,s(dS{i=|bNbB{uG}0jZOa:[-]dYtu3]:]<{DJ_SZIqr_`l=Yt`gkTnXb3d@kiq0a`Z{|!B|}e}Ww{Sp,^Z|0>_Z}36|]A|-t}lt{R6pi|v8hPu#{C>YOZHYmg/Z4nicK[}hF_Bg|YRZ7c|crkzYZY}_iXcZ.|)U|L5{R~qi^Uga@Y[xb}&qdbd6h5|Btw[}c<{Ds53[Y7]?Z<|e0{L[ZK]mXKZ#Z2^tavf0`PE[OSOaP`4gi`qjdYMgys/?[nc,}EEb,eL]g[n{E_b/vcvgb.{kcwi`~v%|0:|iK{Jh_vf5lb}KL|(oi=LrzhhY_^@`zgf[~g)[J_0fk_V{T)}I_{D&_/d9W/|MU[)f$xW}?$xr4<{Lb{y4}&u{XJ|cm{Iu{jQ}CMkD{CX|7A}G~{kt)nB|d5|<-}WJ}@||d@|Iy}Ts|iL|/^|no|0;}L6{Pm]7}$zf:|r2}?C_k{R(}-w|`G{Gy[g]bVje=_0|PT{^Y^yjtT[[[l!Ye_`ZN]@[n_)j3nEgMa]YtYpZy].d-Y_cjb~Y~[nc~sCi3|zg}B0}do{O^{|$`_|D{}U&|0+{J3|8*]iayx{a{xJ_9|,c{Ee]QXlYb]$[%YMc*]w[aafe]aVYi[fZEii[xq2YQZHg]Y~h#|Y:thre^@^|_F^CbTbG_1^qf7{L-`VFx Zr|@EZ;gkZ@slgko`[e}T:{Cu^pddZ_`yav^Ea+[#ZBbSbO`elQfLui}.F|txYcbQ`XehcGe~fc^RlV{D_0ZAej[l&jShxG[ipB_=u:eU}3e8[=j|{D(}dO{Do[BYUZ0/]AYE]ALYhZcYlYP/^-^{Yt_1_-;YT`P4BZG=IOZ&]H[e]YYd[9^F[1YdZxZ?Z{Z<]Ba2[5Yb[0Z4l?]d_;_)a?YGEYiYv`_XmZs4ZjY^Zb]6gqGaX^9Y}dXZr[g|]Y}K aFZp^k^F]M`^{O1Ys]ZCgCv4|E>}8eb7}l`{L5[Z_faQ|c2}Fj}hw^#|Ng|B||w2|Sh{v+[G}aB|MY}A{|8o}X~{E8paZ:]i^Njq]new)`-Z>haounWhN}c#{DfZ|fK]KqGZ=:u|fqoqcv}2ssm}.r{]{nIfV{JW)[K|,Z{Uxc|]l_KdCb%]cfobya3`p}G^|LZiSC]U|(X|kBlVg[kNo({O:g:|-N|qT}9?{MBiL}Sq{`P|3a|u.{Uaq:{_o|^S}jX{Fob0`;|#y_@[V[K|cw[<_ }KU|0F}d3|et{Q7{LuZttsmf^kYZ`Af`}$x}U`|Ww}d]| >}K,r&|XI|*e{C/a-bmr1fId4[;b>tQ_:]hk{b-pMge]gfpo.|(w[jgV{EC1Z,YhaY^q,_G[c_g[J0YX]`[h^hYK^_Yib,` {i6vf@YM^hdOKZZn(jgZ>bzSDc^Z%[[o9[2=/YHZ(_/Gu_`*|8z{DUZxYt^vuvZjhi^lc&gUd4|<UiA`z]$b/Z?l}YI^jaHxe|;F}l${sQ}5g}hA|e4}?o{ih}Uz{C)jPe4]H^J[Eg[|AMZMlc}:,{iz}#*|gc{Iq|/:|zK{l&}#u|myd{{M&v~nV};L|(g|I]ogddb0xsd7^V})$uQ{HzazsgxtsO^l}F>ZB]r|{7{j@cU^{{CbiYoHlng]f+nQ[bkTn/}<-d9q {KXadZYo+n|l[|lc}V2{[a{S4Zam~Za^`{HH{xx_SvF|ak=c^[v^7_rYT`ld@]:_ub%[$[m](Shu}G2{E.ZU_L_R{tz`vj(f?^}hswz}GdZ}{S:h`aD|?W|`dgG|if{a8|J1{N,}-Ao3{H#{mfsP|[ bzn+}_Q{MT{u4kHcj_q`eZj[8o0jy{p7}C|[}l){MuYY{|Ff!Ykn3{rT|m,^R|,R}$~Ykgx{P!]>iXh6[l[/}Jgcg{JYZ.^qYfYIZl[gZ#Xj[Pc7YyZD^+Yt;4;`e8YyZVbQ7YzZxXja.7SYl[s]2^/Ha$[6ZGYrb%XiYdf2]H]kZkZ*ZQ[ZYS^HZXcCc%Z|[(bVZ]]:OJQ_DZCg<[,]%Zaa [g{C00HY[c%[ChyZ,Z_`PbXa+eh`^&jPi0a[ggvhlekL]w{Yp^v}[e{~;k%a&k^|nR_z_Qng}[E}*Wq:{k^{FJZpXRhmh3^p>de^=_7`|ZbaAZtdhZ?n4ZL]u`9ZNc3g%[6b=e.ZVfC[ZZ^^^hD{E(9c(kyZ=bb|Sq{k`|vmr>izlH[u|e`}49}Y%}FT{[z{Rk}Bz{TCc/lMiAqkf(m$hDc;qooi[}^o:c^|Qm}a_{mrZ(pA`,}<2sY| adf_%|}`}Y5U;}/4|D>|$X{jw{C<|F.hK|*A{MRZ8Zsm?imZm_?brYWZrYx`yVZc3a@f?aK^ojEd {bN}/3ZH]/$YZhm^&j 9|(S|b]mF}UI{q&aM]LcrZ5^.|[j`T_V_Gak}9J[ ZCZD|^h{N9{~&[6Zd{}B}2O|cv]K}3s}Uy|l,fihW{EG`j_QOp~Z$F^zexS`dcISfhZBXP|.vn|_HYQ|)9|cr]<`&Z6]m_(ZhPcSg>`Z]5`~1`0Xcb4k1{O!bz|CN_T{LR|a/gFcD|j<{Z._[f)mPc:1`WtIaT1cgYkZOaVZOYFrEe[}T$}Ch}mk{K-^@]fH{Hdi`c*Z&|Kt{if[C{Q;{xYB`dYIX:ZB[}]*[{{p9|4GYRh2ao{DS|V+[zd$`F[ZXKadb*A] Ys]Maif~a/Z2bmclb8{Jro_rz|x9cHojbZ{GzZx_)]:{wAayeDlx}<=`g{H1{l#}9i|)=|lP{Qq}.({La|!Y{i2EZfp=c*}Cc{EDvVB|;g}2t{W4av^Bn=]ri,|y?|3+}T*ckZ*{Ffr5e%|sB{lx^0]eZb]9[SgAjS_D|uHZx]dive[c.YPkcq/}db{EQh&hQ|eg}G!ljil|BO]X{Qr_GkGl~YiYWu=c3eb}29v3|D|}4i||.{Mv})V{SP1{FX}CZW6{cm|vO{pS|e#}A~|1i}81|Mw}es|5[}3w{C`h9aL]o{}p[G`>i%a1Z@`Ln2bD[$_h`}ZOjhdTrH{[j_:k~kv[Sdu]CtL}41{I |[[{]Zp$]XjxjHt_eThoa#h>sSt8|gK|TVi[Y{t=}Bs|b7Zpr%{gt|Yo{CS[/{iteva|cf^hgn}($_c^wmb^Wm+|55jrbF|{9^ q6{C&c+ZKdJkq_xOYqZYSYXYl`8]-cxZAq/b%b*_Vsa[/Ybjac/OaGZ4fza|a)gY{P?| I|Y |,pi1n7}9bm9ad|=d{aV|2@[(}B`d&|Uz}B}{`q|/H|!JkM{FU|CB|.{}Az}#P|lk}K{|2rk7{^8^?`/|k>|Ka{Sq}Gz}io{DxZh[yK_#}9<{TRdgc]`~Z>JYmYJ]|`!ZKZ]gUcx|^E[rZCd`f9oQ[NcD_$ZlZ;Zr}mX|=!|$6ZPZYtIo%fj}CpcN|B,{VDw~gb}@hZg`Q{LcmA[(bo`<|@$|o1|Ss}9Z_}tC|G`{F/|9nd}i=}V-{L8aaeST]daRbujh^xlpq8|}zs4bj[S`J|]?G{P#{rD{]I`OlH{Hm]VYuSYUbRc*6[j`8]pZ[bt_/^Jc*[<Z?YE|Xb|?_Z^Vcas]h{t9|Uwd)_(=0^6Zb{Nc} E[qZAeX[a]P^|_J>e8`W^j_Y}R{{Jp__]Ee#e:iWb9q_wKbujrbR}CY`,{mJ}gz{Q^{t~N|? gSga`V_||:#mi}3t|/I`X{N*|ct|2g{km}gi|{={jC}F;|E}{ZZjYf*frmu}8Tdroi{T[|+~}HG{cJ}DM{Lp{Ctd&}$hi3|FZ| m}Kr|38}^c|m_|Tr{Qv|36}?Up>|;S{DV{k_as}BK{P}}9p|t`jR{sAm4{D=b4pWa[}Xi{EjwEkI}3S|E?u=X0{jf} S|NM|JC{qo^3cm]-|JUx/{Cj{s>{Crt[UXuv|D~|j|d{YXZR}Aq}0r}(_{pJfi_z}0b|-vi)Z mFe,{f4|q`b{}^Z{HM{rbeHZ|^x_o|XM|L%|uFXm}@C_{{Hhp%a7|0p[Xp+^K}9U{bP}: tT}B|}+$|b2|[^|~h{FAby[`{}xgygrt~h1[li`c4vz|,7p~b(|mviN}^pg[{N/|g3|^0c,gE|f%|7N{q[|tc|TKA{LU}I@|AZp(}G-sz{F |qZ{}F|f-}RGn6{Z]_5})B}UJ{FFb2]4ZI@v=k,]t_Dg5Bj]Z-]L]vrpdvdGlk|gF}G]|IW}Y0[G| /bo|Te^,_B}#n^^{QHYI[?hxg{[`]D^IYRYTb&kJ[cri[g_9]Ud~^_]<p@_e_XdNm-^/|5)|h_{J;{kacVopf!q;asqd}n)|.m|bf{QW|U)}b+{tL|w``N|to{t ZO|T]jF}CB|0Q{e5Zw|k |We}5:{HO{tPwf_uajjBfX}-V_C_{{r~gg|Ude;s+}KNXH}! `K}eW{Upwbk%ogaW}9EYN}YY|&v|SL{C3[5s.]Y]I]u{M6{pYZ`^,`ZbCYR[1mNg>rsk0Ym[jrE]RYiZTr*YJ{Ge|%-lf|y(`=[t}E6{k!|3)}Zk} ][G{E~cF{u3U.rJ|a9p#o#ZE|?|{sYc#vv{E=|LC}cu{N8`/`3`9rt[4|He{cq|iSYxY`}V |(Q|t4{C?]k_Vlvk)BZ^r<{CL}#h}R+[<|i=}X|{KAo]|W<`K{NW|Zx}#;|fe{IMr<|K~tJ_x}AyLZ?{GvbLnRgN}X&{H7|x~}Jm{]-| GpNu0}.ok>|c4{PYisrDZ|fwh9|hfo@{H~XSbO]Odv]%`N]b1Y]]|eIZ}_-ZA]aj,>eFn+j[aQ_+]h[J_m_g]%_wf.`%k1e#Z?{CvYu_B^|gk`Xfh^M3`afGZ-Z|[m{L}|k3cp[it ^>YUi~d>{T*}YJ{Q5{Jxa$hg|%4`}|LAgvb }G}{P=|<;Ux{_skR{cV|-*|s-{Mp|XP|$G|_J}c6cM{_=_D|*9^$ec{V;|4S{qO|w_|.7}d0|/D}e}|0G{Dq]Kdp{}dfDi>}B%{Gd|nl}lf{C-{y}|ANZr}#={T~|-(}c&{pI|ft{lsVP}){|@u}!W|bcmB{d?|iW|:dxj{PSkO|Hl]Li:}VYk@|2={fnWt{M3`cZ6|)}|Xj}BYa?vo{e4|L7|B7{L7|1W|lvYO}W8nJ|$Vih|{T{d*_1|:-n2dblk``fT{Ky|-%}m!|Xy|-a{Pz}[l{kFjz|iH}9N{WE{x,|jz}R {P|{D)c=nX|Kq|si}Ge{sh|[X{RF{t`|jsr*fYf,rK|/9}$}}Nf{y!1|<Std}4Wez{W${Fd_/^O[ooqaw_z[L`Nbv[;l7V[ii3_PeM}.h^viqYjZ*j1}+3{bt{DR[;UG}3Og,rS{JO{qw{d<_zbAh<R[1_r`iZTbv^^a}c{iEgQZ<exZFg.^Rb+`Uj{a+{z<[~r!]`[[|rZYR|?F|qppp]L|-d|}K}YZUM|=Y|ktm*}F]{D;g{uI|7kg^}%?Z%ca{N[_<q4xC]i|PqZC]n}.bDrnh0Wq{tr|OMn6tM|!6|T`{O`|>!]ji+]_bTeU}Tq|ds}n|{Gm{z,f)}&s{DPYJ`%{CGd5v4tvb*hUh~bf]z`jajiFqAii]bfy^U{Or|m+{I)cS|.9k:e3`^|xN}@Dnlis`B|Qo{`W|>||kA}Y}{ERYuYx`%[exd`]|OyiHtb}HofUYbFo![5|+]gD{NIZR|Go}.T{rh^4]S|C9_}xO^i`vfQ}C)bK{TL}cQ|79iu}9a];sj{P.o!f[Y]pM``Jda^Wc9ZarteBZClxtM{LW}l9|a.mU}KX}4@{I+f1}37|8u}9c|v${xGlz}jP{Dd1}e:}31}%3X$|22i<v+r@~mf{sN{C67G97855F4YL5}8f{DT|xy{sO{DXB334@55J1)4.G9A#JDYtXTYM4, YQD9;XbXm9SX]IB^4UN=Xn<5(;(F3YW@XkH-X_VM[DYM:5XP!T&Y`6|,^{IS-*D.H>:LXjYQ0I3XhAF:9:(==.F*3F1189K/7163D,:@|e2{LS36D4hq{Lw/84443@4.933:0307::6D7}&l{Mx657;89;,K5678H&93D(H<&<>0B90X^I;}Ag1{P%3A+>><975}[S{PZE453?4|T2{Q+5187;>447:81{C=hL6{Me^:=7ii{R=.=F<81;48?|h8}Uh{SE|,VxL{ST,7?9Y_5Xk3A#:$%YSYdXeKXOD8+TXh7(@>(YdXYHXl9J6X_5IXaL0N?3YK7Xh!1?XgYz9YEXhXaYPXhC3X`-YLY_XfVf[EGXZ5L8BXL9YHX]SYTXjLXdJ: YcXbQXg1PX]Yx4|Jr{Ys4.8YU+XIY`0N,<H%-H;:0@,74/:8546I=9177154870UC]d<C3HXl7ALYzXFXWP<<?E!88E5@03YYXJ?YJ@6YxX-YdXhYG|9o{`iXjY_>YVXe>AYFX[/(I@0841?):-B=14337:8=|14{c&93788|di{cW-0>0<097/A;N{FqYpugAFT%X/Yo3Yn,#=XlCYHYNX[Xk3YN:YRT4?)-YH%A5XlYF3C1=NWyY}>:74-C673<69545v {iT85YED=64=.F4..9878/D4378?48B3:7:7/1VX[f4{D,{l<5E75{dAbRB-8-@+;DBF/$ZfW8S<4YhXA.(5@*11YV8./S95C/0R-A4AXQYI7?68167B95HA1*<M3?1/@;/=54XbYP36}lc{qzSS38:19?,/39193574/66878Yw1X-87E6=;964X`T734:>86>1/=0;(I-1::7ALYGXhF+Xk[@W%TYbX7)KXdYEXi,H-XhYMRXfYK?XgXj.9HX_SX]YL1XmYJ>Y}WwIXiI-3-GXcYyXUYJ$X`Vs[7;XnYEZ;XF! 3;%8;PXX(N3Y[)Xi1YE&/ :;74YQ6X`33C;-(>Xm0(TYF/!YGXg8 9L5P01YPXO-5%C|qd{{/K/E6,=0144:361:955;6443@?B7*7:F89&F35YaX-CYf,XiFYRXE_e{}sF 0*7XRYPYfXa5YXXY8Xf8Y~XmA[9VjYj*#YMXIYOXk,HHX40YxYMXU8OXe;YFXLYuPXP?EB[QV0CXfY{:9XV[FWE0D6X^YVP*$4%OXiYQ(|xp|%c3{}V`1>Y`XH00:8/M6XhQ1:;3414|TE|&o@1*=81G8<3}6<|(f6>>>5-5:8;093B^3U*+*^*UT30XgYU&7*O1953)5@E78--F7YF*B&0:%P68W9Zn5974J9::3}Vk|-,C)=)1AJ4+<3YGXfY[XQXmT1M-XcYTYZXCYZXEYXXMYN,17>XIG*SaS|/eYJXbI?XdNZ+WRYP<F:R PXf;0Xg`$|1GX9YdXjLYxWX!ZIXGYaXNYm6X9YMX?9EXmZ&XZ#XQ>YeXRXfAY[4 ;0X!Zz0XdN$XhYL XIY^XGNXUYS/1YFXhYk.TXn4DXjB{jg|4DEX]:XcZMW=A.+QYL<LKXc[vV$+&PX*Z3XMYIXUQ:ZvW< YSXFZ,XBYeXMM)?Xa XiZ4/EXcP3%}&-|6~:1(-+YT$@XIYRBC<}&,|7aJ6}bp|8)K1|Xg|8C}[T|8Q.89;-964I38361<=/;883651467<7:>?1:.}le|:Z=39;1Y^)?:J=?XfLXbXi=Q0YVYOXaXiLXmJXO5?.SFXiCYW}-;|=u&D-X`N0X^,YzYRXO(QX_YW9`I|>hZ:N&X)DQXP@YH#XmNXi$YWX^=!G6YbYdX>XjY|XlX^XdYkX>YnXUXPYF)FXT[EVTMYmYJXmYSXmNXi#GXmT3X8HOX[ZiXN]IU2>8YdX1YbX<YfWuZ8XSXcZU%0;1XnXkZ_WTG,XZYX5YSX Yp 05G?XcYW(IXg6K/XlYP4XnI @XnO1W4Zp-9C@%QDYX+OYeX9>--YSXkD.YR%Q/Yo YUX].Xi<HYEZ2WdCE6YMXa7F)=,D>-@9/8@5=?7164;35387?N<618=6>7D+C50<6B03J0{Hj|N9$D,9I-,.KB3}m |NzE0::/81YqXjMXl7YG; [.W=Z0X4XQY]:MXiR,XgM?9$9>:?E;YE77VS[Y564760391?14941:0=:8B:;/1DXjFA-564=0B3XlH1+D85:0Q!B#:-6&N/:9<-R3/7Xn<*3J4.H:+334B.=>30H.;3833/76464665755:/83H6633:=;.>5645}&E|Y)?1/YG-,93&N3AE@5 <L1-G/8A0D858/30>8<549=@B8] V0[uVQYlXeD(P#ID&7T&7;Xi0;7T-$YE)E=1:E1GR):--0YI7=E<}n9|aT6783A>D7&4YG7=391W;Zx<5+>F#J39}o/|cc;6=A050EQXg8A1-}D-|d^5548083563695D?-.YOXd37I$@LYLWeYlX<Yd+YR A$;3-4YQ-9XmA0!9/XLY_YT(=5XdDI>YJ5XP1ZAW{9>X_6R(XhYO65&J%DA)C-!B:97#A9;@?F;&;(9=11/=657/H,<8}bz|j^5446>.L+&Y^8Xb6?(CYOXb*YF(8X`FYR(XPYVXmPQ%&DD(XmZXW??YOXZXfCYJ79,O)XnYF7K0!QXmXi4IYFRXS,6<%-:YO(+:-3Q!1E1:W,Zo}Am|n~;3580534*?3Zc4=9334361693:30C<6/717:<1/;>59&:4}6!|rS36=1?75<8}[B|s809983579I.A.>84758=108564741H*9E{L{|u%YQ<%6XfH.YUXe4YL@,>N}Tv|ve*G0X)Z;/)3@A74(4P&A1X:YVH97;,754*A66:1 D739E3553545558E4?-?K17/770843XAYf838A7K%N!YW4.$T19Z`WJ*0XdYJXTYOXNZ 1XaN1A+I&Xi.Xk3Z3GB&5%WhZ1+5#Y[X<4YMXhQYoQXVXbYQ8XSYUX4YXBXWDMG0WxZA[8V+Z8X;D],Va$%YeX?FXfX[XeYf<X:Z[WsYz8X_Y]%XmQ(!7BXIZFX]&YE3F$(1XgYgYE& +[+W!<YMYFXc;+PXCYI9YrWxGXY9DY[!GXiI7::)OC;*$.>N*HA@{C|}&k=:<TB83X`3YL+G4XiK]i}(fYK<=5$.FYE%4*5*H*6XkCYL=*6Xi6!Yi1KXR4YHXbC8Xj,B9ZbWx/XbYON#5B}Ue}+QKXnF1&YV5XmYQ0!*3IXBYb71?1B75XmF;0B976;H/RXU:YZX;BG-NXj;XjI>A#D3B636N;,*%<D:0;YRXY973H5)-4FXOYf0:0;/7759774;7;:/855:543L43<?6=E,.A4:C=L)%4YV!1(YE/4YF+ F3%;S;&JC:%/?YEXJ4GXf/YS-EXEYW,9;E}X$}547EXiK=51-?71C%?57;5>463553Zg90;6447?<>4:9.7538XgN{|!}9K/E&3-:D+YE1)YE/3;37/:05}n<}:UX8Yj4Yt864@JYK..G=.(A Q3%6K>3(P3#AYE$-6H/456*C=.XHY[#S.<780191;057C)=6HXj?955B:K1 E>-B/9,;5.!L?:0>/.@//:;7833YZ56<4:YE=/:7Z_WGC%3I6>XkC*&NA16X=Yz2$X:Y^&J48<99k8}CyB-61<18K946YO4{|N}E)YIB9K0L>4=46<1K0+R;6-=1883:478;4,S+3YJX`GJXh.Yp+Xm6MXcYpX(>7Yo,/:X=Z;Xi0YTYHXjYmXiXj;*;I-8S6N#XgY}.3XfYGO3C/$XjL$*NYX,1 6;YH&<XkK9C#I74.>}Hd`A748X[T450[n75<4439:18A107>|ET}Rf<1;14876/Yb983E<5.YNXd4149>,S=/4E/<306443G/06}0&}UkYSXFYF=44=-5095=88;63844,9E6644{PL}WA8:>)7+>763>>0/B3A545CCnT}Xm|dv}Xq1L/YNXk/H8;;.R63351YY747@15YE4J8;46;.38.>4A369.=-83,;Ye3?:3@YE.4-+N353;/;@(X[YYD>@/05-I*@.:551741Yf5>6A443<3535;.58/86=D4753442$635D1>0359NQ @73:3:>><Xn?;43C14 ?Y|X611YG1&<+,4<*,YLXl<1/AIXjF*N89A4Z576K1XbJ5YF.ZOWN.YGXO/YQ01:4G38Xl1;KI0YFXB=R<7;D/,/4>;$I,YGXm94@O35Yz66695385.>:6A#5}W7n^4336:4157597434433<3|XA}m`>=D>:4A.337370?-6Q96{`E|4A}C`|Qs{Mk|J+~r>|o,wHv>Vw}!c{H!|Gb|*Ca5}J||,U{t+{CN[!M65YXOY_*B,Y[Z9XaX[QYJYLXPYuZ%XcZ8LY[SYPYKZM<LMYG9OYqSQYM~[e{UJXmQYyZM_)>YjN1~[f3{aXFY|Yk:48YdH^NZ0|T){jVFYTZNFY^YTYN~[h{nPYMYn3I]`EYUYsYIZEYJ7Yw)YnXPQYH+Z.ZAZY]^Z1Y`YSZFZyGYHXLYG 8Yd#4~[i|+)YH9D?Y^F~Y7|-eYxZ^WHYdYfZQ~[j|3>~[k|3oYmYqY^XYYO=Z*4[]Z/OYLXhZ1YLZIXgYIHYEYK,<Y`YEXIGZI[3YOYcB4SZ!YHZ*&Y{Xi3~[l|JSY`Zz?Z,~[m|O=Yi>??XnYWXmYS617YVYIHZ(Z4[~L4/=~[n|Yu{P)|];YOHHZ}~[o33|a>~[r|aE]DH~[s|e$Zz~[t|kZFY~XhYXZB[`Y}~[u|{SZ&OYkYQYuZ2Zf8D~[v}% ~[w3},Q[X]+YGYeYPIS~[y}4aZ!YN^!6PZ*~[z}?E~[{3}CnZ=~[}}EdDZz/9A3(3S<,YR8.D=*XgYPYcXN3Z5 4)~[~}JW=$Yu.XX~] }KDX`PXdZ4XfYpTJLY[F5]X~[2Yp}U+DZJ::<446[m@~]#3}]1~]%}^LZwZQ5Z`/OT<Yh^ -~]&}jx[ ~m<z!%2+~ly4VY-~o>}p62yz!%2+Xf2+~ly4VY-zQ`z (=] 2z~o2",C={" ":0,"!":1},c=34,i=2,p,s=[],u=String.fromCharCode,t=u(12539);while(++c<127)C[u(c)]=c^39&&c^92?i++:0;i=0;while(0<=(c=C[a.charAt(i++)]))if(16==c)if((c=C[a.charAt(i++)])<87){if(86==c)c=1879;while(c--)s.push(u(++p))}else s.push(s.join("").substr(8272,360));else if(c<86)s.push(u(p+=c<51?c-16:(c-55)*92+C[a.charAt(i++)]));else if((c=((c-86)*92+C[a.charAt(i++)])*92+C[a.charAt(i++)])<49152)s.push(u(p=c<40960?c:c|57344));else{c&=511;while(c--)s.push(t);p=12539}return s.join("")')();
  3735.  
  3736. JCT8836=JCT11280.substring(0,8836);
  3737.  
  3738. //============================引用ここまで===================================
  3739.  
  3740. }catch(e){
  3741. GM_log("AKiller_ecl:" + e);
  3742. }
  3743.  
  3744. }//-------------ecl()ここまで--------------------
  3745.  
  3746. //要素の変更監視
  3747. var watcher = {
  3748. status: false, //監視状態
  3749. start: function(){
  3750. if(watcher.status) return;
  3751. else watcher.status = true;
  3752.  
  3753. watcher.observer.observe(watcher.target, watcher.config);
  3754.  
  3755. //タブフォーカスが外れたら停止
  3756. var onBlur;
  3757. window.addEventListener("blur",onBlur = function(){
  3758. window.removeEventListener("blur", onBlur,false);
  3759. watcher.rest();
  3760. });
  3761.  
  3762. //5分以上は監視停止し、mousemoveなど操作すると監視再開
  3763. watcher.timer = setTimeout(function(){ watcher.rest(); },(5 * 60000));
  3764. },
  3765. init: function(){
  3766. main("first",document);
  3767.  
  3768. watcher.observer = new MutationObserver(function(mutations){
  3769.  
  3770. mutations.forEach(function(mutation) {
  3771. try{
  3772.  
  3773. //共通
  3774. var target = mutation.target; //変更されたノード
  3775. //mutation.type //変更タイプ
  3776.  
  3777. var oType = Object.prototype.toString.call(target).slice(8, -1);
  3778.  
  3779. if(target.innerHTML == "[Killer]")return;
  3780.  
  3781. switch (mutation.type) {
  3782.  
  3783. case 'attributes' : // 属性が変更された
  3784. //mutation.attributeName; // 属性の名前
  3785. //mutation.attributeNamespace; // 属性の名前空間
  3786. //mutation.oldValue; // 変更前の属性値(attributeOldValueが設定されてる場合)
  3787.  
  3788.  
  3789. // if(oType == "HTMLAnchorElement" || !(target.tagName.match(/^body$/i) && target.parentNode.parent)){
  3790. // if(oType == "HTMLAnchorElement"){
  3791. if(mutation.attributeName == href) return;
  3792. main("mutation_attr",target);
  3793. // }
  3794.  
  3795.  
  3796. case 'childList' : // 子ノードが変更された
  3797. //mutation.target; // 子ノードが変更された親
  3798. //mutation.addedNodes; // 追加されたノードのリスト
  3799. //mutation.removedNodes; // 削除されたノードのリスト
  3800. //mutation.previousSibling; // 変更されたノードの前
  3801. //mutation.nextSibling; // 変更されたノードの次
  3802.  
  3803.  
  3804. if(mutation.addedNodes.length <= 0) return; //削除された場合は除外
  3805.  
  3806. //ページ遷移をせずにURL変更するようなサイト対策
  3807. if(locUrl != location.href){
  3808. main("mutation_chg",target);
  3809. locUrl = location.href;
  3810. return;
  3811. }
  3812.  
  3813. if(location.host.match("google")) remTrack(target); //インスタント検索対策
  3814.  
  3815. /*
  3816. if(oType.match(/HTMLAnchorElement/)){
  3817. multi("mutation_chg",target);
  3818. return;
  3819. }
  3820. if(oType.match(/HTMLBodyElement/)){
  3821. main("mutation_chg",target);
  3822. return;
  3823. }
  3824. */
  3825.  
  3826. for(var mu = 0; mutation.addedNodes.length > mu ; mu++){
  3827. var objMu = mutation.addedNodes[mu];
  3828. oType = Object.prototype.toString.call(objMu).slice(8, -1);
  3829.  
  3830. // if(oType.match(/Text/i) && objMu.innerHTML && objMu.innerHTML.match("href")){
  3831. if(objMu.innerHTML && objMu.innerHTML.match("href")){
  3832. window.setTimeout( function() { main("mutation_chg",target); },500);
  3833. continue;
  3834. }
  3835. if(oType.match(/Text|HTMLBRElement|Comment/i))continue;
  3836.  
  3837. window.setTimeout( function() { main("mutation_chg",objMu); },500);
  3838. }
  3839. }//switch
  3840.  
  3841. }catch(e){
  3842. GM_log("AKiller_mutation_Error:"+e);
  3843.  
  3844. return;
  3845. }
  3846. });
  3847. });
  3848.  
  3849. // watcher.target = document.links; //監視対象
  3850. watcher.target = document.body; //監視対象
  3851. // watcher.attrArray = ['href']; //フィルタ
  3852. //watcher.config = { childList: true ,subtree: true ,attributes:true, attributeFilter: watcher.attrArray};
  3853. watcher.config = { childList: true ,subtree: true ,attributes:true};
  3854. watcher.start();
  3855.  
  3856. // clearTimeout(document.timer);
  3857.  
  3858. },
  3859. stop: function(){
  3860. if(!watcher.status) return;
  3861. watcher.observer.disconnect();
  3862. watcher.observer = null;
  3863. watcher.status = false;
  3864. },
  3865. rest: function(){
  3866. watcher.stop();
  3867. clearTimeout(watcher.timer);
  3868.  
  3869. var onFocusCheck;
  3870. window.addEventListener("focus",onFocusCheck = function(){
  3871. window.removeEventListener("focus", onFocusCheck,false);
  3872. //watcher.init();
  3873. watcher.start();
  3874. });
  3875. /*
  3876. var onEventMove;
  3877. window.addEventListener('mousemove',onEventMove = function(e){
  3878. window.removeEventListener("mousemove", onEventMove,false);
  3879. watcher.init();
  3880. },false);
  3881. var onEventDown;
  3882. window.addEventListener('mousedown',onEventDown = function(e){
  3883. window.removeEventListener("mousedown", onEventDown,false);
  3884. watcher.init();
  3885. },false);
  3886. var onEventUp;
  3887. window.addEventListener('mouseup',onEventUp = function(e){
  3888. window.removeEventListener("mouseup", onEventUp,false);
  3889. watcher.init();
  3890. },false);
  3891. */
  3892.  
  3893. }};
  3894.  
  3895.  
  3896.  
  3897. //実行
  3898. keydownHide();
  3899. removeCookie();
  3900.  
  3901. /*
  3902. //読み込み完了後に実行
  3903. window.addEventListener("load", function() {
  3904. document.timer = setTimeout(watcher.init,500); //linkify系を有効にしてるとsetTimeoutで0秒でもいいのでディレイ入れないと修正できない模様
  3905. //watcher.init();
  3906. }, false);
  3907. */
  3908. document.timer = setTimeout(watcher.init,500); //linkify系を有効にしてるとsetTimeoutで0秒でもいいのでディレイ入れないと修正できない模様
  3909.  
  3910.  
  3911. //継ぎ足し要素対応
  3912. //For AutoPagerize
  3913. var onEventAutoPagerize;
  3914. document.addEventListener('AutoPagerize_DOMNodeInserted',onEventAutoPagerize = function(e){
  3915. var node = e.target;
  3916. remTrack(node);
  3917. }, false);
  3918. //For AutoPager
  3919. var onEventAutoPager;
  3920. document.addEventListener('AutoPagerAfterInsert', onEventAutoPager = function(e){
  3921. var node = e.target;
  3922. remTrack(node);
  3923. }, false);
  3924. //For AutoPatchWork
  3925. var onEventAutoPatchWork;
  3926. document.addEventListener('AutoPatchWork.DOMNodeInserted', onEventAutoPatchWork = function(e){
  3927. var node = e.target;
  3928. remTrack(node);
  3929. }, false);
  3930.  
  3931. /*
  3932. //追加した監視の削除
  3933. var onEventUnload = function(){
  3934. watcher.stop();
  3935. watcher = main = mainCheck = setLink = ecl = expDB = nameDB = cookieDB = null;
  3936.  
  3937. document.removeEventListener("AutoPagerize_DOMNodeInserted", onEventAutoPagerize,false);
  3938. document.removeEventListener("AutoPagerAfterInsert", onEventAutoPager,false);
  3939. document.removeEventListener("AutoPatchWork.DOMNodeInserted", onEventAutoPatchWork,false);
  3940.  
  3941. window.removeEventListener("beforeunload", onEventUnload,false);
  3942. };
  3943. window.addEventListener('beforeunload',onEventUnload, false);
  3944. */
  3945.  
  3946. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址