分类目录归档:未分类

使用CPULimit工具在Linux中限制CPU使用情况

在之前的一篇文章中,我们已经解释了CPUTool,用于限制和控制 Linux中任何进程的CPU利用率 。 如果CPU /系统负载超出定义的阈值,它允许系统管理员中断进程(或进程组)的执行。 在这里,我们将学习如何使用类似的工具cpulimit 。

Cpulimit用于以与CPUTool相同的方式限制进程的CPU使用率,但与其对应方案相比,它提供了更多的使用选项。 一个重要的区别是,cpulimit不像cputool那样管理系统负载。

建议阅读: 9在Linux上获取CPU信息的有用命令

安装CPULimit以限制CPU在Linux中的使用过程

CPULimit可以使用软件包管理工具从Debian / Ubuntu及其衍生软件的默认软件库进行安装。

$ sudo apt install cpulimit

RHEL / CentOSFedora中 ,您需要首先启用EPEL存储库 ,然后安装cpulimit,如图所示。

#yum install epel-release
#yum install cpulimit

使用CUPLimit限制CPU使用率

在本小节中,我们将介绍cpulimit的工作原理。 首先,让我们在后台运行一个命令(我们在覆盖cputool时看到的同样的dd命令 ),这个命令应该导致CPU占用率很高(注意在运行命令后打印出进程PID)。

$ dd if=/dev/zero of=/dev/null &
[1] 17918

接下来,我们可以使用输出正在运行的Linux系统的实际频繁更新状态的顶部扫视工具来观察上述命令的CPU使用情况。

$ top
监控Linux中的CPU使用情况

监控Linux中的CPU使用情况

看看上面的输出,我们可以看到dd进程正在利用最高百分比的CPU时间100.0% 。

但是我们可以使用cputlimit来限制这一点,如下所示。 --pid-p选项用于指定PID,– --limit-l用于设置进程的使用百分比。

以下命令将dd命令 ( PID 17918 )限制为使用一个CPU内核的50% 。

$ sudo cpulimit --pid 17918 --limit 50  
Process 17918 detected

一旦我们运行cpulimit,我们可以使用top或glance来查看dd命令的当前CPU使用情况。 从输出值的范围为( 51.5%-55.0%或略高于)。

在Linux中限制CPU使用过程

在Linux中限制CPU使用过程

我们可以第二次调整其CPU使用率,如下所示,此次进一步降低百分比如下:

$ sudo cpulimit --pid 17918 --limit 20 
Process 17918 detected

像我们以前一样,我们可以运行顶部或扫视来查看进程的新CPU使用率,范围为20%-25.0%或略高于此值。

$ top
Linux中的CPU CPU使用情况

Linux中的CPU CPU使用情况

注意 :shell变得非交互式 – 当cpulimit运行时,不会指望任何用户输入。 要杀死它(应该停止CPU使用限制操作),请按[Ctrl + C] 。

要运行cpulimit作为后台进程,请使用--background-b开关,释放终端。

$ sudo cpulimit --pid 17918 --limit 20 --background

要指定系统中存在的CPU核心数量,请使用--cpu-c标志(通常会自动检测)。

$ sudo cpulimit --pid 17918 --limit 20 --cpu 4

而不是限制进程的CPU使用率,我们可以用--kill-k选项来杀死它。 信号发送到进程的信号是SIGCONT ,但要发送不同的信号,请使用--signal-s标志。

$ sudo cpulimit --pid 17918 --limit 20 --kill 

如果没有合适的目标进程,或者如果它死机,则退出,包括这样的-z--lazy 。

$ sudo cpulimit --pid 17918 --limit 20 --kill --lazy

有关其他信息和使用选项,请查看cpulimit手册页。

$ man cpulimit

请查看以下有用的指南,以查找CPU信息和CPU /系统性能监视。

  1. 通过Linux中最高内存和CPU使用情况查找最佳运行进程
  2. Cpustat – 通过在Linux中运行进程监视CPU利用率
  3. CoreFreq – 用于Linux系统的强大的CPU监控工具
  4. 通过Linux中最高内存和CPU使用情况查找最佳运行进程
  5. 20个用于监视Linux性能的命令行工具
  6. 13 Linux性能监控工具 – 第2部分

相比之下,在测试CPUToolCPULimit之后 ,我们注意到前者提供了更有效和可靠的“CPU使用限制”功能。

这是根据给定进程运行这两种工具后观察到的CPU使用率的百分比范围。 尝试这两种工具,并使用下面的反馈表将您的想法添加到本文中。

cpulimit安装与使用(CentOS)

cpulimit 简介

cpulimit 命令的工作原理
为进程预设一个 cpu 占用率门限,并实时监控进程是否超出此门限,若超出则让该进程暂停运行一段时间。cpulimit 使用 SIGSTOP 和 SIGCONT 这两个信号来控制进程。它不会修改进程的 nice 值,而是通过监控进程的 cpu 占用率来做出动态调整。

cpulimit 的优势是可以控制进程的cpu使用率的上限值。但与 nice 相比也有缺点,那就是即使 cpu 是空闲的,进程也不能完全使用整个 cpu 资源。

在 CentOS 上,可以用下面的方法来安装它:

wget -O cpulimit.zip https://github.com/opsengine/cpulimit/archive/master.zip
unzip cpulimit.zip
cd cpulimit-master
make
sudo cp src/cpulimit /usr/bin

