wget突破cookie限制--用wget批量下载中国联通沃商店app
第一次技术贴~~
这两天一直纠结这个问题,今天来个了结,在网上参考的也挺乱,顺便理理思路~
目标网站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相关推荐
- 如何对网页上的内容进行批量下载
例如,当我们要从如下网页进行批量下载这些内容时,应该怎么办呢? 我们可能想到的是把这些地址的共同部分存到一个文本文件中,然后用for循环迭代文本中的每一行进行下载.那我们应该怎么做呢? 首先,将保存网 ...
- linux批量下载数据,[转载]linux shell批量下载IGS或CORS网FTP数据
最近用迅雷FTP探测器下载数据,下载好之后发现漏下了好多数据,所以使用linux wget命令来实现FTP数据批量下载 关于wget命令可以 用wget --help 查看帮助,简单说明一下: wge ...
- linux wget 图片,wget命令批量下载图片
批量下载图片(一般是某个相册的图片) 首先先得到一张图片的地址如:www.example.com/pic/001.jpg 同相册的图片地址会有一定的规律,可以用: $: echo www.examp ...
- WGET批量下载风云卫星数据
1. 在风云卫星官网创建账号并提交订单.之后胡获取到下载链接,本来想这种下载链接可以直接由IE或者火狐的插件 down them all进行下载的,但是由于不知道是我的浏览器的设置还是系统设置的问题, ...
- 已知url格式,用wget批量下载文件
已知文件url格式 https://xxxxx/1.png https://xxxxx/2.png - 通过python使用wget实现批量下载文件: 1.安装wget pip install wge ...
- linux使用wget 批量下载PDB文件
linux 命令行批量下载pdb 文件 有100个PDB需要下载,可以用到linux wget 尝试用for 语句,不过PDB网站不让机器自动下载. 下载一个PDB文件,可以用 wget http:/ ...
- 使用 wget 完成批量下载
使用 wget 完成批量下载 如果想下载一个网站上目录中的所有文件, 我需要执行一长串wget命令, 但这样做会更好: wget -nd -r -l1 --no-parent http://www.f ...
- 【MODIS】MODIS数据的两种批量下载方法 - Python和Wget
平时使用MODIS的数据做科研,都不是使用一天或者几天的数据,都是使用几年的数据.所以介绍一下MODIS的批量下载. 关于MODIS账号的注册和MODIS常用的下载源,可以看我上一篇文章<[MO ...
- Linux用wget批量下载GEO数据
目录 一.什么是wget? *下载数据除此外还有一些其他软件可以试试 二.下载数据 2.1找到想要下载的数据并复制链接 2.2转换链接 2.3建立下载文件url列表 2.4下载数据 一.什么是wget ...
最新文章
- 脊柱外科病人资料管理系统的界面设计分析
- Mininet 系列实验(一)
- 《移动App测试的22条军规》—第1章1.2节移动App的生命周期
- Educational Codeforces Round 107 (Rated for Div. 2) 题解
- LeetCode之两数之和
- linux系统下c语言程序需要改动的地方,如何在Linux系统环境下进行C语言开发
- 判断拐点的条件_专业的交易者如何捕捉振荡区间的双向拐点。上篇
- live2d_基于Qt的Live2D示例(几乎都是官方给的代码就是啦!)
- windows 程序员计算器
- fgui的ui管理框架_DCET: Unity3D客户端和.Net Core服务器双端框架,支持代码全热更(包括FGUI和双端行为树)...
- 用opencv在图片上面添加水印
- Python之科赫曲线绘制
- Interpro注释
- metadata firewall driver issues in openstack hav
- iOS 直播技术及Demo
- matlab搭建多径模型,基于MATLAB的无线多径信道建模与仿真分析.docx
- 证书文件编码格式介绍
- 股市精忠社学习计划:赋予快手更长期的价值
- 5G NR Band ARFCN频点换算
- power2go 6.0 注册码
热门文章
- WebDAV之葫芦儿·派盘+纸间书摘
- kail linux无线渗透测试只能,Kali Linux 无线渗透测试入门指南 第一章 配置无线环境...
- 无锡初一计算机试题及答案,无锡计算机等级考试,考哪些内容
- C#调用摄像头的几种方式
- 七夕送什么礼物,七夕送女朋友礼物推荐
- 数字IC面经汇总(20篇)
- 怎样从浏览器保存html文件在哪里,电脑浏览器收藏夹保存在哪里
- js 实现sleep函数
- XSL 转换:XSLT 可缓和 XML 架构的不相容性问题[网淘]
- c语言:求字符串的字节数,strlen