如何用fiddler和wireshark抓包获取图片资源

只研究了抓取http的方式,需要抓取https的不用看了

最近工作需要抓取一些图片资源,需要使用fiddlerwireShark,对这两个抓包软件做一下总结,有助于两个软件更快上手。

fiddler

fidder抓取http协议很方便,但需配置http代理。浏览器和手机端配置代理很简单就不说了。有些设备可能用到adb来设置代理

adb主要命令
设置代理
adb shell settings delete global http_proxy
注意先执行这句,看看delete命令是否存在,免得之后代理难以清除
adb shell settings put global http_proxy 192.168.1.104:8888
清除代理
adb shell settings delete global http_proxy
adb shell settings delete global global_http_proxy_host
adb shell settings delete global global_http_proxy_port

抓取窗口的情况如下


使用fiddler的过滤器功能过滤图片url



之后copy所有url路径复制到txt文件中


要抓取的所有图片url

之后利用Ecplise,编写java代码将url对应的图片下载到本地
可参考下面代码

public class Funs {
    static int i = 1;
    public static String downloadNetFile(String refFileURL, String refSavePath, String refFileType){
        /* parameters:
         * 1,refFileURL: is a url of file which exists in international (www)net; 
         * 2,refSavePath: is path of file which success download and save in it, eg.: e:\path;
         * 3,refFileType: is a type of file, eg.: gif or jpg or png or htm or html or ppt or doc or...
         * 
         * return type: 
         * data type: String, only return a file name or a empty String, not include path
         * */
        String retValue = "";
        if(null == refFileURL || refFileURL.trim().isEmpty() 
            || null == refSavePath || refSavePath.trim().isEmpty()
            || null == refFileType || refFileType.trim().isEmpty()){
                retValue = "";
        }else{
            //default value of fileName
            String fileName = "down_" + new SimpleDateFormat("yyyyMMdd_HHmmssSSS").format(Calendar.getInstance().getTime()) + 
                    "_" + new Random().nextInt(1000);
            String fileType = refFileType.trim();
            if(!fileType.startsWith(".")){
                fileType = "." + fileType;
            }
            fileName = fileName + fileType;
            String savePath = refSavePath.trim();
            if(!savePath.endsWith("\\")){
                    savePath = savePath + "\\";
            }
            String saveDownFile = savePath + fileName; 
            String fileURL = refFileURL.trim();
            try {
                //create URL object 
                URL fileUrl = new URL(fileURL);
                
                //connect to net URL resource and create HttpURLConnection object   
                HttpURLConnection connection = (HttpURLConnection) fileUrl.openConnection();  
                //also can to use BufferedInputStream and BufferedOutputStream object
                //get net source input stream
                DataInputStream ins = new DataInputStream(connection.getInputStream()); 
 
                //rewrite the new file content if exists same file
                DataOutputStream out = new DataOutputStream(new FileOutputStream(saveDownFile,false)); 
                
                byte[] buffer = new byte[4096];  
                int count = 0;  
                while ((count = ins.read(buffer)) > 0){  
                    out.write(buffer, 0, count);  
                }  
                out.close(); //close dataInputStream and release resource
                ins.close(); //close dataOutputStream and release resource 
                connection.disconnect(); //close net download stream            
                retValue = fileName;
            } catch (Exception e) {
                retValue = "";
            }
            savePath = null;
            fileURL = null;
            fileType = null;
        }
        return retValue;
    }
    
    public static void main(String[] args) {
    //  String refFileURL = "http://puui.qpic.cn/vcover_vt_pic/0/mzc00200y8o6ry91588759762579/260";
        String refSavePath = "E:\\保存路径";
        String refFileType = "jpg";
        
        //downloadNetFile(refFileURL,refSavePath,refFileType);
        List<String> list = readDocUrl("E:\\txt文件名");
        System.out.println(list.size());
        for(String s : list){
            System.out.println(s);
            downloadNetFile(s,refSavePath,refFileType);
        }
    }
    
    //读取Doc中的url;
    public static List<String> readDocUrl(String docPath){
        
         
         List<String> list = new ArrayList<>();
         InputStreamReader ir = null;
         BufferedReader br = null; 
        
         String s = null;
        // 创建缓冲区阅读器从键盘逐行读入数据  
             
        try {  
            ir = new InputStreamReader(new FileInputStream(docPath+".txt"));
            br = new  BufferedReader(ir);
            // 读一行数据,并标准输出至显示器  
            
            // readLine()方法运行时若发生I/O错误,将抛出IOException异常 
            StringBuilder sb = new StringBuilder();
            while ((s=br.readLine())!= null) { 
                
                 if(s.startsWith("https")||s.startsWith("http")){
                    
                    String result = sb.toString().trim();
                    if(!result.isEmpty()) list.add(result);
                    //System.out.println(result);
                    // System.out.println(s);
                    sb.delete(0,sb.length());
                    sb.append(s);
                    
                   }else{
                    sb.append(s);
               // }
//               
//            
                    }
                 
               // 
          
            }  
            String result = sb.toString().trim();
            if(!result.isEmpty()) list.add(result);
            // 关闭缓冲阅读器  
            ir.close();
            br.close(); 
        } catch (IOException e) { // Catch any IO exceptions.  
            e.printStackTrace();  
        }  
        return list;
    }
    

设置好放置url的txt文件和图片保存路径即可执行输出


抓取的图片

WireShark

下面在介绍以下使用WireShark的抓取,网上可参考的内容很多,本文主要介绍要注意的几点。

1 远程设备最方便的是笔记本电脑开启wifi热点给要抓取的设备,wireshark网卡选择本地连接
2 第一次进入WireShark可能找不到网卡

可参考:解决wireshark检测不到网卡的问题
wireshark安装 net start npf 服务器名无效

3 Wireshark过滤http请求

Wireshark可抓取多种协议信息,需过滤http


过滤http协议
4 如何像上图一样只显示request url完整路径

默认wireshark的抓取窗口会输出多个列,我们可能只关心url路径



可按图顺序,将Full Request Uri应用为列,然后在③位置右键去掉不需要列的勾选,只保留Full Request Uri,最终如图效果。

最后将Full Request Uri,Ctrl+A,Ctrl+C 复制到txt文件中,去掉空行后,就可以执行下载程序将图片下载到本地了:)。

本文就先写到这里吧


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352