wget突破cookie限制--用wget批量下载中国联通沃商店app

本文详细介绍了如何利用wget工具,通过分析登录过程并获取cookie,实现批量下载中国联通沃商店的应用。首先注册账号获取cookie,然后使用wget的cookie功能进行登录并下载指定页面,通过解析HTML找到下载链接,最终成功下载所需应用程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

吐舌头

第一次技术贴~~

这两天一直纠结这个问题,今天来个了结,在网上参考的也挺乱,顺便理理思路~

目标网站http://mstore.wo.com.cn/index.action?terindex=&page=320fantastic&loginSign=0&seeAllApp=1这个网站怎么看都不是像一个身处垄断行业的公司做出来的,竟然都不可以自由的选择页码,估计就是联通的实习生做了几个星期做出来的,真的穷到这份上了么~

cookie主要应用有1.判定注册用户是否已经登录网站。2.“购物车”之类处理。

这个网站下载要先注册,用自己邮箱注册了一个~假设用户是zhenya-user.com,密码是password

最关键的就是获得登陆的cookie,先分析下登陆时的form,代码从http://mstore.wo.com.cn/320fantastic/loginOnEmail.jsp上截取下来,代码如下

<form id="logOnEmail_action" name="logOnEmail_action" action="/online/logOnEmail.action" method="post">
    
    <ul>
     <li>
      <table cellpadding="0" cellspacing="0" class="jologin" width="95%">
       <tr>
        <td>
        <span class="red">*</span>Email
        
        </td>
        <td class="t_r">
         <a class="blue" href="/320fantastic/registe.jsp">注册用户</a>
        </td>
       </tr>
      </table>
     <input type="text" name="muserBasicinfoExtends.useremail" value="" id="logOnEmail_action_muserBasicinfoExtends_useremail" class="input_bg"/>
        
        </li>
         <li>
         <table cellpadding="0" cellspacing="0" class="jologin" width="95%"">
          <tr>
           <td><span class="red">*</span>密码</td>
           <td class="t_r"><a class="blue" href="/320fantastic/getpasswd.jsp">忘记密码</a></td>
          </tr>
         </table>
        <input type="password" name="muserBasicinfoExtends.userpwd" id="logOnEmail_action_muserBasicinfoExtends_userpwd" class="input_bg"/> 
        
         
        </li>
    <li><input type="checkbox" name="isSaveUserLoginStatue" class="mcheck"/>记住登录状态,需支持并打开手机的cookie功能。</li>
        <li><input type="submit" id="logOnEmail_action_" name="" value="立即登录" class="gray_button2"/>
</li>
     </ul> 
  </form>


然后用申请的账号给post到目地地址一段数据,目地地址即form中的action,当然要加上host的地址。数据主要就是登陆邮箱的和密码,上面可以看到为muserBasicinfoExtends.useremail和muserBasicinfoExtends.userpwd两个参数,然后把服务器返回来的得到的cookie保存到本地

用wget的命令为

wget -O 1 --post-data="muserBasicinfoExtends.useremail=zhenya-user@126.com&muserBasicinfoExtends.userpwd=password" --save-cookies=cookie --keep-session-cookies

"http://mstore.wo.com.cn/online/logOnEmail.action"

用curl的命令为
curl -o 1 -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -c cookie -d "muserBasicinfoExtends.useremail=zhenya-user@126.com&muserBasicinfoExtends.userpwd=passwordhttp://mstore.wo.com.cn/online/logOnEmail.action

纠结原因竟是因为一个参数,curl保存cookie是-c,而自己一直用的是-D,dump header,是保存http头,而不是cookie。下次用参数前一定看下man的帮助。得到的页面保存在文件1中,没有什么用这个文件

登陆后回得到cookie文件

# HTTP cookie file.
# Generated by Wget on 2012-02-16 23:22:57.
# Edit at your own risk.

mstore.wo.com.cn    FALSE   /online/    FALSE   0   wostoreUserCookie   5989075
mstore.wo.com.cn    FALSE   /   FALSE   0   store_name  %E8%B7%AF%E4%BA%BA%E7%94%B2
mstore.wo.com.cn    FALSE   /   FALSE   0   store_code  90005989075
mstore.wo.com.cn    FALSE   /   FALSE   0   store_id    378dd952180844ecbb5162d8d890a70b
mstore.wo.com.cn    FALSE   /   FALSE   0   store_index 5989075
mstore.wo.com.cn    FALSE   /   FALSE   0   JSESSIONID  FA6450DC14E811A4C3BDD0EE8BC360C5

