[问题]获得百度mp3下载的地址

sh/bash/dash/ksh/zsh等Shell脚本
回复
ychristian
帖子: 47
注册时间: 2007-07-17 14:36
送出感谢: 0
接收感谢: 0

[问题]获得百度mp3下载的地址

#1

帖子 ychristian » 2008-08-15 14:27

网上有很多了,我想自己独立写一个出来,学习一下,但是,发现在获得的那个页面里面,没有明确的下载地址.


http://mp3.baidu.com/m?tn=baidump3&ct=1 ... 8%BA%D0%C7


比如这个地方

第一个地址.打开后是源代码是

代码: 全选

<!--STATUS OK-->

<HTML><HEAD><TITLE>      </TITLE>

<META http-equiv=Content-Type content="text/html; charset=gb2312">

<style type="text/css">

body{margin:0px;padding:0px;background-color:#f1f1f1;} 

*{ font-family:Arial;}

#c{margin:0px auto;width:100%; font-size:12px;}

.li{font-size:14px;line-height:18px;float:left;list-style-type:none;font-weight:bold;}

.t{ margin:0px;padding:12px 40px 6px 40px;}

a.l, a.l:visited{font-weight: normal;color: #777777;font-size: 12px;}

#c td{font-weight:bold;}

#t{background-color:white;font-size:14px; line-height:30px; height:135px;}

*{ word-break:break-all;word-wrap:break-word;}

#txt{ color:#777777; line-height:16px;}

#txt a{ color:#777777;font-family:宋体;}

#adv{margin:3px auto;height:300px;width: 360px;}

#adv iframe{width:360px;height:300px}

#rAd{position:absolute; top:20px; right:17px;}

#rAd iframe{width:140px;height:30px}

#adTxt{height:18px;margin:8px 13px 0px 40px; text-align:right}

#adTxt iframe{width:200px;height:18px}

.clear{clear:both;  height:0; font:0/0px;overflow:hidden;}

</style>

</head>

<body leftmargin=0 topmargin=0  vlink="#0033CC" link="#0033CC" onLoad="sa()">

<script>var img=new Image();img.src="/wd/mp3-sg.jpg?r="+Math.random();</script>
<noscript><img style="display:none" src="/wd/mp3-sg-nojs.jpg?r=1218781558" /></noscript>

<div id="c">

<div id="t">

<div style="padding:30px 0px 0px 40px;"><div id="rAd"></div>

歌曲名:<a id="urln" href="" onclick="sd(1);" target="_blank">北京欢迎你   ...</a><br>

<li class="li" style="margin-top:2px;">请点击此链接:</li>

<li class="li" style="margin-right:10px;"><a id="urla" href="" onclick="sd(2)"  target="_blank"></a></li>

</div>

<div class="clear">&nbsp;</div>

<div id="adTxt"></div>

<div class="clear">&nbsp;</div>

</div>

<table class="t" width="100%" border="0" cellspacing="0" cellpadding="0">

  <tr>

    <td><a class="l" title="根据用户指令,百度的搜索引擎系统会以非人工方式自动生成到第三方网页的链接。“百度”自身不存储、控制、编辑或修改被链接的第三方网页的信息。百度高度重视知识产权保护,并制定了旨在保护权利人的合法权益的措施和步骤,当权利人发现在百度生成的链接所指向的第三方网页内容侵犯其著作权时,请权利人向百度发出“权利通知”,百度将依法采取措施断开相关链接。">百度提示,请您阅读</a></td>

    <td align="right"><a href="http://www.baidu.com/search/appcopyright.html" target="_blank" class="l">权利声明</a></td>

  </tr>

</table>

<div style="text-align:center"><div id="adv"></div></div>

</div>

</BODY>
<script>
function G(A){return document.getElementById(A)}function sa(){var C=G("adv");if(C.innerHTML){var B=520,A=530;var E=(screen.width-B)/2,D=(screen.height-A)/2;moveTo(E,D);resizeTo(B,A)}}var song_1218781558;function sd(B){var A=new Image();A.src="/wd/sg-url.jpg?url="+song_1218781558+"&pos="+B+"&r="+Math.random()}function disUrl(){var F=1218781558,L=0;var I="1DD9://vv6yx2u.AA.w86/6yx2u/6EC2w/uEx28/MKKSKO/vy232701Eu7I27072.69N",J="1DD9://vv6yx2u.AA.w86/6yx2u/6EC2w/uEx28/MKKSKO/vy232701Eu7I27072.69N";var O="",E="";var K=[],H=[];var B=G("urln"),C=G("urla");function N(S,P,Q){for(var R=S;R<=P;R++){K[R]=R+Q;H[R+Q]=R}}N(0,9,48);N(10,35,55);N(36,61,61);var M=F%26;M=M?M:1;function A(Q){var P=Q.length;var S="";for(var R=0;R<P;R++){var T=Q.charAt(R);if(/[A-Za-z0-9]/.test(T)){var U=H[Q.charCodeAt(R)]-M;if(U<0){U+=62}T=String.fromCharCode(K[U])}S+=T}return S}O=A(I);E=(I==J)?O:A(J);B.href=C.href=song_1218781558=O;C.innerHTML=E;if(!L||F-L<3600){var D=new Image();D.src="/wd/mp3-sg-decode.jpg?url="+O+"&r="+Math.random()}}disUrl();
</script>

</HTML>
大家是怎么样获得下载的地址的阿.

新人发问,许多地方不懂阿
头像
bones7456
论坛版主
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
送出感谢: 0
接收感谢: 8 次
联系:

#2

帖子 bones7456 » 2008-08-15 14:41

1DD9://vv6yx2u.AA.w86/6yx2u/6EC2w/uEx28/MKKSKO/vy232701Eu7I27072.69N
关注我的blog: ε==3
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
送出感谢: 0
接收感谢: 3 次
联系:

#3

帖子 xiooli » 2008-08-15 14:58

lz可以参考参考:viewtopic.php?t=132672&highlight=
ychristian
帖子: 47
注册时间: 2007-07-17 14:36
送出感谢: 0
接收感谢: 0

#4

帖子 ychristian » 2008-08-15 15:17

xiooli 写了:lz可以参考参考:viewtopic.php?t=132672&highlight=
可以吗?我怎么下部了?
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
送出感谢: 0
接收感谢: 3 次
联系:

#5

帖子 xiooli » 2008-08-15 16:51

ychristian 写了:
xiooli 写了:lz可以参考参考:viewtopic.php?t=132672&highlight=
可以吗?我怎么下部了?
可以下啊
附件
Screenshot-xiooli@XIOOLI.png
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#6

帖子 BigSnake.NET » 2008-08-15 16:58

^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
oneleaf
论坛管理员
帖子: 10234
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04
送出感谢: 7 次
接收感谢: 105 次

#7

帖子 oneleaf » 2008-08-15 18:53

:D 根据楼上的代码, 同步更新Java版本的。

http://www.optool.cn/node/21
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12
送出感谢: 0
接收感谢: 0
联系:

#8

帖子 solcomo » 2008-08-15 20:08

代码: 全选

#!/bin/bash

str="1DD9://vv6yx2u.AA.w86/6yx2u/6EC2w/uEx28/MKKSKO/vy232701Eu7I27072.69N"
num=$((`echo $str | wc -m`-1))
arr=(a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9)

for i in `seq $num`
do
	m=`echo $str | cut -c$i`
	for j in `seq 61`
	do
		if [[ $m =~ ${arr[$j]} ]]; then
			echo -n ${arr[$j+16]}
		elif [[ $m =~ [.:/] ]]; then
			echo -n $m
			break
		fi
	done
done
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
xiooli
帖子: 6956
注册时间: 2007-11-19 21:51
来自: 成都
送出感谢: 0
接收感谢: 3 次
联系:

#9

帖子 xiooli » 2008-08-15 21:34

代码: 全选

<(︶︿︶)>[~/桌面]:echo "1DD9://vv6yx2u.AA.w86/6yx2u/6EC2w/uEx28/MKKSKO/vy232701Eu7I27072.69N" |tr "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRST" "qrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
HTTP://BBMEDIA.QQ.COM/MEDIA/MUSIC/AUDIO/200804/BEIJINGHUANYINGNI.MP3
头像
solcomo
帖子: 2838
注册时间: 2007-04-25 13:12
送出感谢: 0
接收感谢: 0
联系:

#10

帖子 solcomo » 2008-08-15 22:23

xiooli 写了:

代码: 全选

<(︶︿︶)>[~/桌面]:echo "1DD9://vv6yx2u.AA.w86/6yx2u/6EC2w/uEx28/MKKSKO/vy232701Eu7I27072.69N" |tr "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRST" "qrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
HTTP://BBMEDIA.QQ.COM/MEDIA/MUSIC/AUDIO/200804/BEIJINGHUANYINGNI.MP3
:em38
♜♞♝♛♚♝♞♜
♟♟♟♟♟♟♟♟
♙♙♙♙♙♙♙♙
♖♘♗♕♔♗♘♖

☠☯⚔⚓☣☦☃☕
☹☻☪☭☬⚖⚛⚜
ℜℳℬ™ ℋℯℓ℘ ℳℭ
sƂɐʍ рǀɹoʍ əɥʇ oS
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#11

帖子 BigSnake.NET » 2008-08-15 22:30

oneleaf 写了::D 根据楼上的代码, 同步更新Java版本的。

http://www.optool.cn/node/21
针对http的, ftp就无效了
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
oneleaf
论坛管理员
帖子: 10234
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04
送出感谢: 7 次
接收感谢: 105 次

#12

帖子 oneleaf » 2008-08-15 23:13

BigSnake.NET 写了:
oneleaf 写了::D 根据楼上的代码, 同步更新Java版本的。

http://www.optool.cn/node/21
针对http的, ftp就无效了
哦?ftp的我没有测试过,有什么好的解决办法吗?实在不行,我就采用java直接运行js脚本中的函数,反向得到真实地址。
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
送出感谢: 0
接收感谢: 7 次
联系:

#13

帖子 BigSnake.NET » 2008-08-16 14:58

oneleaf 写了:
BigSnake.NET 写了:
oneleaf 写了::D 根据楼上的代码, 同步更新Java版本的。

http://www.optool.cn/node/21
针对http的, ftp就无效了
哦?ftp的我没有测试过,有什么好的解决办法吗?实在不行,我就采用java直接运行js脚本中的函数,反向得到真实地址。
其实就是个海撒法, 找到偏移值就可以了。。
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
oneleaf
论坛管理员
帖子: 10234
注册时间: 2005-03-27 0:06
系统: Ubuntu 12.04
送出感谢: 7 次
接收感谢: 105 次

#14

帖子 oneleaf » 2008-08-16 15:44

误会了,我当时是这样处理的,看看妥不妥当?

代码: 全选

//得到加密字符串 s440://p00zz.nzx/53p23/CBBBI/x53tn/DBBJBJBGCIEDFBDBEHI.7xl
String enStr = murl.group(1);
String s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
Map<Character, Integer> s_ord = new HashMap();
for (int i = 0; i < s.length(); i++) {
    s_ord.put(s.charAt(i), i);
}
int dif = 0;
if (enStr.indexOf(":") == 3) {
    //ftp://
    dif = s_ord.get('f') + s.length() - s_ord.get(enStr.charAt(0));
} else {
    //http://
    dif = s_ord.get('h') + s.length() - s_ord.get(enStr.charAt(0));
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < enStr.length(); i++) {
    char c = enStr.charAt(i);
    if (c == ':' | c == '.' | c == '/') {
        sb.append(c);
    } else {
        c = s.charAt((s_ord.get(c) + dif) % s.length());
        sb.append(c);
    }
}
return sb.toString();
ychristian
帖子: 47
注册时间: 2007-07-17 14:36
送出感谢: 0
接收感谢: 0

#15

帖子 ychristian » 2008-08-18 9:35

solcomo 写了:
xiooli 写了:

代码: 全选

<(︶︿︶)>[~/桌面]:echo "1DD9://vv6yx2u.AA.w86/6yx2u/6EC2w/uEx28/MKKSKO/vy232701Eu7I27072.69N" |tr "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRST" "qrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
HTTP://BBMEDIA.QQ.COM/MEDIA/MUSIC/AUDIO/200804/BEIJINGHUANYINGNI.MP3
:em38

各位大侠,是怎么找到这样的散列的啊.牛啊
回复

回到 “Shell脚本”