Mac升级到10.13.2后,从非AppStore渠道下载的软件,打开时提示:已损坏,打不开. 您应该将它移到废纸篓

2018/7/25 posted in  macOS

macOS 下 Charles 设置移动端代理遇到的坑 - shadowsocks

Charles 设置移动端抓包没有那么困难, 大部分的问题基本都搜得到, 不过最近遇到了一个比较奇怪的问题, 对于手机常开 shadowsocks 之类科学上网 App 的小伙伴可以注意一下, 因为被这个坑了1个多小时, 所以在这里记一下备忘.

按正常的情况: 如果手机配置正确, 在配置好代理的时候, Charles 是会弹窗提示 "有新设备连接, 是否允许" 的.

Charles 所有的配置都是之前已经配好而且一直在用的所以电脑端配置有问题的可能性极小, 但这次在自己手机端配置好代理之后, Charles 却一直没有任何新设备连接提示. 是的, 没有任何提示... 于是就踏上了没有任何调试信息调试工具辅助的 debug 之路

大概的 debug 过程: 同事的手机连接他自己的 Charles 没问题, 同事的这部手机连接我的 Charles 也没问题, 我的手机连接同事的 Charles 依然有问题, 所以基本可以确定是我自己手机的问题了. 因为我的手机(MIUI)之前 Root 并装了 Google 框架, 所以刚开始以为是 Google 框架的问题, 但是当我把 Google 所有服务全部卸载重启之后发现依然连不上的时候, 我发现问题并没有那么简单...

总结出来就是一句话:

使用 Charles 设置移动端抓包的时候, 手机记得一定要关闭 shadowsocks 之类的代理 App, 就算是规则代理也不行.

之前一直以为 shadowsocks 的规则代理只会对规则内列表起作用, 所以这次设置 Charles 就没有考虑到这方面...

所以基于这样的实际情况, 推测 ss 开启的情况下, 就算是开启基于规则的代理策略, 也会默认监听匹配所有 socket 请求, 如果匹配上就会转到代理服务器, 如果匹配不上则会以自己的身份直接转发给对应的地址(从Android系统设置里的耗电和网络流量排行中也可以看得出来), 估计就是因为 shadowsocks 对所有请求的代理导致 Charles 无法识别移动端的吧

2017/6/22 posted in  macOS

Mac下终端常用命令

  • 在 Finder 窗口顶部显示当前完整路径
    终端输入:defaults write com.apple.finder _FXShowPosixPathInTitle -bool YES

  • Mac App Store 下载失败
    终端输入:defaults write com.apple.appstore ShowDebugMenu -bool true

  • 显示和隐藏文件
    显示:defaults write com.apple.finder AppleShowAllFiles -bool true
    隐藏:defaults write com.apple.finder AppleShowAllFiles -bool false
    重新启动Finder

  • 路由表的输出信息
    终端输入:netstat -nr

  • 配置环境变量
    Mac 环境变量有两种,一种是全局的,公用的,针对系统所有用户;另一种是用户级的,只对当前用户有效。

    /etc/profile 全局配置文件,所有用户登录时读取此文件,一般不修改。
    使用时需使用 sudo 以Root权限运行(慎用)

    /etc/bashrc 全局配置文件,运行bash shell时读取此文件,一般在这里修改系统级环境变量。

    ~/.bash_profile 用户级配置文件,用户登录时,该文件仅执行一次。一般在这里修改用户级环境变量。
    可使用 vi 命令进行编辑。

    • 进入输入模式的方法如下: 增加(append) 按 “a” 键 从光标所在位置后面新增内容。 按 “A” 键 从光标所在行最后面新增内容。 插入(insert) 按 “i” 键 在光标所在位置前面插入内容,光标后面内容随之后退。 按 “I” 键 在光标所在行第一个非空白字符前插入内容。 开始(open) 按 “o” 键 在光标所在行下面新建一行 按 “O” 键 在光标所在行上面新建一行
    • 退出vi编辑器(冒号在前) :x 退出并保存。 :wq 退出并保存。 :w 仅保存。 :w filename 保存为指定的文件,可用于另存为。 :q 仅退出,有修改内容时会提示要保存。 :q! 强制不保存退出。
  • 网络设置

    1. 列出网卡
      终端输入:networksetup -listallnetworkservices

    2. 关闭 ipv6
      终端输入:networksetup -setv6off "网卡名称"
      比如关闭以太网的IPV6: networksetup -setv6off Ethernet
      关闭 Thunder Bolt 以太网的 IPV6: networksetup -setv6on "Thunderbolt Ethernet"

    3. 设置IP地址
      终端输入:networksetup -setmanual "网卡名称" 192.168.31.2 255.255.255.0 192.168.1.1

  • 设置Dock仅显示当前打开的应用图标
    终端输入:defaults write com.apple.dock static-only -boolean true; killall Dock
    恢复:defaults delete com.apple.dock static-only; killall Dock

  • 清除 dns 缓存
    终端中刷新DNS的discovoryutil命令在macOS 10.10.4中被移除,在macOS 10.12之后刷新DNS缓存的命令为:

    sudo dscacheutil -flushcache;sudo killall -HUP mDNSResponder;say flushed

2017/6/5 posted in  macOS

Mac 关闭 IPV6

公司的内网调试, 需要设置一个固定的 IPV4 地址, 设置完保存的时候, 提示: "无效的服务器地址BasicIPv6ValidationError", 这边稍微搜了下, 没有什么太直接的解决方法, 所以在这里记录一下备忘.

先关闭IPv6,然后设置IPv4,再重新开启IPv6

networksetup -setv6off "Ethernet"

这里的 Ethernet 是你要关闭 IPV6 的网卡服务名称, 也就是你在 Mac 设置 -> 网络面板左侧的连接方式名称. 在命令行中输入时一定要使用英文的形式, 比如 "Thunderbolt 以太网" 在命令行中就需要输入

networksetup -setv6off "Thunderbolt Ethernet"

执行成功之后再次查看就会发现 IPV6 已经自动关闭了.

2017/6/5 posted in  macOS