YouTube等の動画のダウンロードリンクを表示 Edit

共通設定 Edit

  1. 一部のフィルタは、filesetClipboard.swfを「Proxomitronがあるフォルダ/html/」に置く必要があります。(FlashPlayer10では動作しません) 説明
  2. 一部のフィルタは、setClipboard10.swfを「Proxomitronがあるフォルダ/html/」に置く必要があります。 説明
  3. 一部のフィルタは、swfobject.js (1.5) を「Proxomitronがあるフォルダ/html/」に置く必要があります。 公式サイト 直接リンク 説明
  4. 一部のフィルタは、prototype.jsを「Proxomitronがあるフォルダ/html/」に置く必要があります。
  5. 一部のフィルタは、以下のフィルタ (title.ext) が必要になります
    [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""

YouTube Edit

動作確認用URL
Where the Hell is Matt? (2008) FLV, MP4, HD
http://www.youtube.com/watch?v=_KkB5dBN1bY&fmt=18 FLV以外存在しない
http://www.youtube.com/watch?v=7BOhDaJH0m4&fmt=37 Full-HD
※他にも幾つかのフォーマットで閲覧出来る 2 fmt=(5|6|13|17|18|22|34|35|37)

問題が出そうな文字 &"'

YouTubeのURLを細工して使える小技をざくざくまとめてみた

外部サイトのフィルタ Edit

うえぽんSW局 | YouTubeダウンロード用Proxomitronのフィルタ(3)
http://shinshu.fm/MHz/14.30/archives/0000321085.html

YouTube: add download link (JavaScriptとCookieとFlash使用) [2012/01/21] Edit

概要

問題点

導入

  1. Proxomitronがあるフォルダ/html/ に swfobject.js, setClipboard10.swf を保存
  2. 以下のフィルタを導入
    [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|&nbsp;)+|(?:\\s|\\u3000|&nbsp;)+$/g, '')\r\n"
    "			.replace(/\\?/g, '&#xff1f;').replace(/"/g, '&#8221;').replace(/\\//g, '&#xff0f;').replace(/\\\\/g, '&#xffe5;').replace(/</g, '&#xff1c;').replace(/>/g, '&#xff1e;').replace(/\\*/g, '&#xff0a;').replace(/\\|/g, '&#xff5c;').replace(/:/g, '&#xff1a;')\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(/&amp;/g, '&#xff06;'));\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>"
    1. 最初の「filename」部分がクリップボードに代入される文字列になります。適当にいじって使用してください。

更新・流用方法 [2011/03/01] Edit

ちょっと弄れば他のサイトでも使用可能
IP、同時接続数、Referer:、x-flash-version: などを確認しているところもある
※Set-Cookie: の domain は、URLと同じでないとブラウザに無視されてしまう(サブドメイン部分は違っていても問題ない) これを解決するには、$RDIRを使う必要がある

  1. [HTTP headers]
    In = TRUE
    Out = FALSE
    Key = "Set-Cookie: ServiceName: add download link (1/2) [YYYY/MM/DD] use cookie"
    URL = "動画があるURLの共通部分(ログを見れば見つかる Content-Length: や、Content-Type: などがヒント) ($OHDR(Referer: FlashPlayerからアクセスしたときのみSet-Cookie:するようにする 例えば「*.swf」)| $OHDR(User-Agent: *Gecko/))"
    Match = "(?$SET(1=\r\nSet-Cookie: )&\0)|"
    Replace = "\0\1mvurl=\u; domain=プレイヤーなどがあるURLのホスト部分※サブドメイン部分は不要; path=/;"

    [Patterns]
    Name = "ServiceName: add download link (2/2) [YYYY/MM/DD] use cookie"
    Active = TRUE
    URL = "プレイヤーなどがあるURL$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"
    "filename = ''\r\n"
    " /* Unique Flag */\r\n"
    " //+ 'ServiceName_'\r\n"
    " /* ID */\r\n"
    " //+ ID部分(URLなどから抜き出す) + '_'\r\n"
    " /* TITLE for NTFS */\r\n"
    " + _d.getElementById('動画タイトルを囲むタグのid(無い場合MatchとReplaceで作り出すか、JavaScriptで何とかする)').innerHTML.replace(/<.*?>/g, '').replace(/^(?:\\s|\\u3000|&nbsp;)+|(?:\\s|\\u3000|&nbsp;)+$/g, '')\r\n"
    " .replace(/\\?/g, '&#xff1f;').replace(/"/g, '&#8221;').replace(/\\//g, '&#xff0f;').replace(/\\\\/g, '&#xffe5;').replace(/</g, '&#xff1c;').replace(/>/g, '&#xff1e;').replace(/\\*/g, '&#xff0a;').replace(/\\|/g, '&#xff5c;').replace(/:/g, '&#xff1a;')\r\n"
    " + ((/(?:^|; *)mvurl=[^;]+?\.(?:flv|mp4)/i.test(_d.cookie) ? _d.cookie.match(/(?:^|; *)mvurl=[^;]+?(\.(?:flv|mp4))/i)[1] : '.flv')\r\n"
    ";\r\n"
    "addMovieLink_timerID = setInterval(function(){\r\n"
    " if (!/(?:^|; *)mvurl=/.test(_d.cookie)) return;\r\n"
    " _d.getElementById('動画タイトルを囲むタグのid(無い場合MatchとReplaceで作り出すか、JavaScriptで何とかする)').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">' +_d.getElementById('動画タイトルを囲むタグのid(無い場合MatchとReplaceで作り出すか、JavaScriptで何とかする)').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(/&amp;/g, '&#xff06;'));\r\n"
    " so.write("setclipboard_container");\r\n"
    " \r\n"
    " _d.cookie = 'mvurl=; domain=プレイヤーなどがあるURLのホスト部分※サブドメイン部分は不要; path=/; expires=Thu, 01-Jan-1970 00:00:01 GMT; max-age=0;';\r\n"
    " clearInterval(addMovieLink_timerID);\r\n"
    "}, 1000);\r\n"
    "</script>"

ニコニコ動画 Edit

Gallery/nicovideo

YourFileHost Edit

YourFileHost: add download link [2011/02/27] Edit

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|&nbsp;)+|(?:\\s|\\u3000|&nbsp;)+$/g, '')\r\n"
"		.replace(/\\?/g, '&#xff1f;').replace(/"/g, '&#8221;').replace(/\\//g, '&#xff0f;').replace(/\\\\/g, '&#xffe5;').replace(/</g, '&#xff1c;').replace(/>/g, '&#xff1e;').replace(/\\*/g, '&#xff0a;').replace(/\\|/g, '&#xff5c;').replace(/:/g, '&#xff1a;')\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, '&amp;')+ '</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(/&amp;/g, '&#xff06;'));\r\n"
"so.write("setclipboard_container");\r\n"
"</script>"

PornoTube [2011/11/06] Edit

動画ページでは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)