上面的命令行,会先从从 GitHub 上将源码下载到本地,然后再解压、编译、并安装到 /usr/bin 目录下。
现在就可以使用cpulimit命令了!
举例:

cpulimit –e httpd –l 40 #限制httpd(进程名)的cpu使用率为40%
cpulimit -l 50 -e httpd
cpulimit –e /usr/local/bin/httpd –l 40
cpulimit –p 2960 –l 55 #限制pid为2960的进程的CPU占用为55%

-e httpd, –exe=httpd,两者等同。
-l 40, –limit=40, 两者等同。
具体可以参考cpulimit -h帮助文档。

来看一个实例:

限制mysqld进程的CPU使用率在200%以内:

使用前:

这里写图片描述

使用后:
使用之后,cpu使用率被限制,因为是cpu使用率在动态变动,cpulimit不能非常及时准确的调整,偶尔会有超过200%,但是不会超过太多。
这里写图片描述

End!

非会员批量清理百度网盘重复文件方法

由于网速不稳定,在某天添加一个很大的分享时多点了几次,导致重复添加一百多个不同文件夹路径的文件。今天打开时提示我可以一键清理,本觉得百度还是挺人性化,虽然没做重复添加的校验,还是给了我清理办法。燃鹅,当我点击删除时,弹出了”不充钱,玩不了“的温馨提示,真是社会我百度。
气愤之余,打了个座,于是有了下面破解之法。

环境:

1.火狐浏览器charles抓包已配置好

步骤

1. 打开web百度网盘点击更多》垃圾清理》扫描重复文件(注意:这个功能有使用次数限制)

 

 

2.获取扫描完成页面的接口数据

页面如下:
(因为我的重复数据已经清理掉了,这里随便复制了个做示例)

接口是这个:

https://pan.baidu.com/api/garbagelist

保存数据到文件baidu.json,如下:

