关于抓包工具与网络请求工具

一、网络请求工具-CURL

  简介:

        CURL是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,我们使用它来发送HTTP请求。它可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS。CURL可以根据URL前缀是“HTTP” 还是“HTTPS”自动选择是否加密发送内容。

  使用CURL发送请求的基本流程:

  1. 初始化连接句柄;
  2. 设置CURL选项;
  3. 执行并获取结果;
  4. 释放CURL连接句柄;               
         // 1. 初始化
        $ch = curl_init();
        // 2. 设置选项,包括URL
        curl_setopt($ch,CURLOPT_URL,"http://www.xxx.net");
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);     // 获取的信息以文件流的形式返回
        curl_setopt($ch,CURLOPT_HEADER,0); 		//查询显示返回的Header区域内容
        // 3. 执行并获取HTML文档内容
        $output = curl_exec($ch);
        if($output === FALSE ){
            echo "CURL Error:".curl_error($ch);
        }
        // 4. 释放curl句柄
        curl_close($ch);
    }

CURL常用命令:

       1.直接查看页面源码信息

1.curl https://maoyan.com/  直接查看页面源代码
2.curl -o baidu.html  www.baidu.com //保存页面信息到本地,如果O大写,后面的url要具体到某个文 
                                    //件,不然抓不下来。我们还可以用正则来抓取东西

3.curl -L www.sina.com //网址自动跳转到www.sina.com.cn
4.curl -v www.baidu.com //可以显示一次http通信的整个过程,包括端口连接和http request头信息
5.curl --trace output.txt www.baidu.com //获取更详细的通信过程
  curl --trace-ascii output.txt www.baidu.com
6.curl example.com/form.cgi?data=xxx //GET请求
7.curl -X POST --data "data=xxx" example.com/form.cgi //POST请求
8.curl -X POST--data-urlencode "date=April 1" url //如果你的数据没有经过表单编码,CURL编码
9.curl -X DELETE www.example.com
  curl -X PUT www.baidu.com
10.curl --cookie "name=xxx" www.example.com //可发送cookie
11.curl --header "Content-Type:application/json" http://example.com //增加头信息
12.curl --user name:password example.com //有些网域需要HTTP认证,这时需要用到--user -u
13.curl --help //查看帮助
14.curl -i www.baidu.com 只显示response //头信息,-v 子集
15.curl -I www.baidu.com //只显示头信息
16.curl -b "cookie.txt" -F "filename=@file" url //文件上传、-F 将会以multipart/form- 
                                  //data发送POST数据;如果是发送文件的话,需要在参数前面加@
17.curl -C -O http://www.linux.com/dodo1.JPG //断点续传

常用参数:

CURL COMMAND
-I/--head只显示传输文档,经常用于测试连接本身,头信息
-o/--output把输出写到该文件中,必须输入保存文件名
-O/--remote-name把输出写到该文件中,保留远程文件的文件名
-F/--form模拟表单提交
-s/--silent静默模式,不输出任何东西
-L/--location跟踪重定向
-p/--proxytunnel使用HTTP代理
-T/--upload-file上传文件
-u/--user设置服务器的用户和密码
-6/--ipv6使用IP6
-4/--ipv4使用IP4
-#/--progress-bar用进度条显示当前的传送状态
--retry传输出现问题时,重试的次数
--retry-delay传输出现问题时,设置重试间隔时间
--retry-max-time传输出现问题时,设置最大重试时间
-f/--fail不输出错误
-n/--netrc从netrc文件中读取用户名和密码
--netrc-optional使用 .netrc 或者 URL来覆盖-n
--ntlm使用 HTTP NTLM 身份验证
--trace对指定文件进行debug
--trace-ascii Like跟踪但没有hex输出
--trace-time 跟踪/详细输出时,添加时间戳
-U/--proxy-user设置代理用户名和密码
-V/--version显示版本信息
-w/--write-out [format]什么输出完成后
-x/--proxy在给定的端口上使用HTTP代理
-X/--request指定什么命令
-y/--speed-time放弃限速所要的时间。默认为30
-Y/--speed-limit停止传输速度的限制,速度时间'秒
-z/--time-cond传送时间设置
-0/--http1.0使用HTTP 1.0
-1/--tlsv1使用TLSv1(SSL)
-2/--sslv2使用SSLv2的(SSL)
-3/--sslv3使用的SSLv3(SSL)
--3p-quotelike -Q for the source URL for 3rd party transfer
--3p-url使用url,进行第三方传送
--3p-user使用用户名和密码,进行第三方传送
-S/--show-error显示错误,在选项 -s 中,当 curl 出现错误时将显示
-p/--proxytunnel使用HTTP代理
--proxy-anyauth选择任一代理身份验证方法
--proxy-basic在代理上使用基本身份验证
--proxy-digest在代理上使用数字身份验证
--proxy-ntlm在代理上使用ntlm身份验证
-P/--ftp-port使用端口地址,而不是使用PASV
-M/--manual显示全手动
-Q/--quote文件传输前,发送命令到服务器
-r/--range检索来自HTTP/1.1或FTP服务器字节范围
--range-file读取(SSL)的随机文件
-R/--remote-time在本地生成文件时,保留远程文件时间

二、网络请求工具Postman

         postman是一个可视化的网络请求工具,在google浏览器以插件形式存在,也有对应的软件供我们下载使用

        图形界面以及用法:

               

 

