第一次技术贴~~

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

目标网站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=password" http://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"

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

  1. 如何对网页上的内容进行批量下载

    例如,当我们要从如下网页进行批量下载这些内容时,应该怎么办呢? 我们可能想到的是把这些地址的共同部分存到一个文本文件中,然后用for循环迭代文本中的每一行进行下载.那我们应该怎么做呢? 首先,将保存网 ...

  2. linux批量下载数据,[转载]linux shell批量下载IGS或CORS网FTP数据

    最近用迅雷FTP探测器下载数据,下载好之后发现漏下了好多数据,所以使用linux wget命令来实现FTP数据批量下载 关于wget命令可以 用wget --help 查看帮助,简单说明一下: wge ...

  3. linux wget 图片,wget命令批量下载图片

    批量下载图片(一般是某个相册的图片) 首先先得到一张图片的地址如:www.example.com/pic/001.jpg 同相册的图片地址会有一定的规律,可以用: $: echo  www.examp ...

  4. WGET批量下载风云卫星数据

    1. 在风云卫星官网创建账号并提交订单.之后胡获取到下载链接,本来想这种下载链接可以直接由IE或者火狐的插件 down them all进行下载的,但是由于不知道是我的浏览器的设置还是系统设置的问题, ...

  5. 已知url格式,用wget批量下载文件

    已知文件url格式 https://xxxxx/1.png https://xxxxx/2.png - 通过python使用wget实现批量下载文件: 1.安装wget pip install wge ...

  6. linux使用wget 批量下载PDB文件

    linux 命令行批量下载pdb 文件 有100个PDB需要下载,可以用到linux wget 尝试用for 语句,不过PDB网站不让机器自动下载. 下载一个PDB文件,可以用 wget http:/ ...

  7. 使用 wget 完成批量下载

    使用 wget 完成批量下载 如果想下载一个网站上目录中的所有文件, 我需要执行一长串wget命令, 但这样做会更好: wget -nd -r -l1 --no-parent http://www.f ...

  8. 【MODIS】MODIS数据的两种批量下载方法 - Python和Wget

    平时使用MODIS的数据做科研,都不是使用一天或者几天的数据,都是使用几年的数据.所以介绍一下MODIS的批量下载. 关于MODIS账号的注册和MODIS常用的下载源,可以看我上一篇文章<[MO ...

  9. Linux用wget批量下载GEO数据

    目录 一.什么是wget? *下载数据除此外还有一些其他软件可以试试 二.下载数据 2.1找到想要下载的数据并复制链接 2.2转换链接 2.3建立下载文件url列表 2.4下载数据 一.什么是wget ...

最新文章

  1. 脊柱外科病人资料管理系统的界面设计分析
  2. Mininet 系列实验(一)
  3. 《移动App测试的22条军规》—第1章1.2节移动App的生命周期
  4. Educational Codeforces Round 107 (Rated for Div. 2) 题解
  5. LeetCode之两数之和
  6. linux系统下c语言程序需要改动的地方,如何在Linux系统环境下进行C语言开发
  7. 判断拐点的条件_专业的交易者如何捕捉振荡区间的双向拐点。上篇
  8. live2d_基于Qt的Live2D示例(几乎都是官方给的代码就是啦!)
  9. windows 程序员计算器
  10. fgui的ui管理框架_DCET: Unity3D客户端和.Net Core服务器双端框架,支持代码全热更(包括FGUI和双端行为树)...
  11. 用opencv在图片上面添加水印
  12. Python之科赫曲线绘制
  13. Interpro注释
  14. metadata firewall driver issues in openstack hav
  15. iOS 直播技术及Demo
  16. matlab搭建多径模型,基于MATLAB的无线多径信道建模与仿真分析.docx
  17. 证书文件编码格式介绍
  18. 股市精忠社学习计划:赋予快手更长期的价值
  19. 5G NR Band ARFCN频点换算
  20. power2go 6.0 注册码

热门文章

  1. WebDAV之葫芦儿·派盘+纸间书摘
  2. kail linux无线渗透测试只能,Kali Linux 无线渗透测试入门指南 第一章 配置无线环境...
  3. 无锡初一计算机试题及答案,无锡计算机等级考试,考哪些内容
  4. C#调用摄像头的几种方式
  5. 七夕送什么礼物,七夕送女朋友礼物推荐
  6. 数字IC面经汇总(20篇)
  7. 怎样从浏览器保存html文件在哪里,电脑浏览器收藏夹保存在哪里
  8. js 实现sleep函数
  9. XSL 转换:XSLT 可缓和 XML 架构的不相容性问题[网淘]
  10. c语言:求字符串的字节数,strlen