首页 > Script > 解析迅雷/快车/qq旋风等流氓下载软件地址的脚本

解析迅雷/快车/qq旋风等流氓下载软件地址的脚本

[总点击:1896次]
2009年2月18日

下载网络上的一些资源时候经常会遇到要求你安装乱七八糟的流氓下载软件才能下载的情况。其实这些连接只是很简单的base64加密,用脚本可以轻松搞定,再将其关联到ff的话就可以直接获取原始连接,再调用普通下载软件去下载了,这个脚本就是干这个的^^(还有图形界面阿)。
依赖:base64, zenity, axel, xsel
用法:将脚本保存,并赋予可执行权限。
关联到firefox的方法:about:config里面新建一个Boolean,名字为 network.protocol-handler.external.thunder,值为true ,再新建一个String,名字为 network.protocol-handler.app.thunder,值为本脚本的保存路径。其他快车/qq旋风等同理(尾部换成.flashget和.qqdl)。也可以不关联到ff,从终端调用方法:

1
mutidown 加密后的url

ps:这个只是取得加密的链接,不要指望会真的有迅雷那样的速度。唉,真是流氓有速度,谁也挡不住阿。。
脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
#*********************************************
# Name:			mutidown
# Version:		090218
# License:		GPLv3 
# Author:		xiooli <xiooli@yahoo.com.cn>
#*********************************************
 
Save_dir=~/Download  #最后面请不要加“/”,不然保存文件的时候可能找不到路径。
Max_num=20            #在此设定axel的最大连接数
[ ! -d "$Save_dir" ] && mkdir -p "$Save_dir"
 
#下载链接,给出一个下载进度条,并且当点击“取消”的时候将该axel废掉武功。
DOWNLOAD() {
	local axel_info axel_tty axel_pid
	axel -n "$Max_num" "$1" -o "$2/$3" |while read a;do
		echo "$a" |grep "^[\[D]" |sed 's/^\[ *//;s/%.*$//;s/^Download.*$/100/'
	done |zenity --progress --auto-close --text="下载 $True_url 至 $2" --width="350" 2>/dev/null &
	axel_info="`ps ax |grep "axel.*$1" |awk '{print $1"-"$2}'`"
	axel_tty="`echo $axel_info |sed 's/^.*-//'`"
	axel_pid="`echo $axel_info |sed 's/-.*$//'`"
	while :;do 
		if ! [ "`ps ax |grep "$axel_tty.*zenity"`" ];then
			[ "`ps -A |grep "$axel_pid"`" ] && kill -9 "$axel_pid"
			break
		fi
		sleep 1	
	done &
}
 
#出来一个动作选择菜单,选择下一步动作。
UI() {
	local choice file_name save_dir
    choice="$(zenity --list --title "保存文件 -- `basename "$0"`" --text "默认保存目录为:$Save_dir \n解析得URL:$True_url" \
	--column "选项" --column "动作" \
	A 下载至默认目录 B 选择目录并下载 C 保存链接到剪贴板 2>/dev/null)"
	case "$choice" in
	'A')
    file_name="$(zenity --entry --title="重命名文件 -- `basename "$0"`" --text="请输入一个文件名(取消则按链接默认命名)" 2>/dev/null)"
		DOWNLOAD "$True_url" "$Save_dir" "$file_name"
		;;
	'B')
		save_dir="$(zenity --file-selection --directory 2>/dev/null)"
        file_name="$(zenity --entry --title="重命名文件 -- `basename "$0"`" --text="请输入一个文件名(取消则按链接默认命名)" 2>/dev/null)"
		DOWNLOAD "$True_url" "$save_dir" "$file_name"
		;;
	'C')
		printf "$True_url" |xsel -i -b
		;;
	esac
}
 
#从$1获取加密地址,并将其解码出来。
DECODE() {
	local str
	str="$1"
	if [ "`echo "$str" |grep -i "^thunder"`" ];then
		True_url="`echo -n "$str" |sed 's/^[Tt]hunder:\/\///' |base64 -d |sed 's/^AA//;s/ZZ$//'`"
	elif [ "`echo "$str" |grep -i "^flashget"`" ];then
		True_url="`echo -n "$str" |sed 's/^[Ff]lashget:\/\///' |base64 -d |sed 's/\[FLASHGET\]//g'`"
	elif [ "`echo "$str" |grep -i "^qqdl:"`" ];then
		True_url="`echo -n "$str" |sed 's/^qqdl:\/\///' |base64 -d`"
	else
		True_url="$str"
	fi
	[ ! -z "$True_url" ] && UI
}
 
DECODE "$1"

Script , ,

  1. 2009年2月18日18:17 | #1

    不错,收藏,以后用得着

本文的评论功能被关闭了.