adb设置代理用如下命令:adb shell settings put global http_proxy 127.0.0.1:8888 换成自己电脑的IP地址即可。
但是有时我们想抓取HTTPS请求,在设备上输入 http://charlesproxy.com/getssl 后死活就是不弹出输入证书名字的对话框,这应该是之前设置过代理没有清除造成的。但是如何清除代理今天试了三种方法,成功的是二和三。
方案一(各个博客里提到的最多的方式,本人试了试,没有成功过):移除代理:
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
使用adb命令时这里遇到报错,反正就是无法执行,
Invalid command: delete
usage: settings [--user NUM] get namespace key
settings [--user NUM] put namespace key value
'namespace' is one of {system, secure, global}, case-insensitive
If '--user NUM' is not given, the operations are performed on the owner user.
方案二:设置代理的信息存在 com.android.providers.settings 这个应用中的数据库里,那么我们删除掉数据库的这三个表即可,切记需要root权限。
(1)adb root
adb root 是为了保证设备是可以获取root的,因为后面需要删除data/data/com.android.providers.settings目录下面的数据库中的三张代理设置表的数据
(2)adb shell
adb shell后进入root命令模式
(3)sqlite3 /data/data/com.android.providers.settings/databases/settings.db
输入sqlite3命令,打开settings 应用的数据库
(4)sqlite> select * from global;
查询所有的数据表,
看到最后这三个就是我们需要删除的设置代理的数据表
(5)sql删除三张数据表
sqlite> delete from global where name="global_http_proxy_host";
sqlite> delete from global where name="global_http_proxy_port";
sqlite> delete from global where name="http_proxy";
整体的截图:
(6)重启设备即可生效。这时我们再在设备上打开浏览器,输入 http://charlesproxy.com/getssl 就会弹出重新设置的弹窗了。
方案三:最简单有效的方式,(1)设置代理为:adb shell settings put global http_proxy 127.0.0.1:8888,
(2)打开浏览器输入 http://charlesproxy.com/getssl,此时网页出错,因为没有网络
(3)再重新设置自己的电脑代理,例如我的:adb shell settings put global http_proxy 10.1.97.44:8888 ,刷新下网页即可
总结:方案一目前试了试无效,方案二需要root还要敲一堆代码比较麻烦,方案三怀疑是不是触发了代理重置,因此简单有效。
还有一些需要注意的点: