文章目录

  • 背景
  • 方式一(终端支持socks5DL)
  • 方式二(终端不支持socks5DL)
    • privoxy 安装
    • privoxy 配置
    • 启动 privoxy
    • 使用 privoxy
    • 验证
  • Q&A
  • 参考资料

背景

我们一般使用 SS 做DL,虽然浏览器可以,但是终端不行。
因为在终端下不支持socks5DL,只支持httpDL,wget、curl、git、brew等命令行工具都会变得很慢。

苹果在新系统中加入了SIP安全机制
会阻止第三方程序向系统目录内(/System,/bin,/sbin,/usr(除了/usr/local))进行写操作,sudo也不行。
办法是先把SIP关了,等装好软件配置好后再打开SIP。或者改用其他软件。
因为懒得去把SIP关了开开了关了,找了另外一个软件privoxy。
它刚好就是安装在/usr/local内,不需要关闭SIP也可以正常使用。

方式一(终端支持socks5DL)

export http_proxy="socks5://127.0.0.1:1080"
export https_proxy="socks5://127.0.0.1:1080"
# or
export ALL_PROXY="socks5://127.0.0.1:1080"


这样只是在当前命令行生效,想永久生效将上面的文件写入到 .bashrc或者.zshrc

还可以在 ~/.bash_profile 加入开关函数,使用起来更方便。

function proxy_off(){unset http_proxyunset https_proxyecho -e "已关闭DL"
}function proxy_on() {export no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com"export http_proxy="socks5://127.0.0.1:1086"export https_proxy=$http_proxyecho -e "已开启DL"
}function proxy_status() {echo $https_proxycurl cip.cc
}

方式二(终端不支持socks5DL)

privoxy 安装

brew install privoxy

privoxy 配置

vim /usr/local/etc/privoxy/config

底部加入

listen-address 0.0.0.0:8118
forward-socks5 / localhost:1086 .

第一行设置 privoxy 监听任意IP地址的8118端口。
第二行设置本地socks5DL客户端端口。这里要自己去看看

启动 privoxy

因为没有安装在系统目录内,所以启动时要打全路径。

sudo /usr/local/sbin/privoxy /usr/local/etc/privoxy/config
# 查看是否启动成功
netstat -na | grep 8118

使用 privoxy

export http_proxy='http://localhost:8118'
export https_proxy='http://localhost:8118'

原理是将 socks5 DL转化成 http DL给命令行终端使用。
取消

unset http_proxy
unset https_proxy

验证

curl cip.cc

curl https://www.google.com.hk/

Q&A

1、为什么terminal终端不能使用系统DL(WIFI网络设置中的HTTP,SOCKSDL设置)?
答:Shell 早于 macOS 并且有自己的配置DL规则。Shell 对系统偏好设置中的DL设置一无所知,需要单独配置。

2、为什么设置了http_proxy等环境变量,git, curl等命令行工具可以上网了?
答:git,wget, curl,brew等cli,甚至GCP提供的gcloud sdk内部都会读取http_proxy, https_proxy, all_proxy等系统环境变量:

仅仅是应用程序运行时环境变量,没有魔法。比如Node.js应用程序,可以使用process.env.http_proxy来读取程序运行时环境变量。其他语言比如Go, Java, Python, PHP都有各自的内置标准库API或全局变量(比如Node.js的process)来读取系统环境变量。git, wget, curl, brew, gcloud和我们自己写的应用程序一样,没什么特殊的。

node
Welcome to Node.js v14.16.0.
Type ".help" for more information.
> process.env.http_proxy
'http://127.0.0.1:7890'

参考资料

https://double-c.github.io/2018/10/17/mac-ss-cmd/index.html
https://github.com/mrdulin/blog/issues/18
https://www.0x2beace.com/how-to-make-terminal-commands-go-through-proxy/

