[HTTP headers] In = TRUE Out = TRUE Key = "URL: title.ext (both) (080225)" Match = "http://title.ext/[^?]+\?(filter=(0$FILTER(false)|1$FILTER(true))\&|) \0" Replace = "$SET(addrbarurl=\u)$RDIR(\0)" In = TRUE Out = FALSE Key = "Location: title.ext (in) (070601)" Match = "?$TST(addrbarurl=http://title.ext/\1\?*)&\0" Replace = "http://title.ext/\1?\0" In = TRUE Out = FALSE Key = "Content-Disposition: title.ext (in) (080502) delete" Match = "?$TST(addrbarurl=http://title.ext/*)" In = FALSE Out = FALSE Key = "Content-Disposition: title.ext (in) (080502)" Match = "?$TST(addrbarurl=http://title.ext/\0\?*)(*; filename=$AV(*.\2)$SET(1=.)|)" Replace = "attachment; filename="\0.\1\2""
うえぽんSW局 | YouTubeダウンロード用Proxomitronのフィルタ(3)
http://shinshu.fm/MHz/14.30/archives/0000321085.html
概要
問題点
導入
[HTTP headers] In = TRUE Out = FALSE Key = "Set-Cookie: YouTube: add download link (1/2) [2011/03/01] use cookie" URL = "([^/]++.|)youtube.com/videoplayback ($OHDR(Referer: *.swf) | $OHDR(User-Agent: *Gecko/))" Match = "(?$SET(1=\r\nSet-Cookie: )&\0)|" Replace = "\0\1mvurl=\u; domain=youtube.com; path=/;" [Patterns] Name = "YouTube: add download link (2/2) [2012/01/21] use cookie" Active = TRUE URL = "([^/]++.|)youtube.com/watch(.php|)\?(v=|*\&v=) $TYPE(htm)" Limit = 256 Match = "(^(^</body>))$STOP()" Replace = "<script type="text/javascript" src="http://local.ptron/swfobject.js"></script>\r\n" "<script type="text/javascript">\r\n" "_d = document;\r\n" "try {\r\n" " if (yt.playerConfig.args.url_encoded_fmt_stream_map.length)\r\n" " //yt.getConfig('PLAYER_CONFIG').args.fmt_url_map\r\n" " //''+yt.preload.start\r\n" " var prx_movieid = decodeURIComponent(yt.playerConfig.args.url_encoded_fmt_stream_map).match(/[?&]id=(\\w+)/)[1];\r\n" "} catch(e) {}\r\n" "if (!prx_movieid)\r\n" " alert('Error: (Proxomitron) "YouTube: add download link"');\r\n" "else {\r\n" " var mvurl_check_count;\r\n" "addMovieLink_timerID = setInterval(function(){\r\n" " if (!RegExp('(?:^|; *)mvurl=[^;]+?[?&]id='+prx_movieid).test(_d.cookie)) {\r\n" " if (++mvurl_check_count > 10) {\r\n" " alert('Error: (Proxomitron) "YouTube: add download link"');\r\n" " clearInterval(addMovieLink_timerID);\r\n" " }\r\n" " return;\r\n" " }\r\n" " filename = ''\r\n" " /* Unique Flag */\r\n" " //+ 'YouTube_'\r\n" " /* ID */\r\n" " //+ location.search.match(/[?&]v=([^&]+)/)[1] + '_'\r\n" " /* TITLE for NTFS */\r\n" " + _d.getElementById('eow-title').innerHTML.replace(/<.*?>/g, '').replace(/^(?:\\s|\\u3000| )+|(?:\\s|\\u3000| )+$/g, '')\r\n" " .replace(/\\?/g, '?').replace(/"/g, '”').replace(/\\//g, '/').replace(/\\\\/g, '¥').replace(/</g, '<').replace(/>/g, '>').replace(/\\*/g, '*').replace(/\\|/g, '|').replace(/:/g, ':')\r\n" " + (/(?:^|; *)mvurl=[^;]+?[?&]itag=(?:18|22|37)(?!\\d)/.test(_d.cookie) ? '.mp4' : (/(?:^|; *)mvurl=[^;]+?[?&]itag=1[37](?!\\d)/.test(_d.cookie) ? '.3gp' : (/(?:^|; *)mvurl=/.test(_d.cookie) ? '.flv' : '')))" " ;\r\n" " _d.getElementById('eow-title').innerHTML = '<textarea id="copy" style="display:none">'+filename+'</textarea>'\r\n" " + '<a id="prx_addlink" title="Download Movie" href="'+_d.cookie.match(/(?:^|; *)mvurl=([^;]+)/)[1]+'" style="font-size:large">'\r\n" " + (/<a /i.test(_d.getElementById('eow-title').innerHTML)\r\n" " ? '[[Download]] (fmt='+_d.cookie.match(/(?:^|; *)mvurl=[^;]+?[?&]itag=(\\d+)/)[1]+')' + '</a> '\r\n" " + _d.getElementById('eow-title').innerHTML" " : _d.getElementById('eow-title').innerHTML\r\n" " + ' (fmt='+_d.cookie.match(/(?:^|; *)mvurl=[^;]+?[?&]itag=(\\d+)/)[1]+')' + '</a>')\r\n" " + ' <span id="setclipboard_container" style="width:100px; height:22px; vertical-align:bottom"></span>'\r\n" " ;\r\n" " var so = new SWFObject("http://local.ptron/setClipboard10.swf", "external_setclipboard", 100, 22, 8, "#FFFFFF");\r\n" " so.addParam("bgcolor", "#FFFFFF");\r\n" " so.addParam("allowScriptAccess", "always");\r\n" " so.addVariable("htmlid", "copy");\r\n" " so.addVariable("value", filename.replace(/&/g, '&'));\r\n" " so.write("setclipboard_container");\r\n" " \r\n" " _d.cookie = 'mvurl=; domain=youtube.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n" " clearInterval(addMovieLink_timerID);\r\n" " \r\n" " changeMovieLink_timerID = setInterval(function(){\r\n" " if (!/(?:^|; *)mvurl=[^;]+?[?&]id=/.test(_d.cookie) || _d.cookie.match(/(?:^|; *)mvurl=[^;]+?[?&]id=(\\w+)/)[1] !== prx_movieid) return;\r\n" " if (_d.getElementById('prx_addlink').href !== _d.cookie.match(/(?:^|; *)mvurl=([^;]+)/)[1].replace(/&begin=\\d+/, '')) {\r\n" " var fmt = /(?:^|; *)mvurl=[^;]+?[?&]itag=\\d+/.test(_d.cookie) ? _d.cookie.match(/(?:^|; *)mvurl=[^;]+?[?&]itag=(\\d+)/)[1] : 0;\r\n" " _d.getElementById('prx_addlink').innerHTML = _d.getElementById('prx_addlink').innerHTML.replace(/ \\(fmt=\\d+\\)/, ' (fmt='+fmt+')');\r\n" " _d.getElementById('prx_addlink').href = _d.cookie.match(/(?:^|; *)mvurl=([^;]+)/)[1].replace(/&begin=\\d+/, '');\r\n" " var ext = /^(?:18|22|37)$/.test(fmt) ? '.mp4' : (/^1[37]$/.test(fmt) ? '.3gp' : '.flv');\r\n" " filename = filename.replace(/\.(?:flv|mp4)$/i, ext);\r\n" " _d.getElementById('copy').innerHTML = filename;\r\n" " }\r\n" " _d.cookie = 'mvurl=; domain=youtube.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n" " }, 3000);\r\n" "}, 1000);\r\n" "}\r\n" "</script>"
ちょっと弄れば他のサイトでも使用可能
IP、同時接続数、Referer:、x-flash-version: などを確認しているところもある
※Set-Cookie: の domain は、URLと同じでないとブラウザに無視されてしまう(サブドメイン部分は違っていても問題ない) これを解決するには、$RDIRを使う必要がある
CookieもJSもFlashも不要 4.5以降専用
[Patterns] Name = "YourFileHost: add download link [2011/02/27]" Active = TRUE URL = "([^/]++.|)yourfilehost.com/$TYPE(htm)" Limit = 512 Match = "url : escape \( $AV(http*.flv&\1) $SET(YourFileHost_FLV=\1) STOP" "|Description : \0<br>|(Uploaded By)\1" Replace = "$STOP()<noscript><a title="Download Movie" href="$GET(YourFileHost_FLV)" style="font-size:large">[[ Download FLV ]]</a></noscript>\r\n" "<div id="download_link"></div>\r\n" "Description: <span id="prx_movie_description">\0</span><br>\1\r\n" "<script type="text/javascript" src="http://local.ptron/swfobject.js"></script>\r\n" "<script type="text/javascript">\r\n" "_d = document;\r\n" "filename = ''\r\n" " /* Unique Flag */\r\n" " //+ "YourFileHost_"\r\n" " /* ID (default filename) */\r\n" " + location.search.match(/file=([^&]+)/i)[1]\r\n" " + ' '\r\n" " /* TITLE for NTFS */\r\n" " + _d.getElementById('prx_movie_description').innerHTML.replace(/<.*?>/g, '').replace(/^(?:\\s|\\u3000| )+|(?:\\s|\\u3000| )+$/g, '')\r\n" " .replace(/\\?/g, '?').replace(/"/g, '”').replace(/\\//g, '/').replace(/\\\\/g, '¥').replace(/</g, '<').replace(/>/g, '>').replace(/\\*/g, '*').replace(/\\|/g, '|').replace(/:/g, ':')\r\n" " + '.flv'\r\n" ";\r\n" "_d.getElementById('download_link').innerHTML = '<textarea id="copy" style="display:none">'+filename+'</textarea>'\r\n" "+ '<a title="Download Movie" href="$GET(YourFileHost_FLV)" style="font-size:large">' +filename.replace(/&/g, '&')+ '</a>'\r\n" "+ ' <span id="setclipboard_container" style="width:100px; height:22px; vertical-align:bottom"></span>'\r\n" ";\r\n" "var so = new SWFObject("http://local.ptron/setClipboard10.swf", "external_setclipboard", 100, 22, 8, "#FFFFFF");\r\n" "so.addParam("bgcolor", "#FFFFFF");\r\n" "so.addParam("allowScriptAccess", "always");\r\n" "so.addVariable("htmlid", "copy");\r\n" "so.addVariable("value", filename.replace(/&/g, '&'));\r\n" "so.write("setclipboard_container");\r\n" "</script>"
動画ページでは4.5以降でのみ動作
CookieとFlash不要
[Patterns] Name = "PornoTube: add download link [2011/11/06]" Active = TRUE URL = "([^/]++.|)pornotube.com/$TYPE(htm)" Limit = 512 Match = "<(img\s[^>]++src=$AV(*/videos+/\0/\1(_[0-9]+|).jpg)*>$SET(ptad=\0)" "|/body>$SET(0=$GET(ptad))$URL(([^?]+\?(*\&|)m=|*/m/)([0-9]+)\1)$SET(2=style="position:absolute;top:0px;left:0px;background-color:#fcc;color:red;border:1px solid red;font-size:x-large" )" ")&&\9" Replace = "\9\r\n" "<a \2href="http://video.pornotube.com/\0/\1.flv">[[[ Download ]]]</a><br />\r\n"
video2 の物もあるので(一版投稿はvideoで、業者の投稿はvideo2?)、適当なURLリストに以下の行を追記してください。
## PornoTube video.pornotube.com/\0.flv (^$RESP(200)) $JUMP(http://video2.pornotube.com/\0.flv)
概要・問題点・導入方法はYouTube: add download link (JavaScriptとCookieとFlash使用)と大体同じ
※Geckoの場合、全く別の動画がDLされてしまうことがある
[HTTP headers] In = TRUE Out = FALSE Key = "Set-Cookie: AgeSage: add download link (1/2) [2011/03/01] use cookie" URL = "[^/]++.asg.to/(flv|dm)/ ($OHDR(Referer: http://asg.to/uraui.swf) | $OHDR(User-Agent: *Gecko/))" Match = "(?$SET(1=\r\nSet-Cookie: )&\0)|" Replace = "\0\1mvurl=\u; domain=asg.to; path=/;" [Patterns] Name = "AgeSage: add download link (2/2) [2011/02/27] use cookie" Active = TRUE URL = "asg.to/contentsPage.htm$TYPE(htm)" Limit = 256 Match = "(^(^</body>))$STOP()" Replace = "<script type="text/javascript" src="http://local.ptron/swfobject.js"></script>\r\n" "<script type="text/javascript">\r\n" "_d = document;\r\n" "obj_title = _d.getElementById('bookmarktitle');\r\n" "addMovieLink_timerID = setInterval(function(){\r\n" " if (!/(?:^|; *)mvurl=/.test(_d.cookie)) return;\r\n" " filename = ''\r\n" " /* Unique Flag */\r\n" " //+ 'AgeSage_'\r\n" " /* ID */\r\n" " //+ location.search.match(/[?&]mcd=(\\w+)/)[1] + '_'\r\n" " /* TITLE for NTFS */\r\n" " + obj_title.innerHTML.replace(/<.*?>/g, '').replace(/^(?:\\s|\\u3000| )+|(?:\\s|\\u3000| )+$/g, '')\r\n" " .replace(/\\?/g, '?').replace(/"/g, '”').replace(/\\//g, '/').replace(/\\\\/g, '¥').replace(/</g, '<').replace(/>/g, '>').replace(/\\*/g, '*').replace(/\\|/g, '|').replace(/:/g, ':')\r\n" " + (/(?:^|; *)mvurl=[^;]+?\.(?:flv|mp4)/i.test(_d.cookie) ? _d.cookie.match(/(?:^|; *)mvurl=[^;]+?(\.(?:flv|mp4))/i)[1] : '.flv')\r\n" " ;\r\n" " obj_title.innerHTML = '<textarea id="copy" style="display:none">'+filename+'</textarea>'\r\n" " + '<a title="Download Movie" href="'+_d.cookie.match(/(?:^|; *)mvurl=([^;]+)/)[1]+'" style="font-size:large">' +obj_title.innerHTML+ '</a>'\r\n" " + ' <span id="setclipboard_container" style="width:100px; height:22px; vertical-align:bottom"></span>'\r\n" " ;\r\n" " var so = new SWFObject("http://local.ptron/setClipboard10.swf", "external_setclipboard", 100, 22, 8, "#FFFFFF");\r\n" " so.addParam("bgcolor", "#FFFFFF");\r\n" " so.addParam("allowScriptAccess", "always");\r\n" " so.addVariable("htmlid", "copy");\r\n" " so.addVariable("value", filename.replace(/&/g, '&'));\r\n" " so.write("setclipboard_container");\r\n" " \r\n" " _d.cookie = 'mvurl=; domain=asg.to; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n" " clearInterval(addMovieLink_timerID);\r\n" "}, 1000);\r\n" "</script>"
test: http://www.google.com/url?sa=D&q=http://www.dailymotion.com/video/x55za2_mitsubishi-colt-ralliart-version-r_auto SD, HQ, HD の3つがある
概要・問題点・導入方法はYouTube: add download link (JavaScriptとCookieとFlash使用)と大体同じ
[HTTP headers] In = TRUE Out = FALSE Key = "Set-Cookie: DailyMotion: add download link (1/2) [2011/11/06] use cookie" URL = "([^/]++.|)dailymotion.com/*.(mp4|flv) ($OHDR(Referer: http://([^/]++.|)(dailymotion.com|dmcdn.net)/[^?]++.swf) | $OHDR(User-Agent: *Gecko/))" Match = "((?$SET(1=\r\nSet-Cookie: )&\0)|) ($URL(*cdn/$SET(9=shortcut))|)" Replace = "\0\1mv\9url=\u; domain=dailymotion.com; path=/;" [Patterns] Name = "DailyMotion: add download link (2/2) [2011/11/06] use cookie" Active = TRUE URL = "([^/]++.|)dailymotion.com/video/?$TYPE(htm)" Limit = 256 Match = "(^(^</body>))$STOP()" "$SET(0=" "<script type="text/javascript" src="http://local.ptron/swfobject.js"></script>\r\n" "<script type="text/javascript">\r\n" "_d = document;\r\n" "obj_title = $$('h1.dmco_title')[0];\r\n" "var mvurl_check_count = 0;\r\n" ")" Replace = "\0" "addMovieLink_timerID = setInterval(function(){\r\n" " if (!/(?:^|; *)mvurl=/.test(_d.cookie)) {\r\n" " if (++mvurl_check_count > 20) {\r\n" " alert('Error: (Proxomitron) "DailyMotion: add download link"');\r\n" " clearInterval(addMovieLink_timerID);\r\n" " }\r\n" " return;\r\n" " }\r\n" " filename = ''\r\n" " /* Unique Flag */\r\n" " //+ 'DailyMotion_'\r\n" " /* ID */\r\n" " //+ location.pathname.match(/\\/video\\/(\\w+?)_/)[1] + '_'\r\n" " /* TITLE for NTFS */\r\n" " + obj_title.innerHTML.replace(/<.*?>/g, '').replace(/^(?:\\s|\\u3000| )+|(?:\\s|\\u3000| )+$/g, '')\r\n" " .replace(/\\?/g, '?').replace(/"/g, '”').replace(/\\//g, '/').replace(/\\\\/g, '¥').replace(/</g, '<').replace(/>/g, '>').replace(/\\*/g, '*').replace(/\\|/g, '|').replace(/:/g, ':')\r\n" " + (/(?:^|; *)mvurl=[^;]+?\\.(?:flv|mp4)/i.test(_d.cookie) ? _d.cookie.match(/(?:^|; *)mvurl=[^;]+?(\\.(?:flv|mp4))/i)[1] : '.flv')\r\n" " ;\r\n" " obj_title.innerHTML = '<textarea id="copy" style="display:none">'+filename+'</textarea>'\r\n" " + '<a id="prx_addlink" title="Download Movie" href="'+_d.cookie.match(/(?:^|; *)mvurl=([^;]+)/)[1]+'" style="color:blue">' +obj_title.innerHTML" " //+ '<br /><span style="font-size:small">('+(/(?:^|; *)mvshortcuturl=[^;]+?\\/cdn\\/[^;]+?\\/video\\//.test(_d.cookie) ? _d.cookie.match(/(?:^|; *)mvshortcuturl=[^;]+?\\/cdn\\/([^;]+?)\\/video\\//)[1] : 'unknown')+')</span></a>'\r\n" " + ' <span style="font-size:small">('+(/(?:^|; *)mvuurl=[^;]+?(?:_h[qd]|)\\.\\w+\\?/.test(_d.cookie) ? _d.cookie.match(/(?:^|; *)mvurl=[^;]+?(?:_(h[qd])|)\\.\\w+\\?/)[1].toUpperCase() : 'unknown')+')</span></a>'\r\n" " + ' <span id="setclipboard_container" style="width:100px; height:22px; vertical-align:bottom"></span>'\r\n" " ;\r\n" " var so = new SWFObject("http://local.ptron/setClipboard10.swf", "external_setclipboard", 100, 22, 8, "#FFFFFF");\r\n" " so.addParam("bgcolor", "#FFFFFF");\r\n" " so.addParam("allowScriptAccess", "always");\r\n" " so.addVariable("htmlid", "copy");\r\n" " so.addVariable("value", filename.replace(/&/g, '&'));\r\n" " so.write("setclipboard_container");\r\n" " \r\n" " _d.cookie = 'mvurl=; domain=dailymotion.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n" " _d.cookie = 'mvshortcuturl=; domain=dailymotion.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n" " clearInterval(addMovieLink_timerID);\r\n" " \r\n" " prx_movieid = location.pathname.match(/\\/video\\/(\\w+?)_/)[1];\r\n" " changeMovieLink_timerID = setInterval(function(){\r\n" " if (!/(?:^|; *)mvurl=/.test(_d.cookie) || !/(?:^|; *)mvshortcuturl=[^;]+?\\/video\\/[^;]+?\\./.test(_d.cookie) || _d.cookie.match(/(?:^|; *)mvshortcuturl=[^;]+?\\/video\\/([^;]+?)\\./)[1] !== prx_movieid) return;\r\n" " if (_d.getElementById('prx_addlink').href !== _d.cookie.match(/(?:^|; *)mvurl=([^;]+)/)[1].replace(/&start=\\d+/, '')) {\r\n" " //var fmt = /(?:^|; *)mvshortcuturl=[^;]+?\\/cdn\\/[^;]+?\\/video\\//.test(_d.cookie) ? _d.cookie.match(/(?:^|; *)mvshortcuturl=[^;]+?\\/cdn\\/([^;]+?)\\/video\\//)[1] : 'unknown';\r\n" " var fmt = /(?:^|; *)mvurl=[^;]+?(?:_h[qd]|)\\.\\w+\\?/.test(_d.cookie) ? _d.cookie.match(/(?:^|; *)mvurl=[^;]+?(?:_(h[qd])|)\\.\\w+\\?/)[1].toUpperCase() : 'unknown';\r\n" " if (!fmt) fmt = 'SD';" " _d.getElementById('prx_addlink').innerHTML = _d.getElementById('prx_addlink').innerHTML.replace(/\\(.+?\\)<\\/span>/i, '('+fmt+')</span>');\r\n" " _d.getElementById('prx_addlink').href = _d.cookie.match(/(?:^|; *)mvurl=([^;]+)/)[1].replace(/&start=\\d+/, '');\r\n" " var ext = /H264|^H[DQ]$/i.test(fmt) ? '.mp4' : (/FLV|^SD$/i.test(fmt) ? '.flv' : '');\r\n" " filename = filename.replace(/\\.(?:flv|mp4)$/i, ext);\r\n" " _d.getElementById('copy').innerHTML = filename;\r\n" " }\r\n" " _d.cookie = 'mvurl=; domain=dailymotion.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n" " _d.cookie = 'mvshortcuturl=; domain=dailymotion.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n" " }, 3000);\r\n" "}, 1000);\r\n" "</script>"
概要・問題点・導入方法はYouTube: add download link (JavaScriptとCookieとFlash使用)と大体同じ
[HTTP headers] In = TRUE Out = FALSE Key = "Set-Cookie: NantokaDoga: add download link (1/2) [2011/03/01] use cookie" URL = "([^/]++.|)nantokadoga.com(:[0-9]+|)/movie/getfile.php\?ff=" Match = "((?$SET(1=\r\nSet-Cookie: )&\0)|) ($OHDR(Referer: http://nantokadoga.com/player.swf\?(*\&|)mid=([^&]+)\2) | $OHDR(User-Agent: *Gecko/))" Replace = "\0\1mvurl=\u#movieid=\2; domain=nantokadoga.com; path=/; $CONFIRM(NantokaDoga's Movie\r\nMaxConnection = 1\r\n\r\nKill Connection ?)\k$ADDLSTBOX(DownloadList,\u)" [Patterns] Name = "NantokaDoga: add download link (2/2) [2011/02/27] use cookie" Active = TRUE URL = "nantokadoga.com/player.php$TYPE(htm)" Limit = 256 Match = "(^(^</body>))$STOP()" Replace = "<script type="text/javascript" src="http://local.ptron/swfobject.js"></script>\r\n" "<script type="text/javascript">\r\n" "_d = document;\r\n" "obj_title = _d.getElementById('mov_title');\r\n" "prx_movieid = location.search.match(/[?&]mid=(\\w+)/)[1];\r\n" "filename = ''\r\n" " /* Unique Flag */\r\n" " //+ 'NantokaDoga_'\r\n" " /* ID */\r\n" " //+ location.search.match(/[?&]mid=(\\w+)/)[1] + '_'\r\n" " /* TITLE for NTFS */\r\n" " + obj_title.innerHTML.replace(/<.*?>/g, '').replace(/^(?:\\s|\\u3000| )+|(?:\\s|\\u3000| )+$/g, '')\r\n" " .replace(/\\?/g, '?').replace(/"/g, '”').replace(/\\//g, '/').replace(/\\\\/g, '¥').replace(/</g, '<').replace(/>/g, '>').replace(/\\*/g, '*').replace(/\\|/g, '|').replace(/:/g, ':')\r\n" " + '.mp4'\r\n" ";\r\n" "_d.write('<input id="obj_cookie" title="Cookie:" type="text" style="position:absolute;left:0;top:0;width:100%" onfocus="this.select()" value="'+_d.cookie.replace(/</g, '<').replace(/"/g, '"')+'" />');\r\n" "addMovieLink_timerID = setInterval(function(){\r\n" " if (!RegExp('(?:^|; *)mvurl=[^;]+?#movieid='+prx_movieid).test(_d.cookie)) return;\r\n" " obj_title.innerHTML = '<textarea id="copy" style="display:none">'+filename+'</textarea>'\r\n" " + '<a title="Download Movie" href="'+_d.cookie.match(/(?:^|; *)mvurl=([^;]+?)#movieid=/)[1]+'" style="font-size:large">' +obj_title.innerHTML+ '</a>'\r\n" " + ' <span id="setclipboard_container" style="width:100px; height:22px; vertical-align:bottom"></span>'\r\n" " ;\r\n" " var so = new SWFObject("http://local.ptron/setClipboard10.swf", "external_setclipboard", 100, 22, 8, "#FFFFFF");\r\n" " so.addParam("bgcolor", "#FFFFFF");\r\n" " so.addParam("allowScriptAccess", "always");\r\n" " so.addVariable("htmlid", "copy");\r\n" " so.addVariable("value", filename.replace(/&/g, '&'));\r\n" " so.write("setclipboard_container");\r\n" " \r\n" " _d.cookie = 'mvurl=; domain=nantokadoga.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n" " _d.getElementById('obj_cookie').removeNode(true);\r\n" " clearInterval(addMovieLink_timerID);\r\n" "}, 1000);\r\n" "</script>"
概要・問題点・導入方法はYouTube: add download link (JavaScriptとCookieとFlash使用)と大体同じ
※全く別の動画がDLされてしまうことがある
veoh.com/proxo_rdir/ あたりが適当すぎてまずげ
[HTTP headers] In = TRUE Out = FALSE Key = "Content-Type: Veoh: add download link (1/3) [2011/03/01] use cookie (in) llnwd->$JUMP(proxo_rdir)" URL = "veoh-[^/]++.llnwd.net[:/] (^$TST(addrbarurl=?))" Match = "video/&\0" Replace = "\0\r\nSet-Cookie: mvurl=\u; domain=veoh.com; path=/;$JUMP(http://veoh.com/proxo_rdir/\u)" In = TRUE Out = TRUE Key = "URL: Veoh: add download link (2/3) [2011/03/01] use cookie (both) proxo_rdir->$RDIR(llnwd)" URL = "veoh.com/proxo_rdir/https+://veoh-[^/]++.llnwd.net[:/]" Match = "$URL(http://veoh.com/proxo_rdir/\0) $SET(addrbarurl=\u) $RDIR(\0)" [Patterns] Name = "Veoh: add download link (2/2) [2011/11/06] use cookie" Active = TRUE URL = "([^/]++.|)veoh.com/$TYPE(htm)" Limit = 256 Match = "(^(^</body>))$STOP()" Replace = "<script type="text/javascript" src="http://local.ptron/swfobject.js"></script>\r\n" "<script type="text/javascript" defer="defer">\r\n" "_d = document;\r\n" "var mvurl_check_count = 0;\r\n" "addMovieLink_timerID = setInterval(function(){\r\n" " if (!/(?:^|; *)mvurl=/.test(_d.cookie)) {\r\n" " if (++mvurl_check_count > 20) {\r\n" " alert('Error: (Proxomitron) "Veoh: add download link"');\r\n" " clearInterval(addMovieLink_timerID);\r\n" " }\r\n" " return;\r\n" " }\r\n" " obj_title = $$('h1.video-title')[0];\r\n" " filename = ''\r\n" " /* Unique Flag */\r\n" " //+ 'Veoh_'\r\n" " /* ID */\r\n" " //+ location.pathname.match(/\\w+$/) + '_'\r\n" " /* TITLE for NTFS */\r\n" " + obj_title.innerHTML.replace(/<.*?>/g, '').replace(/^(?:\\s|\\u3000| )+|(?:\\s|\\u3000| )+$/g, '')\r\n" " .replace(/\\?/g, '?').replace(/"/g, '”').replace(/\\//g, '/').replace(/\\\\/g, '¥').replace(/</g, '<').replace(/>/g, '>').replace(/\\*/g, '*').replace(/\\|/g, '|').replace(/:/g, ':')\r\n" " //+ (/(?:^|; *)mvurl=[^;]+?\.(?:flv|mp4)/i.test(_d.cookie) ? _d.cookie.match(/(?:^|; *)mvurl=[^;]+?(\.(?:flv|mp4))/i)[1] : '.flv')\r\n" " ;\r\n" " obj_title.innerHTML = '<textarea id="copy" style="display:none">'+filename+'</textarea>'\r\n" " + '<a title="Download Movie" href="'+_d.cookie.match(/(?:^|; *)mvurl=([^;]+)/)[1]+'" style="font-size:large">' +obj_title.innerHTML+ '</a>'\r\n" " + ' <span id="setclipboard_container" style="width:100px; height:22px; vertical-align:bottom"></span>'\r\n" " ;\r\n" " var so = new SWFObject("http://local.ptron/setClipboard10.swf", "external_setclipboard", 100, 22, 8, "#FFFFFF");\r\n" " so.addParam("bgcolor", "#FFFFFF");\r\n" " so.addParam("allowScriptAccess", "always");\r\n" " so.addVariable("htmlid", "copy");\r\n" " so.addVariable("value", filename.replace(/&/g, '&'));\r\n" " so.write("setclipboard_container");\r\n" " \r\n" " _d.cookie = 'mvurl=; domain=veoh.com; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n" " clearInterval(addMovieLink_timerID);\r\n" "}, 1000);\r\n" "</script>"
概要
問題点
導入
[Patterns] Name = "GyaO: add download link (2010-03-28) swf" Active = TRUE URL = "([^/]++.|)gyao.yahoo.co.jp/player/$TYPE(htm)" Limit = 512 Match = "$NEST(<h([1-9])\8(\s|>),class=$AV(ttl)> (\9 <&&(*[%E8][%A9][%B1][%E6][%95][%B0][%E9][%99][%90][%E5][%AE][%9A]*$SET(7=red)|*$SET(7=black)))/h$TST(\8)>)" "$URL(http://([^/]++.|)gyao.yahoo.co.jp/player/([0-9]+)\0/(v[0-9]+)\1/(v[0-9]+)\2*)" "$STOP()" Replace = "<h\8 class="ttl"><a id="asx_link" title="Download Movie (asx)" href="http://player.gyao.yahoo.co.jp/wmp/makeAsx.php?cp_id=\0&program_id=\1&video_id=\2">\9</a>" "<!--" "makeAsxSl.php" "&band=1500" "&tok=md5" "-->" "" " <span id="setclipboard_container" style="width:100px; height:22px; vertical-align:bottom"></span>" "<textarea id="copy" style="display:none"></textarea>" "<script type="text/javascript" src="http://local.ptron/prototype.js"></script>\r\n" "<script type="text/javascript" src="http://local.ptron/swfobject.js"></script>\r\n" "<script type="text/javascript">\r\n" "_d = document;\r\n" "var filename = ''\r\n" " /* Unique Flag */\r\n" " //+ 'GyaO_'\r\n" " /* ID */\r\n" " //+ location.pathname.replace(/\\//g, '-').replace(/-player-|^-|-$/g, '') + '_'\r\n" " /* TITLE for NTFS */\r\n" " + _d.getElementById('asx_link').innerHTML.replace(/<.*?>/g, '').replace(/^(?:\\s|\\u3000| )+|(?:\\s|\\u3000| )+$/g, '')\r\n" " .replace(/\\?/g, '?').replace(/"/g, '”').replace(/\\//g, '/').replace(/\\\\/g, '¥').replace(/</g, '<').replace(/>/g, '>').replace(/\\*/g, '*').replace(/\\|/g, '|').replace(/:/g, ':')\r\n" " //+ '.asx'\r\n" " + '.wmv'\r\n" ";\r\n" "addFlvLink_timerID = setInterval(function(){\r\n" " try{\r\n" " var so = new SWFObject("http://local.ptron/setClipboard10.swf", "external_setclipboard", 100, 22, 8, "#FFFFFF");\r\n" " so.addParam("bgcolor", "#FFFFFF");\r\n" " so.addParam("allowScriptAccess", "always");\r\n" " so.addVariable("htmlid", "copy");\r\n" " so.addVariable("value", filename.replace(/&/g, '&'));\r\n" " so.write("setclipboard_container");\r\n" " \r\n" " clearInterval(addFlvLink_timerID);\r\n" " }catch(e){}\r\n" "}, 1000)\r\n" "" "var myAjax = new Ajax.Request(\r\n" " 'http://gyao.yahoo.co.jp/proxo_rdir/?http://player.gyao.yahoo.co.jp/wmp/?cp_id=\0&program_id=\1&video_id=\2',\r\n" " {\r\n" " asynchronous: true,\r\n" " method: 'get',\r\n" " onComplete: function(a){\r\n" " var tmp = a.responseText.match(/var +tok *= *(?:"([^"]+)"|'([^']+)'|([^;]+))/);" " var tmp2 = a.responseText.match(/var +space_id *= *(?:"([^"]+)"|'([^']+)'|([^;]+))/);" " _d.getElementById('asx_link').href += '&tok=' + (tmp[1] ? tmp[1] : tmp[2] ? tmp[2] : tmp[3]) + '&space_id=' + (tmp2[1] ? tmp2[1] : tmp2[2] ? tmp2[2] : tmp2[3]);" " _d.getElementById('asx_link').style.color = '\7';" " _d.getElementById('asx_link').style.backgroundColor = '#ffddaa';" " }\r\n" " }\r\n" ");\r\n" "" "" "</script>" "" "</h\8>"
おまけ
Name = "GyaO: WatchCushion (2009-10-05)" Active = TRUE URL = "([^/]++.|)gyao.yahoo.co.jp/$TYPE(htm)" Limit = 2048 Match = "$NEST(<script[^>]+>, chkFlag = isCommonEnvCheck\1,</script>)" "$STOP()" Replace = "<script type="text/javascript">\r\n" "_d = document;\r\n" "_d.write('<button onclick="loadPlayer();this.style.display=\\'none\\';this.removeNode(true)" style="font-size:x-large; display:block; margin:auto">Load Player</button><div id="container"></div>');\r\n" "function loadPlayer(){\r\n" " b = '';\r\n" " _d.write = function(a){\r\n" " b += a;\r\n" " };\r\n" " chkFlag = isCommonEnvCheck\1\r\n" " _d.getElementById('container').innerHTML = b;\r\n" "}\r\n" "</script>"
適当なURL BlockListに↓を追記すれば、対応が面倒なサイトやマイナーサイトのFLV/MP4も楽にDL出来るようになる ※拡張子が flv/mp4 ではない場合、動作しない
[^?]++.(flv|mp4)(\?|(^?)) $OHDR(Referer: ?) $ADDLSTBOX(DownloadList,\u) #[^?]++.(flv|mp4)(\?|(^?)) $OHDR(Referer: ?) $KEYCHK(L) $ADDLSTBOX(DownloadList,\u)
動作しなくても、キャッシュを探せば FLV/MP4 は見つかる筈です