三、抓包工具-Charles

          Charles 是在 Mac 下常用的网络封包截取工具,在做 移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。Charles 主要的功能包括:

  1. 截取 Http 和 Https 网络封包。
  2. 支持重发网络请求,方便后端调试。
  3. 支持修改网络请求参数。
  4. 支持网络请求的截获并动态修改。
  5. 支持模拟慢速网络。

   下载与安装

          1.下载安装-自己的云盘

                链接:https://pan.baidu.com/s/1qHsAqmz4o_puCgFgljhA4w  密码:q49f

                把对应的jar包进行替换就可以破解 (mac地址:/Applications/Charles.app/Contents/Java )

          2.当然能下载到官网的最好

               https://www.charlesproxy.com/download/

       3.关于安装

             将 Charles 设置成系统代理:Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步 是            将其设置成系统的代理服务器 ,之后,你就可以看到源源不断的网络请求出现在 Charles 的界面中。

             Charles 主要提供两种查看封包的视图: Structure 、Sequence

                 Structure:将网络请求按访问的域名分类

                 Sequence:将网络请求按访问的时间排序

     过滤网络请求:

         方法一:在主界面的中部的 Filter 栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:http://yuantiku.com , 那么只需要在 Filter 栏中填入 yuantiku 即可。

        方法二:在 Charles 的菜单栏选择 “Proxy”–>“Recording Settings->Include->Add”,然后选择 Include 栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了

        方法三:在想过滤的网络请求上右击,选择 “Focus”,之后在 Filter 一栏勾选上 Focussed 一项

截取手机上的网络封包:

       1.要截取 iPhone 上的网络请求,我们首先需要将 Charles 的代理功能打开。在 Charles 的菜单栏上选择 “Proxy”–>“Proxy Settings”,填入代理端口 8888,并且勾上 “Enable transparent HTTP proxying” 就完成了在 Charles 上的设置

     2.Charles 的顶部菜单的 “Help”–>“Local IP Address”,即可在弹出的对话框中看到 IP 地址

    3.手机上设置:将手机wifi 代理配置为手动,输入代理端口号8888 以及代理服务器 本机地址

    4.设置好之后,我们打开 iPhone 上的任意需要网络通讯的程序,就可以看到 Charles 弹出 iPhone 请求连接的确认菜单,点击            “Allow” 即可完成设置。

截取 Https 通讯信息

       安装证书:如果你需要截取分析 Https 协议相关的内容。那么需要安装 Charles 的 CA 证书

        1.首先我们需要在 Mac 电脑上安装证书。点击 Charles 的顶部菜单,选择 “Help” –> “SSL Proxying” –> “Install Charles Root              Certificate”,然后输入系统的帐号密码,即可在 KeyChain 看到添加好的证书

        2.需要注意的是,即使是安装完证书之后,Charles 默认也并不截取 Https 网络通讯的信息,如果你想对截取某个网站上的所              有 Https 网络请求,可以在该请求上右击,选择 SSL proxy

  截取移动设备中的 Https 通讯信息

      1.点击 Charles 的顶部菜单,选择 “Help” –> “SSL Proxying” –> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 弹出的简单的安装教程    

     2.按照我们之前说的教程,在设备上设置好 Charles 为代理后,在手机浏览器中访问地址:http://charlesproxy.com/getssl,即可打开证书安装的界面,安装完证书后,就可以截取手机上的 Https 通讯内容了。不过同样需要注意,默认情况下 Charles 并不做截取,你还需要在要截取的网络请求上右击,选择 SSL proxy 菜单项。

模拟慢速网络

    在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常。Charles 对   此需求提供了很好的支持。

     在 Charles 的菜单上,选择 “Proxy”–>“Throttle Setting” 项,在之后弹出的对话框中,我们可以勾选上 “Enable Throttling”,并且 可以设置 Throttle Preset 的类型

     如果我们只想模拟指定网站的慢速网络,可以再勾选 “Only for selected hosts” 项,然后在对话框的下半部分设置中增加指定的   hosts 项即可

修改网络请求内容

       如下图:选中想要修改的请求url,点击右上角编辑图标,进行编辑,最后点击Execute执行。

    

  给服务器做压力测试   

     我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:

                   

修改服务器返回内容

      Charles 提供了 Map 功能、 Rewrite 功能以及 Breakpoints 功能,都可以达到修改服务器返回内容的目的。这三者在功能上的差异是:          

  1. Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。
  2. Rewrite 功能适合对网络请求进行一些正则替换。
  3. Breakpoints 功能适合做一些临时性的修改。

Map:

   在 Charles 的菜单中,选择 “Tools”–>“Map Remote” 或 “Map Local” 即可进入到相应功能的设置页面。

    

 对于 Map Local 功能,我们需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的Save Response,将请求结果保存到本地,然后进行修改,成为我们的目标映射文件.

Rewrite  :

   适合对某一类网络请求做一些正则替换,达到修改结果的目的,比较适合做批量和长期替换

 

Breakpoints:

      很多适合我们需要做一些临时的修改,对一次网络请求进行结果修改,Breakpoints功能类似设置断点,当指定请求发生时,Charles会截获该请求,这个适合我们可以在Charles中临时修改请求返回的内容。注意要避免暂停时间过长而导致请求超时或者关闭。

乱码解决

     1.打开Charles,上方菜单栏->Help->SSL Proxying->Install Charles Root Certificate,搜索Charles Proxy CA,修改为始终信任。

    

     2. Proxy->SSL Proxy Settings->Add

      

   

                                      

                  

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值