# 开发与调试总结
# H5应用添加控制台
charles
抓到手机访问的 html
页面,添加插件
<script src="https://cdn.jsdelivr.net/npm/eruda@1.10.3/eruda.min.js"></script><script>
eruda.init()
</script>
或
<script src="//cdn.jsdelivr.net/npm/eruda"></script>
<script>
eruda.init();
</script>
# charles激活
Help => Register
输入:
- Registered Name:
https://zhile.io
- License Key:
48891cf209c6d32bf4
# 抓包突破Pinning
WARNING
亲测失败~ , 先记录一下
使用 Charles 可以抓到大部分的 HTTP/HTTPS 的请求,但有的 APP 应用使用 SSL Pinning
进行了双向认证,所以使用 Charles 抓不到这些请求
解决方案:以 IOS 为例,给手机安装 ssl-kill-switch2
ssl-kill-switch2 使用了Cydia Substrate的钩子技术,这个钩子Hook了IOS的验证证书函数,使得他们接受任何证书。下载地址 SSL Kill Switch 2 (opens new window)
# 安装方法
1.手机越狱
手机越狱后,界面会添加一个叫 Cydia 的APP
2. 通过 Cydia 安装三个软件 Debian Packager
、 Cydia Substrate
、 PreferenceLoader
以安装 Debian Packager
为例:
- 打开cydia应用,选择“搜索”,输入“Debian Packager”插件
- 然后进入详情,选择“安装”,按提示安装完成
Cydia Substrate
、 PreferenceLoader
安装方法同理
TIP
安装了 Cydia 后出现过一次搜索不到应用的情况,应该是没成功连接到 Cydia 服务器,我是因为手机已经设置网络代理导致的,关掉就行了
3. 安装 ssl-kill-switch2
首先将
ssl-kill-switch2
下载下来后,通过爱思助手将文件导入到手机文件系统中SSH 连接手机
通过 SSH 命令进入手机,这一步的前提是 Cydia 安装了 openSSH,如果没有的话,还是上面的方法进行安装
连接命令
root@192.168.2.2
,这个IP地址是手机 IP地址,通过设置
->网络
->wifi的侧的感叹号查看
之后会提示需要密码,默认密码为:
alpine
然后就是进入手机终端了
安装
进入到刚上传 ssl-kill-switch2 目录位置
cd /User/Media ls
执行安装命令
dpkg -i com.nablac0d3.SSLKillSwitch2_0.11.deb
,执行后 Cydia 中能看这个 ssl-kill-switch2 软件,同时进入手机设置也能看到 ssl-kill-switch2 选项
4. 打开 ssl-kill-switch2
按网上的说法,点击 ssl-kill-switch2
, 勾选 Disable Certificate Validation
选项就能成功抓包了,但是自己试却没效果~
# Chrome 在打包后的文件中查找源文件
通过路径查找
如果知道要调试的文件名和路径,点击控制台的 source
,再按下 ctrl+p
,在出现的搜索框中输入文件名或者路径
通过内容查找
控制台显示显示 console
标题的左侧有个 三个点的符号
,点击它,出现的选项中选择 search
# 直接使用import
所需条件
Chrome
使用
<script type="module">
<script type="module"> import { test } from './test/test1.js' test() </script>
必须在服务器环境下才运行页面
全局安装模块
http-server
:npm install http-server -g
启动
http-server -c-1
(只输入 http-server
的话,更新了代码后,页面不会同步更新)
# redux-devtools
在谷歌应用商店下载
redux-devtools
npm install redux-devtools-extension --save-dev
在使用的store的地方引入
composeWithDevTools
import { createStore, compose, applyMiddleware } from 'redux'
import thunkmiddleware from 'redux-thunk'
import { composeWithDevTools } from 'redux-devtools-extension'
import reducer from './reducers/index'
const devTools = require('remote-redux-devtools').default
let store
if (process.env.NODE_ENV === 'development') {
store = createStore(
reducer,
compose(
applyMiddleware(thunkmiddleware),
composeWithDevTools(),
)
)
} else {
store = createStore(reducer, applyMiddleware(thunkmiddleware))
}
export default store
# Babel
Babel 官网提供了在线转换的工具 (opens new window),方便查看 ES6 到 ES5 的转换结果