Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
114 commits
Select commit Hold shift + click to select a range
988289e
recreate master branch
MegatronKing Aug 20, 2019
7c90e43
update
MegatronKing Aug 20, 2019
e959d6a
update tutorials
MegatronKing Aug 21, 2019
a09da4b
Create .gitignore
MegatronKing Aug 21, 2019
fd815ee
update tutorials
MegatronKing Aug 21, 2019
f742296
Merge branch 'master' of https://github.com/MegatronKing/HttpCanary
MegatronKing Aug 21, 2019
1e9c360
Delete .DS_Store
MegatronKing Aug 21, 2019
64da739
update tutorials
MegatronKing Aug 21, 2019
bad84fd
update
MegatronKing Aug 21, 2019
9d41d65
update
MegatronKing Aug 22, 2019
561197a
update
MegatronKing Aug 22, 2019
204e7e5
update
MegatronKing Aug 23, 2019
b68dba1
update
MegatronKing Aug 24, 2019
c368d34
update
MegatronKing Aug 24, 2019
21ffeaf
update
MegatronKing Aug 24, 2019
93b706c
update
MegatronKing Aug 24, 2019
1f826b9
update
MegatronKing Aug 24, 2019
8509f69
Update version.json
MegatronKing Aug 25, 2019
67ef8a2
Update version.json
MegatronKing Aug 25, 2019
050c604
Update README.md
MegatronKing Aug 28, 2019
7566e9d
update
MegatronKing Aug 28, 2019
e892a67
Merge branch 'master' of github.com:MegatronKing/HttpCanary
MegatronKing Aug 28, 2019
36dbca3
update
MegatronKing Aug 28, 2019
1ac9120
update
MegatronKing Aug 28, 2019
dc9ea13
Update version.json
MegatronKing Sep 3, 2019
6b79e4f
Update version.json
MegatronKing Sep 3, 2019
aa0a205
Update version.json
MegatronKing Sep 3, 2019
be689fa
Update version.json
MegatronKing Sep 4, 2019
e92c954
Update version.json
MegatronKing Sep 4, 2019
b4562fb
Update version.json
MegatronKing Sep 5, 2019
71c136a
Update version.json
MegatronKing Sep 5, 2019
a49f015
Update version.json
MegatronKing Sep 8, 2019
0f5a8a3
Update version.json
MegatronKing Sep 8, 2019
3ef963d
Update version.json
MegatronKing Sep 8, 2019
a6fba0e
init commit
MegatronKing Sep 9, 2019
a6d2e02
Merge branch 'master' of github.com:MegatronKing/HttpCanary
MegatronKing Sep 9, 2019
818449e
init commit
MegatronKing Sep 9, 2019
e3a2b51
init commit
MegatronKing Sep 9, 2019
78ed4bd
init commit
MegatronKing Sep 9, 2019
a8d3440
update
MegatronKing Sep 10, 2019
2dd526b
Update version.json
MegatronKing Sep 22, 2019
0c2bb88
Update version.json
MegatronKing Sep 22, 2019
67a8941
Update version.json
MegatronKing Sep 22, 2019
250af55
Update version.json
MegatronKing Sep 22, 2019
57f2359
update
MegatronKing Oct 13, 2019
4ac6e39
update
MegatronKing Oct 20, 2019
764305d
update
MegatronKing Oct 20, 2019
0029c74
update
MegatronKing Oct 22, 2019
b76b996
Update version.json
MegatronKing Oct 23, 2019
9df20a9
Update version.json
MegatronKing Oct 23, 2019
4652029
update
MegatronKing Oct 24, 2019
ee6722b
Merge branch 'master' of github.com:MegatronKing/HttpCanary
MegatronKing Oct 24, 2019
c5ca371
Update version.json
MegatronKing Oct 27, 2019
dd2c8d2
update
MegatronKing Oct 27, 2019
30e6ab2
Merge branch 'master' of github.com:MegatronKing/HttpCanary
MegatronKing Oct 27, 2019
de6d91b
Update version.json
MegatronKing Oct 30, 2019
4135a57
Update version.json
MegatronKing Oct 30, 2019
bad7c7c
Update version.json
MegatronKing Oct 30, 2019
99ca838
Update version.json
MegatronKing Oct 30, 2019
54a878e
update
MegatronKing Nov 4, 2019
f0db1fd
Merge branch 'master' of github.com:MegatronKing/HttpCanary
MegatronKing Nov 4, 2019
cbea2a1
Update version.json
MegatronKing Nov 9, 2019
190a2b2
Update version.json
MegatronKing Nov 9, 2019
44e05cf
Update README.md
forhuan Dec 18, 2019
0eb5a38
Update README.md
forhuan Dec 19, 2019
6777881
Merge pull request #80 from forhuan/master
MegatronKing Jan 31, 2020
0c643d3
Update version.json
MegatronKing Feb 8, 2020
6300e72
Update version.json
MegatronKing Feb 8, 2020
9adc928
add english translate
lonelysnow Feb 8, 2020
903199a
Merge pull request #88 from lonelysnow/master
MegatronKing Feb 9, 2020
3184ecc
fix feedback issue
MegatronKing Feb 23, 2020
264ab12
add beian info
MegatronKing Feb 23, 2020
036151d
update tutorials
MegatronKing Feb 23, 2020
9e61e37
Merge pull request #1 from MegatronKing/master
lonelysnow Feb 23, 2020
5b33e4d
Update version.json
MegatronKing Feb 27, 2020
887b1d6
Update version.json
MegatronKing Feb 27, 2020
b3812e2
Merge pull request #2 from MegatronKing/master
lonelysnow Feb 29, 2020
193ad68
version 1 for readme.md
lonelysnow Feb 29, 2020
9b3091e
Merge pull request #91 from lonelysnow/master
MegatronKing Mar 1, 2020
e56feb5
opt readme and update latest version
MegatronKing Mar 1, 2020
641a009
Update README.md
MegatronKing Mar 2, 2020
6d4308c
Update README.md
MegatronKing Mar 2, 2020
0417705
Update version.json
MegatronKing Mar 8, 2020
9595ced
Update version.json
MegatronKing Mar 8, 2020
35ce067
Update download.md
MegatronKing Mar 8, 2020
1c65591
Update download.md
MegatronKing Mar 8, 2020
dad140e
Update download.md
MegatronKing Mar 8, 2020
e952f63
Corrections
Jayapraveen Mar 9, 2020
2a04610
Update version.json
MegatronKing Mar 9, 2020
392db63
Merge pull request #97 from Jayapraveen/master
MegatronKing Mar 11, 2020
ff621e4
Update version.json
MegatronKing Mar 17, 2020
a76af6f
Update version.json
MegatronKing Apr 7, 2020
2e2e207
Update version.json
MegatronKing Apr 7, 2020
115dbdc
Update version.json
MegatronKing Apr 7, 2020
80e7d31
Update version.json
MegatronKing Apr 7, 2020
3556570
Update version.json
MegatronKing Apr 7, 2020
084ef27
Update version.json
MegatronKing Apr 7, 2020
f4b6a95
Update version.json
MegatronKing Apr 7, 2020
f78faf9
Update download.md
MegatronKing Apr 7, 2020
62f834b
Update download.md
MegatronKing Apr 7, 2020
38e9fc2
Update version.json
MegatronKing Apr 13, 2020
8097951
Update version.json
MegatronKing Apr 13, 2020
7ecd5ba
Update download.md
MegatronKing Apr 13, 2020
b1bd71a
Update download.md
MegatronKing Apr 13, 2020
10c07e6
Update book.json
MegatronKing Apr 13, 2020
4e880a5
Update book.json
MegatronKing Apr 13, 2020
a2e4313
Update book.json
MegatronKing Apr 13, 2020
a394df5
Update book.json
MegatronKing Apr 13, 2020
06eaf0d
Update book.json
MegatronKing Apr 13, 2020
3207299
Update version.json
MegatronKing May 4, 2020
2c3d369
Update version.json
MegatronKing May 4, 2020
0590ffd
Update version.json
MegatronKing May 4, 2020
563845d
Update version.json
MegatronKing May 4, 2020
382a314
Update version.json
MegatronKing Jun 16, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.DS_Store
40 changes: 38 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,39 @@
# HttpCanary
# Welcome to HttpCanary