mac命令行终端下使用DL相关推荐

  1. mac创建文件服务器,mac命令行终端怎么创建文件 mac命令行终端创建文

    导读: 想要在mac os x系统中创建大容量空白文件其实非常简单.今天脚本之家小编为大家介绍两种创建文件教程,第一种就是使用mac命令行终端创建文件,第二种是使用磁盘工具应用... 想要在mac o ...

  2. mac终端里新建html文件,mac命令行终端怎么创建文件 mac命令行终端创建文件教程...

    mac命令行终端怎么创建文件?想要在mac os x系统中创建大容量空白文件其实非常简单.本文小乐哥为大家介绍两种创建文件教程,第一种就是使用mac命令行终端创建文件,第二种是使用磁盘工具应用. ma ...

  3. 终端 删除php文件内容,Mac_mac命令行终端可以卸载吗?mac命令行终端卸载软件教程,  mac os系统卸载软件方式有 - phpStudy...

    mac命令行终端可以卸载吗?mac命令行终端卸载软件教程 mac os系统卸载软件方式有多种, 卸载工具,程序图标拖拽到垃圾桶皆可,但对顽固残留软件该怎么办呢?今天phpstudy小编就为大家分享ma ...

  4. 如何调节MAC 命令行终端字体大小

    首先打开一个终端,点击左上角终端->偏好设置 选择描述文件->文本->字体更改 调节到合适字体大小

  5. Mac 用命令行终端打开app应用程序

    转自:http://www.33lc.com/article/51388.html 苹果mac os怎么用命令行终端打开app应用程序?有时在mac os平台上配置文件会需要在mac终端打开app应用 ...

  6. linux下运行python_在Linux命令行终端中使用python的简单方法(推荐)

    Linux终端中的操作均是使用命令行来进行的.因此,对于小白来说,熟记几个基本的命令行和使用方法能够较快的在Linux命令行环境中将python用起来. 打开命令行窗口 打开命令行窗口的快捷键如下: ...

  7. VMware下Ubuntu图形界面切换到命令行终端模式

    在虚拟机中安装了ubuntu,很多命令键与VMware的快捷键冲突,好比这个图形界面的切换, 就很让人郁闷,在网上查了图形到命令行终端是Crtl+Alt+F1/F2/F3/F4/F5  竟全不管用了, ...

  8. Mac系统打开命令行终端及查看操作系统版本号的方法

    原文地址为: Mac系统打开命令行终端及查看操作系统版本号的方法 Mac系统打开命令行终端及查看操作系统版本号的方法 Mac系统打开命令行终端的方法: 应用程序 --> 实用工具 --> ...

  9. Kali Linux下命令行终端的中英文切换

    Kali Linux下命令行终端的中英文切换 由于自己想下载个kali linux学习,但是苦于自己设备受限,下载了kali官网的light版本: kali-linux-light-2019.1a-a ...

最新文章

  1. 初看jQuery,比较dojo与jQuery的不同点
  2. 7p后摄像头抖动修复_节气门清洗后怠速还是抖动,到底什么毛病?
  3. openpyxl 绘制饼形图_openpyxl3.0官方文档(13)—— 饼图
  4. Python(51)_从100打印到0
  5. java并发编程(6)--CAS会导致“ABA问题“ 解决方案
  6. Mahout学习笔记-分类算法之Decision Forest
  7. Linux下TCP Socket编程实例
  8. 编写myqq,即时聊天脚本
  9. 微观交通仿真软件分析比较
  10. 去掉Dedecms幻灯片的标题文字和绿色背景
  11. DCMTK之MPPS服务实现
  12. 写作进度周报【人人都是产品经理:9039】
  13. java---File类笔记(简单介绍)
  14. Snipaste截图贴图软件安装包下载免费的超级强大截图软件
  15. 经典游戏----飞机大战
  16. python plot如何保存图片_Matplotlib 保存图片、图画接口和显示中文的使用方法
  17. 如何快速计算汉字笔画数
  18. STM32F030F4P6 HAL库 PPM信号输出 24L01 PPM接收机制作
  19. 如何设计标签系统?如果构建用户画像
  20. .NET Core----Docker The type initializer for ‘Gdip‘ threw an exception异常

热门文章

  1. tkinter库Button组件
  2. #程序员公司用粉红键盘!网友:可爱,说话都带骚气,一定是男孩子
  3. MacOS 开启 2k 屏幕的 HiDPI模式,让中文字体不再模糊
  4. java volatile内存屏障_volatile 和 内存屏障
  5. oracle用plsql trance,Oracle执行计划总结
  6. 计算机中定点数和浮点数表示
  7. Ext文件上传总是返回.do
  8. 实验课程】MindSpore1.0:MobileNetV2网络实现微调(关键词:MobileNetV2、Fine Tune)
  9. 中小学科技创新实验室
  10. android 背诵方歌项目