#baidu.json
{
  "errno": 0,
  "info": {
    "group_crashed": false,
    "next_index": 2,
    "count": 2,
    "has_more": false
  },
  "list": [
    {
      "fs_id": 0,
      "data": [
        {
          "size": "36218244",
          "category": "6",
          "fs_id": "413693152779790",
          "path": "\/BugReport(1).zip",
          "isdir": 0,
          "s3_handle": "a50c2bf7017fb91bc5044e881e8a87d1",
          "isdelete": 0,
          "server_filename": "BugReport(1).zip",
          "server_mtime": "1519452813",
          "smart_choose": 1,
          "index": 0
        },
        ......
  ],
  "request_id": 2151336299004000452
}

ps:当我满心赞扬的点击这个删除键时,百度就是我下面的回应。

3.进入正题处理数据,获取需要删除的文件路径

我们需要上面从保存的json数据中,剔除掉一个作为保留,并把重复的路径放到新的数组中,这里我直接是打印出来的。

# -*-coding:utf-8-*-
import json

def get_need_delete_paths():
    with open('baidu.json', 'r') as f:
        data = json.loads(f.read())
    a = 1
    lists = data["list"]
    need_delete_paths = []
    for list in lists:
        list_data = list["data"]
        for i in range(1, len(list_data)):
            need_delete_paths.append(list_data[i]["path"])

    for path in need_delete_paths:
        if a == 1:
            print "\n ======================= \n ["
        if a - 40 == 0:
            a = 1
            print "]\n ======================= \n ["
        a = a + 1
        print '"'+path+'",'
    print "]\n ======================= \n"

get_need_delete_paths()

我的打印内容如下:(注意,因为后面的删除接口字段不能太长,所以我这边是每40条做了个分隔。)

4.获取删除文件接口

因为百度有登陆状态的校验,这里我们可以先随意找个没用的文件删除,再直接从charles里克隆这条接口。

#删除文件接口
https://pan.baidu.com/api/filemanager

4.1获取删除文件接口

4.2克隆接口,并把需要删除的文件路径贴到字段里,(注意是个数组格式)。

结果

这是我的删除记录,几百条重复数据,几下就清理干净了。

备注

有钱的、重复数据量少的请忽略。

3D MAX 尺寸大小的運用

Ch2.尺寸大小的運用

————————————————————————————

<圖片說明>

———————————————————–

以下是 開啟 [ 3D MAX ] 系統後的畫面

———————————————————————————————————–

在 3D Max 系統中 , 起初都沒有設定 物件的大小範圍

所以, 我們必須自己設定 [大小尺寸]

以下是 設定的方法 :

—————–

<圖片說明>

先點選 工具列中的 [ Customize ] 後

選取[ Units Setup  ]

會開啟以下的[ Units Setup  面板

—————–

<圖片說明>

在[ Units Setup  面板 選取 需要的大小尺寸

例如: [ Centimeters ] 就是設定成 [ 公分(cm) ]

設定完後 ,還要再繼續設定 下圖中的部分

才算是正式的完成 單位的設定

—————–

<圖片說明>

例如 : 上圖中的箭頭指向的方式

 [ Centimeters ] 就是設定成 [ 公分(cm) ]

—————–

<圖片說明>

設定完後

就會看到 [ 命令面板 ] 中的框區中會出現 [單位]

表示設定單位已經完成了

========================================================

 THE END.

Charles 抓包

目录

本文的内容主要包括:

Charles 的简介

如何安装 Charles

将 Charles 设置成系统代理

Charles 主界面介绍

过滤网络请求

截取 iPhone 上的网络封包

截取 Https 通讯信息

模拟慢速网络

修改网络请求内容

给服务器做压力测试

修改服务器返回内容

反向代理

设置外部代理,解决与翻墙软件的冲突

总结

Charles 限时优惠

Charles 4 正版限时优惠优惠活动(限时:2016 年 8 月 8 日 – 15 日),优惠 30 元,点击领取优惠券

简介

Charles是在 Mac 下常用的网络封包截取工具,在做

移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。

Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。

Charles 是收费软件,可以免费试用 30 天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为 Charles 强制关闭而遇到影响。

Charles 主要的功能包括:

截取 Http 和 Https 网络封包。

支持重发网络请求,方便后端调试。

支持修改网络请求参数。

支持网络请求的截获并动态修改。

支持模拟慢速网络。

Charles 4 新增的主要功能包括:

支持 Http 2。

支持 IPv6。

安装 Charles

去 Charles 的官方网站(http://www.charlesproxy.com)下载最新版的 Charles 安装包,是一个 dmg 后缀的文件。打开后将 Charles 拖到 Application 目录下即完成安装。

将 Charles 设置成系统代理

之前提到,Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Charles 的第一步是将其设置成系统的代理服务器。

启动 Charles 后,第一次 Charles 会请求你给它设置系统代理的权限。你可以输入登录密码授予 Charles 该权限。你也可以忽略该请求,然后在需要将 Charles 设置成系统代理时,选择菜单中的 “Proxy” -> “Mac OS X Proxy” 来将 Charles 设置成系统代理。如下所示:

之后,你就可以看到源源不断的网络请求出现在 Charles 的界面中。

需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成127.0.0.1:8888也可达到相同效果。

Charles 主界面介绍

Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”。

Structure 视图将网络请求按访问的域名分类。

Sequence 视图将网络请求按访问的时间排序。

大家可以根据具体的需要在这两种视图之前来回切换。请求多了有些时候会看不过来,Charles 提供了一个简单的 Filter 功能,可以输入关键字来快速筛选出 URL 中带指定关键字的网络请求。

对于某一个具体的网络请求,你可以查看其详细的请求内容和响应内容。如果请求内容是 POST 的表单,Charles 会自动帮你将表单进行分项显示。如果响应内容是 JSON 格式的,那么 Charles 可以自动帮你将 JSON 内容格式化,方便你查看。如果响应内容是图片,那么 Charles 可以显示出图片的预览。

过滤网络请求

通常情况下,我们需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。对于这种需求,以下几种办法:

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

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

通常情况下,我们使用方法一做一些临时性的封包过滤,使用方法二做一些经常性的封包过滤。

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

这种方式可以临时性的,快速地过滤出一些没有通过关键字的一类网络请求。

截取 iPhone 上的网络封包

Charles 通常用来截取本地上的网络封包,但是当我们需要时,我们也可以用来截取其它设备上的网络请求。下面我就以 iPhone 为例,讲解如何进行相应操作。

Charles 上的设置

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

iPhone 上的设置

首先我们需要获取 Charles 运行所在电脑的 IP 地址,Charles 的顶部菜单的 “Help”->”Local IP Address”,即可在弹出的对话框中看到 IP 地址,如下图所示:

在 iPhone 的 “ 设置 “->” 无线局域网 “ 中,可以看到当前连接的 wifi 名,通过点击右边的详情键,可以看到当前连接上的 wifi 的详细信息,包括 IP 地址,子网掩码等信息。在其最底部有「HTTP 代理」一项,我们将其切换成手动,然后填上 Charles 运行所在的电脑的 IP,以及端口号 8888,如下图所示:

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

截取 Https 通讯信息

安装证书

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

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

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

这样,对于该 Host 的所有 SSL 请求可以被截取到了。

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

如果我们需要在 iOS 或 Android 机器上截取 Https 协议的通讯内容,还需要在手机上安装相应的证书。点击 Charles 的顶部菜单,选择 “Help” -> “SSL Proxying” -> “Install Charles Root Certificate on a Mobile Device or Remote Browser”,然后就可以看到 Charles 弹出的简单的安装教程。如下图所示:

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

模拟慢速网络

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

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

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

修改网络请求内容

有些时候为了调试服务器的接口,我们需要反复尝试不同参数的网络请求。Charles 可以方便地提供网络请求的修改和重发功能。只需要在以往的网络请求上点击右键,选择 “Edit”,即可创建一个可编辑的网络请求。如下所示:

我们可以修改该请求的任何信息,包括 URL 地址、端口、参数等,之后点击 “Execute” 即可发送该修改后的网络请求(如下图所示)。Charles 支持我们多次修改和发送该请求,这对于我们和服务器端调试接口非常方便,如下图所示:

给服务器做压力测试

我们可以使用 Charles 的 Repeat 功能来简单地测试服务器的并发处理能力,方法如下。

我们在想打压的网络请求上(POST 或 GET 请求均可)右击,然后选择 「Repeat Advanced」菜单项,如下所示:

接着我们就可以在弹出的对话框中,选择打压的并发线程数以及打压次数,确定之后,即可开始打压。

悄悄说一句,一些写得很弱的投票网站,也可以用这个办法来快速投票。当然,我也拿 Charles 的 Repeat 功能给一些诈骗的钓鱼网站喂了不少垃圾数据,上次不小心还把一个钓鱼网站的数据库打挂了,嗯,请叫我雷锋。

修改服务器返回内容

有些时候我们想让服务器返回一些指定的内容,方便我们调试一些特殊情况。例如列表页面为空的情况,数据异常的情况,部分耗时的网络请求超时的情况等。如果没有 Charles,要服务器配合构造相应的数据显得会比较麻烦。这个时候,使用 Charles 相关的功能就可以满足我们的需求。

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

Map 功能适合长期地将某一些请求重定向到另一个网络地址或本地文件。

Rewrite 功能适合对网络请求进行一些正则替换。

Breakpoints 功能适合做一些临时性的修改。

Map 功能

Charles 的 Map 功能分 Map Remote 和 Map Local 两种,顾名思义,Map Remote 是将指定的网络请求重定向到另一个网址请求地址,Map Local 是将指定的网络请求重定向到本地文件。

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

对于 Map Remote 功能,我们需要分别填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空。下图是一个示例,我将所有ytk1.yuanku.ws(测试服务器)的请求重定向到了www.yuantiku.com(线上服务器)。

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

下图是一个示例,我将一个指定的网络请求通过 Map Local 功能映射到了本地的一个经过修改的文件中。

Map Local 在使用的时候,有一个潜在的问题,就是其返回的 Http Response Header 与正常的请求并不一样。这个时候如果客户端校验了 Http Response Header 中的部分内容,就会使得该功能失效。解决办法是同时使用 Map Local 以下面提到的 Rewrite 功能,将相关的 Http 头 Rewrite 成我们希望的内容。

Rewrite 功能

Rewrite 功能功能适合对某一类网络请求进行一些正则替换,以达到修改结果的目的。

例如,我们的客户端有一个 API 请求是获得用户昵称,而我当前的昵称是 “tangqiaoboy”,如下所示:

我们想试着直接修改网络返回值,将 tangqiaoboy 换成成 iosboy。于是我们启用 Rewrite 功能,然后设置如下的规则:

完成设置之后,我们就可以从 Charles 中看到,之后的 API 获得的昵称被自动 Rewrite 成了 iosboy,如下图所示:

Breakpoints 功能

上面提供的 Rewrite 功能最适合做批量和长期的替换,但是很多时候,我们只是想临时修改一次网络请求结果,这个时候,使用 Rewrite 功能虽然也可以达到目的,但是过于麻烦,对于临时性的修改,我们最好使用 Breakpoints 功能。

Breakpoints 功能类似我们在 Xcode 中设置的断点一样,当指定的网络请求发生时,Charles 会截获该请求,这个时候,我们可以在 Charles 中临时修改网络请求的返回内容。

下图是我们临时修改获取用户信息的 API,将用户的昵称进行了更改,修改完成后点击 “Execute” 则可以让网络请求继续进行。

需要注意的是,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。

反向代理

Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。例如,在下图中,我将本机的 61234 端口映射到了远程(www.yuantiku.com)的80端口上了。这样,当我访问本地的 61234 端口时,实际返回的内容会由 www.yuantiku.com 的 80 端口提供。

设置外部代理,解决与翻墙软件的冲突

Charles 的原理是把自己设置成系统的代理服务器,但是在中国,由于工作需要,我们常常需要使用 Google 搜索,所以大部分程序员都有自己的翻墙软件,而这些软件的基本原理,也是把自己设置成系统的代理服务器,来做到透明的翻墙。

为了使得两者能够和平共处,我们可以在 Charles 的External Proxy Settings中,设置翻墙的代理端口以及相关信息。同时,我们也要关闭相关翻墙软件的自动设置,使其不主动修改系统代理,避免 Charles 失效。

总结

通过 Charles 软件,我们可以很方便地在日常开发中,截取和调试网络请求内容,分析封包协议以及模拟慢速网络。用好 Charles 可以极大的方便我们对于带有网络请求的 App 的开发和调试。

愿本文帮助大家成为 Charles 的专家,祝大家玩得开心~

作者:大明天FC
链接:https://www.jianshu.com/p/e6435be77752
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Charles on Windows + Android 查看https封包

Capture Android Phone https packet with Charles on Windows

現在https當道,網站有沒有使用https,除了資安的議題以外,連Google搜尋的排名都會被影響

但使用了https,有時候會造成工程師們在開發時debug上的困難
最近也是有這個需求,爬了一下文,看大家都滿推薦Charles的,就花了一些時間研究了一下,寫成這篇文章跟大家分享

如果哪邊有不正確或是可以寫個更好的地方,歡迎不吝嗇告訴我,謝謝

正文開始啦

Charles Intro

Charles是一款跨三大平台的代理服務器,通過成為電腦或者瀏覽器的代理,截取應用程式送出的Request和Response的內容,達到解析封包的效果

這篇文章就是教大家怎麼使用Charles查看https的封包內容

不過Charles本身是付費軟體

免費試用版的話只能試用30天,而且30分鐘沒進行操作Charles會自動關閉
付費版的話,個人用戶是50鎂

同類型的工具還有Fiddler、 Wireshark、 mitmproy等等
下面的連結有對上述3款以及Charles進行簡單的整理,可以參考

需要擷取Android手機上的封包,你需要一台電腦,一台Wi-Fi AP,一台Android手機,而電腦與Android手機需要連到同一台AP才行

更正確地說, 手機和電腦必須是一個網段才可以


Step1.下載&安裝Charles

去官網下載對應平台的Charles,然後安裝
安裝就如同一般的應用,直接按「Next」或是「下一步」,這邊就不贅述了

Step2.付款/註冊/破解(!?)

由於免費版有些限制,覺得好用的朋友可以付費註冊使用
畢竟身為軟體開發者,支持正版才能促進良性循環

但是網路上稀奇古怪的東西這麼多,Google一下,破解版本還是有的…
只能說看大家良心了

Step3.確認Windows的防火牆暢通

在Windows上安裝Charles的時候,應該會出現下面這個詢問視窗(軟體不同,純示意圖)

基本上這邊應該要選「私人網路」接著按下「允許存取」。如果安裝時你勾選的是「公用網路」,由於安全性問題,Windows會把電腦外部想跟Charles建立連線的裝置或是封包擋下來,導致Android裝置無法從外面連入。

為了確保Android裝置能夠順利從連到主機上的Charles,我們要開啟防火牆檢查一下,開啟「控制台」中的「防火牆」(Win10控制台中,好像叫做Windows Denfender防火牆)

※不論你在之前是不是都選擇「私人網路」,都檢查一下比較好,不然到時候連不上又找不出原因就哭了QQ

控制台>防火牆

選擇左邊的「進階設定」

防火牆>進階設定

接著按照步驟讓「 ?」都變成打勾符號,當然,名稱是Charles的項目前方都沒有?就不需要任何操作

  1. 選擇「輸入規則」
  2. 選擇輸入規則中的名稱前面符號是「 ?」的「Charles.exe」
    (範例圖中只有一個,不過有超過一個就對各項目重複執行流程2~5)
  3. 選擇右邊的「內容」,會出現一個小視窗
  4. 小視窗內選擇「允許連線」
  5. 最後按下確定
setting Windows firewall for Charles

Step4.設定Charles,查看Android手機的http封包

該安裝的都安裝好啦,不過由於Charles預設不會啟用查看https封包的功能,我們先練習將Android手機的封包轉傳給電腦上的Charle,並查看http封包的內容,等到步驟熟悉之後再練習查看https封包。

開啟Charles吧!,Charles打開之後預設就會直接開始紀錄本機上進出的封包,你可以馬上看到你的電腦有哪些封包傳出跟傳入。

簡單講解一下

看到下圖左下方黃色底的網址,這是代表是有封包傳去或是有封包從該網址傳入

可以發現黃色底的https://1-edge-chat.facebook.com前面的icon是一個鎖,代表以https協定傳送,相對的,黃色底網址上面一列的藍色icon就代表是用未加密的http協定傳送

Charles UI intro example

由於等等我只要看Android手機上的封包,所以先不顯示本機端送出/傳入的封包

點選上方選項列的Proxy -> Windows Proxy,你會發現預設是勾選的,點一下該選項就能夠取消紀錄本地端的封包,如果要恢復的話就在點選一次同個選項

接著按左上角的清除按鈕,把現有的紀錄清掉

stop record local packet on windows

然後點選上方選項列的Help -> Local IP Address
Charles會列出正在使用的網卡名稱,以及連線對應所使用的ip
像是我這邊是只有使用無線網卡連著Wi-Fi,ip是192.168.0.12

find local ip address in Charles

找到網卡使用的ip之後,由於封包要轉傳給Charles,我們要知道Charles所建立的Proxy的Port是多少,才能將封包交給他

什麼是Port阿?

假設我們把電腦當作一棟大樓,那麼可以把電腦中的每個應用程式當作是一個人,每個人都住在同一棟大樓裡,不過一個人可能不會只有一戶,根據需求,有的人可能有2,3戶,甚至更多,像是有些人比較有錢,可能就會把整層好幾戶買下來打通之類的。而這邊比較特別的是,每個人都不會出門,都會待在家裡做自己的事情。

那麼今天如果有快遞要送包裹給大樓裡某個人,應該怎麼做呢?,首先,快遞會根據「大樓地址」找到大樓在哪,舉例來說像是「台北市天堂路二段384巷5號」,這邊的「大樓地址」對應到電腦上就是我們所謂的ip,而「包裹」就是被傳送的封包。

不過根據地址找到大樓之後,大樓裡面住了這麼多人,要怎麼把包裹交給正確的收件人呢?,答案也很直接,就是根據包裹上收件人的地址,收件人的地址理論上來說是「大樓地址」+「戶地址」所組成的,延續上面的例子,完整的收件人地址會像是「台北市天堂路二段384巷5號3樓之5」,快遞就能夠根據「3樓之5」這個戶地址來找到正確的收件人,然後把包裹交給他,這邊的「戶地址」對應到電腦中,就是我們所謂的port。

其實上面的例子就是我們一般寄包裹的流程,只是我們把現實生活中的流程跟電腦中的一些專有名詞做對應,讓大家比較好了解

ps.這邊只是以最簡單的例子做比喻告訴大家port的意義是什麼,關於port還有更多更深知識,有興趣的人就去Google一下吧

整理一下

  • 包裹:封包
  • 應用程式:收件者
  • 大樓地址:ip位址
  • 戶地址:port

打完之後發現好長XD,我們言歸正傳

在Charles裡面,我們可以在選項列Proxy->Proxy Setttings設定Proxy的Port號碼,預設應該是8888
除非8888 Port已經被其他應用程式使用了,理論上不需要更改
記下來這組數字即可,等等會用到

find default port in Charles

Step5.設定Android手機,將封包轉送給Charles

首先先到Wi-Fi設定頁面,連上與你使用中的電腦所連線的同個AP(Access Point,簡單來說就是Wi-Fi分享器或是路由器)

由於我是用HTC,就以HTC手機為例囉
長按已經連線的Wi-Fi,然後選擇「修改網路」(左圖)

modify Wifi setting for charles in android phone

接著按照右圖的步驟

  1. 打開進階選項
  2. Proxy:選擇「手動」
  3. Proxy主機名稱:填入上面在Charles Help->Local Address IP中找到的ip位址
  4. Proxy通訊埠:填入上面在Proxy->Proxy Setttings中找到的port號碼
  5. 儲存!

設定完成之後,如果該裝置是第一次連線,Charles會跳出出現對話視窗,詢問你是否要讓某個ip進行連線,按下Allow即可

ps.如果之後要移除該ip的話,可以在Proxy -> Access Control Settings中設定

check connection in Charles

如果沒有出現這對話視窗的話代表有哪邊設定不對,或是防火牆有問題等等…

有個可以試試看方法:在Proxy -> Access Control Settings中加入Android裝置所使用的ip地址

真的不行就只能請大家自己Google了,或是官網也有提供一些問題的解答
最下面的Reference的部分我也有放一些有關解決問題的資源
尤其是投影片後面有幾頁有指出到連不上Charles的可能原因跟怎麼檢查

接著用Android手機隨便瀏覽一些網站,就可以看到在Charles中出現許多記錄啦~

Step6.來吧,https,讓我看看 (android 7.0以下適用)

基本的紀錄&查看http封包流程學會了之後,接著我們要來處理https的封包啦

不過醜話要說在前頭
以下的方法從Android7.0 開始就無法使用了,

原因是Google希望如果你要debug,你就自己看自己apk的封包就好了,不要看到別人的,所以自己安裝憑證的方式似乎不能使用了

SDK 24 以上要用 charles proxy debug 自己的 app 就要在 manifast 中加入 networkSecurityConfig

詳細的解說可以在下方Charles文件連結中找Android 的部份查看,而我手邊目前沒有7.0的裝置,需要試試看在補充給大家

如果你手機的系統是Android 7.0以下,Let’s Go~

在Charles內,透過Man-In-The-Middle攻擊查看https封包內容的功能是預設關閉的,我們要設定一下開啟這功能,

首先,需要在電腦上安裝Charles 的CA 證書
安裝方式很簡單,只要按下Help -> SSL Proxying -> Install Charles Root Certificate

接著會跳出有關該憑證的資訊視窗(左圖),有興趣可以看看(!?),然後按下「安裝憑證」

Windows會開啟憑證匯入精靈(右圖),這邊就跟你平常安裝軟體一樣(!?),使用預設值,一直按下一步,當然設定上有需要可以自己更改,最後沒問題的話,憑證就安裝成功啦

電腦這邊設定好了,那就換設定Android手機啦,手機也需要安裝同一個憑證~

在Android設備上開啟這個網址,下載憑證

這邊一樣是以HTC手機為範例,設定介面應該大同小異~

接著選擇設定->安全性->從儲存裝置安裝

how to install CA with settings UI

找到下載資料夾,選擇charles-proxy-ssl-proxying-certificate.pem這個檔案(左圖),接著輸入憑證名稱(右圖),名稱這邊沒有什麼限制,輸入能清楚辨認用途的名稱即可,或是可以跟我一樣打Charles-SSL-CA

下面的認證使用的部分選擇「VPN及應用程式」
最後按下確定,基本上就完成啦

select CA and install on Android Phone

如果你要確定憑證已經安裝完成了,你可以在設定->從安全性->信任的憑證裏頭找到(左圖),HTC有區分系統跟使用者的憑證,可以輕易在使用者的部分發現剛剛安裝的憑證

另外,手機應該會彈出通知,告知你「網路可能會受到監控」,這邊只是純告知,不用理會這通知哈哈(右圖)

find CA info / network observed notification

好了~憑證都安裝好了,該弄得的都弄好了
不過奇怪!Charles裡面的https紀錄還是看不到封包內容阿

這是因為Charles預設就是不會去解析https的封包給你看啦
如果你想對截取某個網站上的所有https封包,要在網址上點右鍵->Enable SSL Proxying,這樣就可以看到未來透過該網域傳送的封包的內容了

另外可以看到,選擇Enable SSL Proxying之後,下圖紅色框框內的icon就變成原本是http才會出現的icon,代表封包內容在Charles內可以以明碼的方式查看

Step7.Charles進階功能

Charles除了接收跟紀錄封包之外,還擁有更改封包內容、根據關鍵字過濾封包、模擬弱網路環境、進行壓力測試…等等好用的功能

大家可以參考下面的連結,雖然是Mac的介面,不過用相同的方式操作Windows版本的Charles也是沒有問題的,只是介面不一樣,文字內容都是相符的

打完收工~ The End

抓包神器之Charles,常用功能都在这里了

       我们在开发网站项目的时候,我们可以通过浏览器的debug模式来看request以及response的数据,那么如果我们开发移动端项目没有网页呢?如何抓取数据呢?

前几天有个做服务端的师弟跟我说他不用抓包工具,遇到问题直接debug代码,那我问他,如果线上服务的话,你怎么调?在实际项目中,没有遇到跟客户端相互扯皮的事情吗?我觉得很正常啊,客户端说他没问题,服务端也说他没问题,到底谁有问题?这时候没必要相互推脱,拿数据出来说话才是王道。抓包工具做了什么?它把客户端的请求数据,以及服务端返回的数据完完整整的抓取下来,供攻城狮分析问题。所以首先分析问题才是最重要的,而不是一上来就跟踪代码debug。

Charles

是一个HTTP代理服务器,HTTP监视器,反转代理服务器,当程序连接Charles的代理访问互联网时,Charles可以监控这个程序发送和接收的所有数据。它允许一个开发者查看所有连接互联网的HTTP通信,这些包括request, response和HTTP headers (包含cookies与caching信息)。

Charles主要功能:

1. 支持SSL代理。可以截取分析SSL的请求。

2. 支持流量控制。可以模拟慢速网络以及等待时间(latency)较长的请求。

3. 支持AJAX调试。可以自动将json或xml数据格式化,方便查看。

4. 支持AMF调试。可以将Flash Remoting 或 Flex Remoting信息格式化,方便查看。

5. 支持重发网络请求,方便后端调试。

6. 支持修改网络请求参数。

7. 支持网络请求的截获并动态修改。

8. 检查HTML,CSS和RSS内容是否符合W3C标准。

Charles安装:

去Charles的官方网站(http://www.charlesproxy.com)下载最新版的相应操作系统的Charles安装包安装即可。

Charles是收费软件,可以免费试用30天。试用期过后,未付费的用户仍然可以继续使用,但是每次使用时间不能超过30分钟,并且启动时将会有10秒种的延时。

因此,该付费方案对广大用户还是相当友好的,即使你长期不付费,也能使用完整的软件功能。只是当你需要长时间进行封包调试时,会因为Charles强制关闭而遇到影响。(偷偷告诉你,公众号回复“Charles”获取破解版下载链接)

Charles的功能很强大,我们这里只介绍几个常用的并且非常实用的功能:

1. 将Charles设置成系统代理

2. 截取移动设备上的网络请求包

2.1手动重复请求(Repeat,Advanced  Repeat)

2.2手动模拟请求(Compose)

2.3修改网络请求内容(Compose)

3. 过滤网络请求

4. 代理转发

5. 支持https请求抓包(如果配置了还是抓不到,下面有解决方案)

Charles 主要提供两种查看封包的视图,分别名为 “Structure” 和 “Sequence”。

1. Structure 视图将网络请求按访问的域名分类。

2. Sequence 视图将网络请求按访问的时间排序。

下面将一一介绍这些如何配置和使用

一. 将Charles设置成系统代理

Charles 是通过将自己设置成代理服务器来完成抓包的,勾选系统代理后,系统本地发出去的请求都能被截取下来。如果只抓取APP的包的话,可关闭此配置,这样不会出现太多的数据看着比较乱。

Mac

Windows:

需要注意的是,Chrome 和 Firefox 浏览器默认并不使用系统的代理服务器设置,而 Charles 是通过将自己设置成代理服务器来完成封包截取的,所以在默认情况下无法截取 Chrome 和 Firefox 浏览器的网络通讯内容。如果你需要截取的话,在 Chrome 中设置成使用系统的代理服务器设置即可,或者直接将代理服务器设置成 127.0.0.1:8888 也可达到相同效果。

二. 截取移动设备上的网络请求包

我们在调试移动APP时,需要抓取APP发送的数据包,首先进行设置,Proxy -> Proxy Settings默认端口是8888,根据实际情况可修改。

查看本机IP地址:Help -> Local IP Addresses

然后配置手机代理:

IOS和Android配置差不多

打开要调试的APP,请求就会先发送到Charles,然后验证是否允许访问。

当点击允许后,可以在Proxy -> Access Control Settings里看到可以访问此代理服务器列表

注意

如果不小心点击了拒绝,可以手动添加手机IP/Mac地址到允许访问列表,或者重启Charles,手机再次访问,会再次提示选择。

如果不想每换一个手机都要进行验证,可以配置允许所有手机访问,加入

0.0.0.0/0(IPv4)或::/0(IPv6)

现在就可以抓包了,拿一款我们公司开发的乐视车联APP来做测试:

三. 过滤网络请求

通常情况下,网络请求是非常大量的,从几十个请求里找到我们需要的观察的某个请求比较费时,那么我们就需要对网络请求进行过滤,只监控向指定目录服务器上发送的请求。有两种方法:

1. 在Sequence界面的中部的Filter栏中填入需要过滤出来的关键字。例如我们的服务器的地址是:*.leautolink.com,那么只需要在Filter栏中填入leautolink即可。(一般用于临时过滤)

2. 在Charles的菜单栏选择”Proxy”->”Recording Settings”,然后选择Include栏,选择添加一个项目,然后填入需要监控的协议,主机地址,端口号。这样就可以只截取目标网站的封包了。如下图所示:(固定过滤地址)

四. 代理转发

实际开发时,有这样的场景,服务端线上版本有bug,你在本地修改程序后,需要模拟实际的线上环境,来验证程序的正确性,最笨的方法就是让客户端修改一下APP的调用地址到你本机,然后重新打一个版本供你模拟测试,这样虽然可以,但每次遇到bug都要这么做的话,那效率极其低下,然而Charles为我们解决了这个问题。

请求转发,把调用方调用的地址转发到你本机地址的程序进行执行。

右键 -> Map Remote …

并且配置Tools -> Map Romote

运行APP

五. Https请求抓包

默认我们是看不到https的请求数据的。我们需要安装证书。

Mac:

双击打开Charles Proxy CA

手机配置完代理(必须的操作)后,浏览器打开http://chls.pro/ssl

然后配置Proxy -> SSL Proxying Settings… 添加要抓取的https请求

然后再次请求:

如果不再使用Charles,想删除手机里的证书文件怎么删除呢?

设置->通用->描述文件与设备管理,删除指定的证书即可

Windows:

下一步

然后继续下一步直到导入成功。

剩下的配置与Max下配置相同

SSL的问题:

最近iPhone系统更新到ios 10.3后,用Charles抓包竟然出现了一些问题,https的请求都会失败,提示错误信息为Failure SSLHandshake: Received fatal alert: unknown_ca 和You may need to configure your browser or application to trust the Charles Root Certificate. 然而之前任何问题都没有,并且相关设置都正确:电脑上安装了Charles的根证书,并且设置了始终信任,然后手机上也登录了http://chls.pro/ssl安装了描述文件,一切都按正常程序走的,但是错误始终无法解决.

原因:

虽然charles的根证书已经在安装列表中显示,但它是被关闭的。在iOS 10.3之前,当你将安装一个自定义证书,iOS会默认信任,不需要进一步的设置。而iOS 10.3之后,安装新的自定义证书默认是不受信任的。如果要信任已安装的自定义证书,需要手动打开开关以信任证书。

解决:

设置->通用->关于本机->证书信任设置-> 找到charles proxy custom root certificate然后信任该证书即可.

Windows系统无法上网的问题

在windows下,如果Charles没有正常关闭,或者系统重启后无法上网的问题,因为Charles做了系统代理,当上网的时候,首先先访问代理服务器,然后代理再去链接网络,这时候Charles是非正常关闭的,只要重新打开Charles即可上网正常,正常关闭Charles后同样没问题。

写给测试人员的

另外抓包工具不只是开发人员独享的,任何一个参与项目的人都可以使用,测试工程师,运维,产品经理等等任何对技术感兴趣的人,尤其是测试工程师,在测试的过程中遇到问题,不是简单的bug记录员,而要做到问题的分析员,这才是真正的“工程师”,当bug真正的到开发这的时候,他拿到的是不仅仅是bug,包含了分析过程,分析的数据,甚至是解决方案。我觉得这才是标准工作方式。

举个例子,现在是移动互联网时代,那么我们开发的客户端必然包括Android和IOS版本,同样的功能必然在不同的客户端都有实现,比如同样的功能Android能用,而IOS不能用,这时候对于测试人员来说,他可以简单的提个bug说某个功能Android能用,ISO不能用,请开发人员解决。这个问题应该给谁呢?IOS开发,是IOS缺少请求参数?服务端开发,是服务端缺少对IOS的兼容吗?为了能让问题解决,可能要写两个相同的bug发给不同的人, 那我们开发看到这样的问题,首先重现问题,那么肯定要跟测试人再次沟通,问问当时的测试过程,然后模拟同样的数据进行复现。

那么如果我们的测试工程师换一种工作方式呢?当遇到问题的时候,用抓包工具把数据抓下来,首先比较Android和IOS发送请求参数有什么不同,比较一下返回的数据有什么不同,如果请求参数不同,那么测试人员通过模拟工具,把缺少的参数加上,那么返回的数据是不是就正确了呢?如果参数相同,返回的数据不同,或者是参数相同,返回的数据相同,这样的话,问题就显而易见了,测试人员可以把抓取的数据提交给相应的开发人员,而开发人员完全可以去debug了。提高测试人员的自身技能,而又提高了解决问题的效率,何乐而不为?

作者:互扯程序
链接:https://www.jianshu.com/p/993bc794138d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

诺顿杀毒软件2018激活密钥最新提取方法

诺顿激活密钥最新提取方法:

首先,下载诺顿杀毒软件90天OEM版(点击这里下载)

1.安装后,创建帐户(新建账号)。

2.注册:输入邮箱、Norton密码、姓名、手机号码,单击“创建帐户”。

3.Norton成功激活,可以看到订购状态:剩余90天。

4.打开官网 https://my.norton.com/ 登陆刚才注册的账号。

5.复制产品序列号。

6.把此链接复制粘贴到浏览器上面 http://updatecenter.norton.com/product-update?PROD=Norton&PLANG=eng&PRODID=00000131&PSN=
然后在 = 号后面加上产品序列号,按回车键。

7.点击Continue(继续)。

8. 拉到浏览器地址栏最后面,把 inject%3Dfalse%26LNG%3Deng-USA 删除 然后按回车键。

9.右键复制客户端链接。

10.在刚才复制的链接最后面,把false修改成true,然后按回车键。

11.新建一个TXT文本文件,然后打开刚才下载的NISBetaDownloader.exe,通过“编辑 → 查找,查找内容,输入 key ”,点击“查找下一个”,下面那个标记起来的就是激活码了!