アゲサゲ Edit

AgeSage: add download link (JavaScriptとCookieとFlash使用) [2011/03/01] Edit

概要・問題点・導入方法は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|&nbsp;)+|(?:\\s|\\u3000|&nbsp;)+$/g, '')\r\n"
"			.replace(/\\?/g, '&#xff1f;').replace(/"/g, '&#8221;').replace(/\\//g, '&#xff0f;').replace(/\\\\/g, '&#xffe5;').replace(/</g, '&#xff1c;').replace(/>/g, '&#xff1e;').replace(/\\*/g, '&#xff0a;').replace(/\\|/g, '&#xff5c;').replace(/:/g, '&#xff1a;')\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(/&amp;/g, '&#xff06;'));\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>"

デイリーモーション Edit

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つがある

DailyMotion: add download link (JavaScriptとCookieとFlash使用) [2011/11/06] Edit

概要・問題点・導入方法は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|&nbsp;)+|(?:\\s|\\u3000|&nbsp;)+$/g, '')\r\n"
"			.replace(/\\?/g, '&#xff1f;').replace(/"/g, '&#8221;').replace(/\\//g, '&#xff0f;').replace(/\\\\/g, '&#xffe5;').replace(/</g, '&#xff1c;').replace(/>/g, '&#xff1e;').replace(/\\*/g, '&#xff0a;').replace(/\\|/g, '&#xff5c;').replace(/:/g, '&#xff1a;')\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(/&amp;/g, '&#xff06;'));\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>"

なんとか動画 Edit

NantokaDoga: add download link (JavaScriptとCookieとFlash使用) [2011/03/01] Edit

概要・問題点・導入方法は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|&nbsp;)+|(?:\\s|\\u3000|&nbsp;)+$/g, '')\r\n"
"		.replace(/\\?/g, '&#xff1f;').replace(/"/g, '&#8221;').replace(/\\//g, '&#xff0f;').replace(/\\\\/g, '&#xffe5;').replace(/</g, '&#xff1c;').replace(/>/g, '&#xff1e;').replace(/\\*/g, '&#xff0a;').replace(/\\|/g, '&#xff5c;').replace(/:/g, '&#xff1a;')\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, '&lt;').replace(/"/g, '&quot;')+'" />');\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(/&amp;/g, '&#xff06;'));\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>"

Veoh Edit

Veoh: add download link (JavaScriptとCookieとFlash使用) [2011/11/06] Edit

概要・問題点・導入方法は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|&nbsp;)+|(?:\\s|\\u3000|&nbsp;)+$/g, '')\r\n"
"			.replace(/\\?/g, '&#xff1f;').replace(/"/g, '&#8221;').replace(/\\//g, '&#xff0f;').replace(/\\\\/g, '&#xffe5;').replace(/</g, '&#xff1c;').replace(/>/g, '&#xff1e;').replace(/\\*/g, '&#xff0a;').replace(/\\|/g, '&#xff5c;').replace(/:/g, '&#xff1a;')\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(/&amp;/g, '&#xff06;'));\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>"

GyaO Edit

GyaO: add download link (JavaScriptとFlash使用) [2010/03/28] Edit

概要

  1. タイトル部分クリックで動画をWMPで視聴可能(タイトル部分の背景色がオレンジになった時のみ有効 赤字は話数限定)
    1. asxなので、専用ソフトを使えば動画のDLも可能(再生にはライセンスが必要 解除方法は各自検索のこと ウイルスに注意)
  2. 隣のボタンを押すと、クリップボードに「タイトル.ext」をコピー(ファイル保存ダイアログで使用)

問題点

  1. 「gyao.yahoo.co.jp/proxo_rdir/」あたりが適当すぎてまずげ
  2. JS, Flash 必須

導入

  1. Proxomitronがあるフォルダ/html/ に swfobject.js, prototype.js, setClipboard10.swf を保存
  2. 適当なURLリストに、「gyao.yahoo.co.jp/proxo_rdir/\?http\0 & $RDIR(http\0)」を追記
  3. 以下のフィルタを導入
    [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|&nbsp;)+|(?:\\s|\\u3000|&nbsp;)+$/g, '')\r\n"
    "		.replace(/\\?/g, '&#xff1f;').replace(/"/g, '&#8221;').replace(/\\//g, '&#xff0f;').replace(/\\\\/g, '&#xffe5;').replace(/</g, '&#xff1c;').replace(/>/g, '&#xff1e;').replace(/\\*/g, '&#xff0a;').replace(/\\|/g, '&#xff5c;').replace(/:/g, '&#xff1a;')\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(/&amp;/g, '&#xff06;'));\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>"

プレイヤーを「プレイヤーを表示するボタン」に置き換える Edit

おまけ

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>"

その他のサイト Edit

適当な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 は見つかる筈です

関連サイト・ツールなど Edit




複製名前変更