Coming...
## Introduction

HttpCanary is a powerful network analysis tool for the Android platform. It supports multiple protocols such as **TCP**, **UDP**, **HTTP**, **HTTP2**, **HTTPS** and **WebSocket**.


The application can be download from Google Play.


| Free Version | Paid Version|
| :----------: | :----------: |
|[![Get it on Google Play](https://github.com/MegatronKing/HttpCanary/blob/master/assets/get-it-on-google-play.png)](https://play.google.com/store/apps/details?id=com.guoshi.httpcanary) | [![Get it on Google Play](https://github.com/MegatronKing/HttpCanary/blob/master/assets/get-it-on-google-play.png)](https://play.google.com/store/apps/details?id=com.guoshi.httpcanary.premium) |


## Features
- [x] No root requirement, will not affect network usage.
- [x] Supports protocols like HTTP1.0, HTTP1.1, HTTP2, HTTPS and WebSocket.
- [x] Supports modification and injection of capture data, you can intercept the packets and modify them.
- [x] Supports repeat and compose requests.
- [x] Supports filtering and searching for packet capture records, as well as setting the specified app and Host/IP.
- [x] Contains Raw, Hex, Text, Header, JSON and many other viewers.
- [x] Automatic decode data like gzip, deflate, chunked.
- [x] Supports for previewing URL, JSON, form, image, audio, cookie, set-cookie, and many other data types.
- [x] Supports for saving request and response data to a file or adding to favorite.
- [x] Supports WebSocket real-time preview.
- [x] Supports sharing of request and response data, and open shared file with HttpCanary.
- [x] Supports blocking request and response.


## Getting Started

- [Wiki](https://github.com/MegatronKing/HttpCanary/wiki)
- [Tutorials](https://httpcanary.com/tutorials)
- [NetBare](https://github.com/MegatronKing/NetBare)

## Screenshot

![](https://github.com/MegatronKing/HttpCanary/blob/master/assets/main_screenshot.png)
Binary file added assets/get-it-on-google-play.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/main_screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 8 additions & 0 deletions config/basic/version.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"min": "3.1.5",
"latest": "3.3.4",
"url": "https://httpcanary.com/app/httpcanary_basic_v3.3.4.apk",
"en_notes": " • New features: search, sort and multi selection.\n • New features: batch save, zip save and batch add black/white list.\n • Refactor filter and record save.\n • Redesign icons in list and title texts.\n • Fixed the long loading issue.\n • Fixed the issue where the sub menu icon is invisible.\n • Fixed certificate installation issue.\n • Minor bugfixes and other improvements.\n",
"zh_notes": " • 新增全局搜索、排序、多选等功能。\n • 新增批量保存、压缩保存、批量添加黑白名单等功能。\n • 重构和优化过滤、保存功能。\n • 重新设计列表非应用类Icon、标题栏内容等样式。\n • 修复启动加载时间过长的bug。\n • 修复标题栏子菜单图标不显示的bug。\n • 修复安装证书横竖屏切换等场景出现无限循环安装证书的bug。\n • 其它细节问题修复和优化。\n",
"md5": "49c4ddbb2bafd7150a49cdbe35443744"
}
8 changes: 8 additions & 0 deletions config/premium/version.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"min": "3.3.0",
"latest": "3.3.5",
"url": "https://httpcanary.com/app/httpcanary_premium_v3.3.5.apk",
"en_notes": " • Important: The 3.2.x version was expired, please upgrade to v3.3+.\n • New features: search, sort and multi selection.\n • New features: batch save, zip save and batch add black/white list.\n • Refactor filter and record save.\n • Redesign icons in list and title texts.\n • Fixed the long loading issue.\n • Fixed the issue where the sub menu icon is invisible.\n • Fixed certificate installation issue.\n • Minor bugfixes and other improvements.\n",
"zh_notes": " • 重要:3.2.x版本已失效,请升级至3.3.x以上版本。\n • 新增全局搜索、排序、多选等功能。\n • 新增批量保存、压缩保存、批量添加黑白名单等功能。\n • 重构和优化过滤、保存功能。\n • 重新设计列表非应用类Icon、标题栏内容等样式。\n • 修复启动加载时间过长的bug。\n • 修复标题栏子菜单图标不显示的bug。\n • 修复安装证书横竖屏切换等场景出现无限循环安装证书的bug。\n • 其它细节问题修复和优化。\n",
"md5": "49c4ddbb2bafd7150a49cdbe35443744"
}
10 changes: 10 additions & 0 deletions plugins/HostBlock/hosts.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# There is a bug in the history version of this plugin. Please upgrade to v3.1.5 or later.

# Configure domain hosts, support ? and * wildcards.
xw.qq.com
*.baidu.com

# Configure domain IPs, support ? and * wildcards.
112.25.105.102
112.25.105.24?
223.111.*.*
Binary file added plugins/HttpOverview/http-overview.xls
Binary file not shown.
5 changes: 5 additions & 0 deletions plugins/MimeBlock/req-mimes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Block all image requests.
image/*

# Block JSON requests.
application/json
5 changes: 5 additions & 0 deletions plugins/MimeBlock/res-mimes.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Block all image responses.
image/*

# Block JSON responses.
application/json
1 change: 1 addition & 0 deletions plugins/PacketsUpload/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/node_modules
30 changes: 30 additions & 0 deletions plugins/PacketsUpload/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
const http = require('http');
const fs = require('fs');
const dateFormat = require('dateformat');

const compressing = require('compressing');

const dir = "HttpCanary";

if (!fs.existsSync(dir)) {
fs.mkdirSync(dir);
}

http.createServer(function (req, res) {
console.log("header: " + req.headers['hello']);
var zip = dir + "/" + dateFormat(new Date(), "yyyymmdd_hMMss") + ".zip";
var stream = req.pipe(fs.createWriteStream(zip));
stream.on("finish", function(response) {
compressing.zip.uncompress(zip, zip.slice(0, -4))
.then(() => {
fs.unlinkSync(zip);
res.writeHead(200, {'Content-Type': 'application/json'});
res.end("{\"message\":\"Upload success!\"}");
})
.catch(err => {
fs.unlinkSync(zip);
res.writeHead(500, {'Content-Type': 'application/json'});
res.end("{\"message\":\"Server internal error!\"}");
});
});
}).listen(9090);
12 changes: 12 additions & 0 deletions plugins/PacketsUpload/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"name": "packets-upload",
"version": "1.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"compressing": "^1.4.0",
"dateformat": "^3.0.3"
}
}
3 changes: 3 additions & 0 deletions tutorials/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
_book
.DS_Store
/node_modules
4 changes: 4 additions & 0 deletions tutorials/LANGS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Languages

* [简体中文](zh-hans/)
* [English](en/)
91 changes: 91 additions & 0 deletions tutorials/book.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
{
"title": "HttpCanary使用教程",
"author": "Megatron King",
"language": "zh-hans",
"plugins": [
"-lunr",
"-search",
"-highlight",
"-livereload",
"search-plus@^0.0.11",
"simple-page-toc@^0.1.1",
"github@^2.0.0",
"edit-link@^2.0.2",
"anchors@^0.7.1",
"include-codeblock@^3.0.2",
"emphasize@^1.1.0",
"splitter@^0.0.8",
"tbfed-pagefooter@^0.0.1",
"expandable-chapters-small@^0.1.7",
"sectionx@^3.1.0",
"anchor-navigation-ex@0.1.8",
"favicon@^0.0.2",
"todo@^0.1.3",
"alerts@^0.2.0",
"versions-select@^0.1.1",
"-sharing",
"sharing-plus@^0.0.2"
],
"pluginsConfig": {
"theme-default": {
"showLevel": false
},
"github": {
"url": "https://github.com/MegatronKing/HttpCanary"
},
"include-codeblock": {
"template": "ace",
"unindent": true,
"edit": true
},
"sharing": {
"douban": false,
"facebook": false,
"google": false,
"hatenaBookmark": false,
"instapaper": false,
"line": false,
"linkedin": false,
"messenger": false,
"pocket": false,
"qq": false,
"qzone": false,
"stumbleupon": false,
"twitter": false,
"viber": false,
"vk": false,
"weibo": false,
"whatsapp": false,
"all": [
"facebook", "google", "twitter",
"weibo", "instapaper", "linkedin",
"pocket", "stumbleupon", "qq", "qzone"
]
},
"tbfed-pagefooter": {
"copyright": "Copyright © GuoShi 2020",
"modify_format": "YYYY-MM-DD HH:mm:ss"
},
"simple-page-toc": {
"maxDepth": 3,
"skipFirstH1": true
},
"edit-link": {
"base": "https://github.com/MegatronKing/HttpCanary/blob/master/tutorials",
"label": "Edit"
},
"anchor-navigation-ex": {
"isRewritePageTitle": false,
"tocLevel1Icon": "fa fa-hand-o-right",
"tocLevel2Icon": "fa fa-hand-o-right",
"tocLevel3Icon": "fa fa-hand-o-right"
},
"sectionx": {
"tag": "b"
},
"favicon": {
"shortcut": "favicon.ico",
"bookmark": "favicon.ico"
}
}
}
78 changes: 78 additions & 0 deletions tutorials/en/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
## Introduction

[Languages](https://httpcanary.com/tutorials)

HttpCanary is a powerful network analysis tool on the Android platform. It supports TCP/UDP/HTTP/HTTPS/WebSocket and other protocols. It can be regarded as Fiddler or Charles on the Android platform.

Users of HttpCanary need to have some basic knowledge of TCP/IP, and it is only suitable for the following usage scenarios:
- Android/front-end/back-end software engineers debug the Rest API or locate bugs in network programming.
- Software test engineers edit network data to simulate different business scenarios and perform white-box or black-box tests.
- Network security engineers test and verify the risks of network communication between app and server.

If you are not a professional in the above fields or lack the corresponding knowledge and risk awareness, we recommend that you should uninstall this application immediately!


### 1. Limit & Support
- Android 5.0+ / real machine + emulator / Wifi + cellular network / no requirement of root.
- Please refrain from using Parallel Space on Android 10+ (Check Installation page for other ways).

### 2. Features

#### 2.1 Multi-protocol Support
- Support HTTP1.0/HTTP1.1/HTTP2/HTTPS protocols.
- Support WebSocket protocol.
- Support Basic TCP/UDP protocol.

#### 2.2 Data analysis Support
- Support the common encoding formats, such as gzip, brotli, chunked, etc.
- Support searching and filtering packet content, support customized filter rules.
- Support previewing data content, such as JSON, pictures, audio, video, text, cookies, etc.
- Support many kinds viewers of data analysis, such as Raw Viewer, HEX Viewer, Text Viewer, etc.
- Support network analysis, such as previewing the detail of HTTP packets, counting the size of request / response data, aggregating the statistics of time, etc.
- Support adding to favorites, adding comment, saving, sharing and copying data packet.

#### 2.3 Debug Support
- Support adding breakpoint on specified request, modifying the data and submitting.
- Support injector function, creating custom rules to modify packets.
- Support operating on network requests, such as resending / modifying and resending / batch resending .
- Support blacklist or whitelist function, freely specifying the target to capture packets.
- Support packet shielding, such as blocking specified packets sent from the client to the server.

#### 2.4 Plugin Support
- Rich built-in common plugins, such as Video Downloader, WeChat Location Modifier, etc.
- Support creating, importing and exporting injector plugins(partially implemented).

### 3. Premium Version

HttpCanary has two different versions: free version and premium version. The free version is limited as follows:
- 14-day premium version full-featured experience period (except for a few features).
- Will have advertisements in some pages, such as the homepage and content pages.
- Unable to use high-speed mode.
- The breakpoint and injector functions are not available.
- The resending, advanced resending, modifying and resending functions are not available.
- The copy cURL function are not available.
- Unable to use the function of quickly shielding the specified packet.
- Some built-in plugins are not available.
- Unable to participate in the first-hand internal testing experience event of the new version.
- Unable to communicate with developers in a one to one way.

**⚠️ The breakpoint and injection of the premium version are not available in China Mainland.**<br>
**⚠️ The breakpoint and injection of the premium version are not available in China Mainland.**<br>
**⚠️ The breakpoint and injection of the premium version are not available in China Mainland.**<br>

#### How to get the premium version?

In order to prevent the abuse of some features, the purchase channel of the premium version has been closed in China Mainland. For getting the premium version, please go to [Google Play](https://play.google.com/store/apps/details?id=com.guoshi.httpcanary.premium) and purchase. Sorry for the inconvenience!

#### Plan of free

If you are a loyal fan of HttpCanary and cannot use Google Play to purchase the premium version, you can participate in the **plan of free**. You can get the activation code of the premium version or the redeem code for the premium version of Google Play from the developer upon reaching the standards.

Standards of Award:
- Take part in writing, translating or error correcting of HttpCanary's tutorial. The submitted tutorial content must be professional and positive. Participation method: submitting pull request on [Github](https://github.com/MegatronKing/HttpCanary/tree/master/tutorials). If the pull request passes the review, the developer will give you the gift of the **plan of free**.

### 4. Notice

HttpCanary is a developer tool. It can only be used only with highly ethical intention such as network security analysis, API interface debugging, and network communication principle learning. It is strictly forbidden to use in illegal activity or black/gray industry chains, such as network attacks, data theft, application cracking, and making cheating plugins. The legal risks caused by improper use of HttpCanary are borne by the user, HttpCanary and the developer will not bear any responsibility.

Please read the "User License Agreement" carefully before using HttpCanary and strictly abide by the "User License Agreement" in accordance with laws and regulations of your country during the use.
25 changes: 25 additions & 0 deletions tutorials/en/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# HttpCanary Tutorial

* [Introduction](README.md)
* [Download](download.md)
* [Installation](install.md)
* [Basic Usage](basic/README.md)
* [HTTP Protocol](basic/http.md)
* [WebSocket Protocol](basic/websocket.md)
* [TCP/UDP Protocol](basic/tcp-udp.md)
* [Advanced Usage](advanced/README.md)
* [SSL Host Mapping](advanced/ssl-host-mapping.md)
* [Plugins](plugins/README.md)
* [Host Blocking](plugins/host-block.md)
* [MimeType Blocking](plugins/mime-type-block.md)
* [Image Downloader](plugins/image-download.md)
* [Audio Downloader](plugins/audio-download.md)
* [Video Downloader](plugins/video-download.md)
* [HTTP Overview](plugins/http-overview.md)
* [Network Location Modifier](plugins/location.md)
* [Packet Upload](plugins/packets-upload.md)
* [Feedback](feedback.md)
* [About](about.md)
* [Coming Soon](coming.md)


18 changes: 18 additions & 0 deletions tutorials/en/about.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
### About

HttpCanary is a personal product which was developed outside of my daily work. I finished all the works by myself, including requirements analysis, UI design, front-end and back-end development, and testing. However, due to lack of energy and time, there are some problems such as updating slowly, missing features, and insufficient user experience. Sorry for any inconvenience brought to you.

My goal is to make HttpCanary the most powerful network analysis tool on Android!

Welcome to follow me on Github:
[MegatronKing](https://github.com/MegatronKing)

### Special thanks

Thanks to following people who provided help for HttpCanary:
- 寒梧
- Wil Osberger
- david082321
- BuShe
- 妖精ξ也會哭
- Hasky
3 changes: 3 additions & 0 deletions tutorials/en/advanced/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
### Advanced Usage

In addition to the basic functions of network packet capture, HttpCanary also provides rich functions to facilitate developers' debugging, such as injections changing, breakpoints and so on. In this tutorial of advanced usage, several typical scenarios will be demonstrated to help developers become familiar with the advanced features of HttpCanary and the handling of some common exceptions.
34 changes: 34 additions & 0 deletions tutorials/en/advanced/ssl-host-mapping.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
### SSL Host Mapping

When using SSL/TLS to encrypt the request, the client needs to add the information of host (Server Name Indication, SNI for short) in the handshake packet to request the certificate of the server. This is because one server could have multiple domain names, so the server needs to return the corresponding domain SSL certificate according to the information of host in client request. HttpCanary will parse the SNI to create a MITM certificate for handshake.

![](/assets/ssl_sni.png)

This works well in normal cases. However, in many cases, the server will only have one domain name. In order to improve the speed of response, the client may directly use ip instead of domain name when connecting to server. At this time, the client will not add SNI in the handshake packet so the HttpCanary can't obtain the information of host to create a man-in-middle certificate. As a result, the HttpCanary cannot parse SSL/TLS encrypted data packets. The following image shows the data we will see:

![](/assets/ssl_host_mapping1.png)

Take the packet above as an example. The port of server is 443, indicating that this is most likely an HTTPS request. The first packet is a Client Hello handshake packet sent by the client to the server, and the second packet is a Server Hello handshake packet sent by the server to the client. The information in the red box of the Server Hello packet in the image is the SSL certificate information. The domain name (CN) of the certificate is github.com, but the first Client Hello handshake packet does not have SNI information, that is, there is no github.com information. Therefore, the packets that HttpCanary capture were all encrypted with SSL/TLS.

In this case, you need to complete SNI information manually.

#### Method 1: Automatic Mapping

In "more options" menu, tap "Host Mapping" to automatically bound the host of the certificate to the current ip.

![](/assets/ssl_host_mapping2.png)

#### Method 2: Manual Mapping

Except for automatic mapping, you can use manual mapping to map the host manually. You can get into "Settings-> SSL Certificate Management-> Host Mapping", tap the "+" button in the upper right corner, and add the host and ip.

![](/assets/ssl_host_mapping3.png)

In addition, HttpCanary also supports managing mapped host, batch importing and exporting.

![](/assets/ssl_host_mapping4.png)

After configuring the host mapping, you can obtain unencrypted data of HTTPS packets for analysis!



Binary file added tutorials/en/assets/cetificate_export.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/cetificate_firefox1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/cetificate_firefox2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/cetificate_move.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/cetificate_trust.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_audio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_cookie.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_headers.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_hex.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_image.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_json.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_preview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_raw.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_save.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_set-cookie.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_share.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_text.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_url.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/http_video.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/install_paralle_space.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/install_system_cetificate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/install_user_cetificate.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added tutorials/en/assets/install_vpn.png
Binary file added tutorials/en/assets/main_page.png
Binary file added tutorials/en/assets/paralle_space_capture.png
Binary file added tutorials/en/assets/plugin.png
Binary file added tutorials/en/assets/plugin_repo.png
Binary file added tutorials/en/assets/ssl_host_mapping1.png
Binary file added tutorials/en/assets/ssl_host_mapping2.png
Binary file added tutorials/en/assets/ssl_host_mapping3.png
Binary file added tutorials/en/assets/ssl_host_mapping4.png
Binary file added tutorials/en/assets/ssl_sni.png
Binary file added tutorials/en/assets/tcp_udp_hex.png
Binary file added tutorials/en/assets/tcp_udp_more.png
Binary file added tutorials/en/assets/tcp_udp_text.png
Binary file added tutorials/en/assets/websockets_diagram.png
Binary file added tutorials/en/assets/websockets_overview.png
Loading