假如想下载这个地址中的app,http://mstore.wo.com.cn/appDetail.action?productIndex=23134&terindex=&page=320fantastic&loginSign=0,用刚才的cookie,get方法就可以得到用用户名和密码登陆之后的页面。

wget -O 2 --load-cookies=cookie --keep-session-cookies "http://mstore.wo.com.cn/index.action?terindex=9000000000&page=320fantastic&loginSign=1"

得到的网页文件保存在2中,然后就是分析html的代码,找到页面中“免费中”三个字下面的那个图片的链接,具体的提取方法要用到正则表达式。得到这个链接后方法同上,用wget得到点击下载图片后的网页

wget -O 3 --load-cookies=cookie --keep-session-cookies "http://mstore.wo.com.cn/download/initDownloadPage.action?buyType=1&spname=%E4%B8%AD%E5%9B%BD

%E8%81%94%E5%90%88%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8&cnname=%E6%B2%83%E5%95%86%E5%BA%97%E6%89%8B%E6%9C%BA%E5%AE

%A2%E6%88%B7%E7%AB%AF&productId=9039939520110506361800&imgUrl=file/90399395/9039939520110506361800/large.png&productIndex=23134"

保存在文件3中,跟文件2类似,找到下载链接的地址,用wget下载下来链接对应的东西,

wget -O 4 --load-cookies=cookie --keep-session-cookies "http://mstore.wo.com.cn/320fantastic/appDownload_final.jsp?

imgUrl=file/90399395/9039939520110506361800/large.png&spname=%E4%B8%AD%E5%9B%BD%E8%81%94%E5%90%88%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1%E6%9C

%89%E9%99%90%E5%85%AC%E5%8F%B8&cnname=%E6%B2%83%E5%95%86%E5%BA%97%E6%89%8B%E6%9C%BA%E5%AE%A2%E6%88%B7%E7%AB

%AF&productId=9039939520110506361800&productIndex=23134&fileSize=1611.58"

下载下来的不是想要的apk应用,而又是一个页面,不过下载地址就在这个页面里面,这个为页面的头部

<head>
<meta http-equiv="refresh" content="1;URL=http://58.246.196.84:8951/switch/240542468MP/1/DE9001412FD907BBE2ABEAD5BFC200AB3B3AB82E/1329290748033.apk"/>
<title>中国联通沃商店</title>
<link href="/320fantastic/css/wap.css" rel="stylesheet" type="text/css" />
</head>

有一个重定向的过程,再用正则表达式提取出那个apk的地址就可以直接下载了

wget -O 1.apk http://58.246.196.84:8951/switch/240542468MP/1/DE9001412FD907BBE2ABEAD5BFC200AB3B3AB82E/1329290748033.apk

完成。

最后写个wget的比较完整的请求,一开始没察觉是cookie的错误,就一直把发送头给补充了点,加了ua和参考链接,为以后也做个参考

wget -O 1 --load-cookies=cookie --keep-session-cookies --referer="http://mstore.wo.com.cn/download/downCharge.action?

buyMore=false&buyType=1&isharman=0&productId=9039939520110506361800&productIndex=23134&cnname=%E6%B2%83%E5%95%86%E5%BA%97%E6%89%8B%E6%9C%BA%E5%AE

%A2%E6%88%B7%E7%AB%AF&imgUrl=file/90399395/9039939520110506361800/large.png&spname=%E4%B8%AD%E5%9B%BD%E8%81%94%E5%90%88%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF

%A1%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8&fileSize=1611.58" --header="User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

"http://mstore.wo.com.cn/320fantastic/appDownload_final.jsp?imgUrl=file/90399395/9039939520110506361800/large.png&spname=%E4%B8%AD%E5%9B%BD

%E8%81%94%E5%90%88%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1%E6%9C%89%E9%99%90%E5%85%AC%E5%8F%B8&cnname=%E6%B2%83%E5%95%86%E5%BA%97%E6%89%8B%E6%9C%BA%E5%AE

%A2%E6%88%B7%E7%AB%AF&productId=9039939520110506361800&productIndex=23134&fileSize=1611.58"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值