临时性备用 socks 巧(科)妙(学)上网,你懂的,不多解释
最近 Shadowsock s 不稳定,极大的影响了工作效率。不过 ssh 还能连上自己的机器,所以掏出 ssh -D 满足自己
#!/usr/bin/env bash
disable_proxy()
{
networksetup -setsocksfirewallproxystate Wi-Fi off
networksetup -setsocksfirewallproxystate Ethernet off
echo "SOCKS proxy disabled."
}
trap disable_proxy EXIT # Ctrl+C 的时候执行 disable_proxy
IP=127.0.0.1
PORT=`python -c 'import socket; s=socket.socket(); s.bind(("localhost", 0)); print(s.getsockname()[1]); s.close()'`
networksetup -setsocksfirewallproxy Wi-Fi $IP $PORT
networksetup -setsocksfirewallproxy Ethernet $IP $PORT
networksetup -setsocksfirewallproxystate Wi-Fi on
networksetup -setsocksfirewallproxystate Ethernet on
echo "SOCKS proxy enabled."
echo "Tunneling..."
ssh -ND $PORT root@xxx.xxx.xxx.xxx
2019.11.12 更新:
上面的已经够用了,但是还不够“智能”,所有网页都通过代理来访问, 国内的也网站也要绕一圈,没能根据一个列表来决定哪些网址需要代理,哪些不需要。
要满足这一点,需要 networksetup -setautoproxyurl networkservice url
networksetup -setautoproxyurl networkservice url
Set proxy auto-config to url for and enable it.
首先需要一个 .pac 文件,这个文件怎么搞到呢,可以从网上下载一个, 也可以自己写。其实这个文件主要是一个函数, 类似这样:
function FindProxyForURL(url, host) {
var proxy = "SOCKS5 127.0.0.1:1280; SOCKS 127.0.0.1:1280; DIRECT;"
var direct = 'DIRECT;';
if (defaultMatcher.matchesAny(url, host) instanceof BlockingFilter) {
return proxy;
}
return 'DIRECT;'
}
我们修改后的 shell 脚本文件长这样:
#!/usr/bin/env bash
# https://www.cnblogs.com/hangj/p/11838259.html
IP=localhost
FILE=proxy.pac
# 找到一个可用的 port
SOCKSPORT=`python -c 'import socket; s=socket.socket(); s.bind(("localhost", 0)); print(s.getsockname()[1]); s.close()'`
HTTPPORT=`python -c 'import socket; s=socket.socket(); s.bind(("localhost", 0)); print(s.getsockname()[1]); s.close()'`
URL=http://$IP:$HTTPPORT/$FILE
# 设置配置中的 port
sed "s/var proxy = .*/var proxy = \"SOCKS5 127.0.0.1:$SOCKSPORT; SOCKS 127.0.0.1:$SOCKSPORT; DIRECT;\";/" $FILE.bak > $FILE
python3 -m http.server $HTTPPORT --bind $IP &
echo "http server started."
disable_proxy()
{
ps -ef | grep "-m http.server $HTTPPORT" | grep -v grep | awk '{print $2}' | xargs kill
lsof -nP -i :$HTTPPORT | grep $HTTPPORT | awk '{print $2}' | xargs kill
networksetup -setautoproxyurl Wi-Fi " "
networksetup -setautoproxyurl Ethernet " "
echo "SOCKS proxy disabled."
}
trap disable_proxy EXIT
networksetup -setautoproxyurl Wi-Fi $URL
networksetup -setautoproxyurl Ethernet $URL
echo "SOCKS proxy enabled."
echo "Tunneling..."
ssh -ND $PORT root@xxx.xxx.xxx.xxx
我的配置文件地址:proxy.pac.bak
backup shadowsock.readme(base64)
PT09IHN0YXJ0L3N0b3Agc2hhZG93c29ja3MgJiYgc2hhZG93c29ja3MgY29uZmlnDQoNCiAgIGhvdyB0byBidWlsZCBzczogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vMzAxMzIxNjAyNy80NjllN2I5ODhlZGRlN2U1ZjgwNmY1NWE5OTNiOWVmYQ0KICAgc3RhcnQgc3M6IHNzc2VydmVyIC1jIC9ldGMvc2hhZG93c29ja3MuanNvbiAtZCBzdGFydA0KICAgc3RvcCBzczogc3NzZXJ2ZXIgLWMgL2V0Yy9zaGFkb3dzb2Nrcy5qc29uIC1kIHN0b3ANCiAgIHNzIGNvbmZpZzogL2V0Yy9zaGFkb3dzb2Nrcy5qc29uDQoNCj09PSBhYm91dCBpcHRhYmxzDQogICBpbnN0YWxsIGlwdGFibGVz
临时性备用 socks 巧(科)妙(学)上网,你懂的,不多解释的更多相关文章
- 【跟我一起学Python吧】Python解释执行原理
这里的解释执行是相对于编译执行而言的.我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件.运行该程序的时候,就可 ...
- 【和我一起学python吧】Python解释执行原理
这里的解释执行是相对于编译执行而言的.我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件.运行该程序的时候,就可 ...
- 从零開始学Java之线程具体解释(1):原理、创建
Java线程:概念与原理 一.操作系统中线程和进程的概念 如今的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中执行的应用程序.每一个进程都有自己独立的一块内存空间.一个进 ...
- [转]回答--python django学的很迷茫怎么办?
作者:王一链接:http://www.zhihu.com/question/26235428/answer/36568428来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...
- iOS工作小技巧及填坑记录
以下是本人在iOS开发工作中使用的一些小技巧,记录一下. 1.使用XXX.pch文件便捷开发+加速Build 在IOS开发的项目中有一个XX_Prefix.pch XX_Prefix.pch:扩展名. ...
- 被校园网限速限流的日子 | 路由代理ipv6访问的操作手册
一 前 言 你是否还在为校园网的收费而小心翼翼?你是否还在为网速不够快而影响科研进程? 你是否还在为处理舍友关系而费经心思? 你是否还在为不能给舍友提供价值而苦恼? 那么,叶子团队或许能够帮助到你解决 ...
- 【repost】如何学好编程 (精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你
方法(一)编了这么久的程序,一直想找机会总结下其中的心得和方法,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的!当我看完了云风的<游戏之旅--编程感悟>和梁 ...
- yanxin8文章归档
文章归档 - 2015年四月 (共21篇文章) 26日: 14443协议的CRC_A和CRC_B (0条评论) 25日: 百度钱包-1分钱5元话费 (0条评论) 22日: 驾照考试总结 (0条评论) ...
- Win实用好用软件清单推荐
1. 我的Win实用软件清单 排名不分先后且长期更新 有更好用的或者需要帮助的可以留言----最后一次更新于 2019.06.25 1. Dism++ 1.1. 功能: 系统精简.垃圾清理.系统升 ...
随机推荐
- vue知识点---element el-date-picker 插件默认时间属性default-value怎么赋值?
参考网址: http://www.imooc.com/wenda/detail/509359 默认值,你放到 v-model里面就好. v-model="time" data(){ ...
- Vue--之调试
vue.文件的调试 方法:在chrome浏览器中,F12,在Sources中ctrl+F 查找leftMenu.vue, 打断点,F8完成加载
- 🔥 LeetCode 热题 HOT 100(21-30)
46. 全排列 思路:典型回溯法 class Solution { public List<List<Integer>> permute(int[] nums) { Linke ...
- Jetpack MVVM 实战项目,附带源码+视频,收藏!
从读者的反馈来看,近期大部分安卓开发已跳出舒适圈,开始尝试认识和应用 Jetpack MVVM 到实际的项目开发中. 只可惜,关于 Jetpack MVVM,网上多是 东拼西凑.人云亦云.通篇贴代码 ...
- rancher v1.6.29部署K8s
1. 前提:上一文中,已部署好单节点Rancher v1.6.29 2. 在Rancher中,添加环境模板 修改k8s设置参数 参数修改明细: Private Registry for Add-Ons ...
- [源码解析] 机器学习参数服务器Paracel (3)------数据处理
[源码解析] 机器学习参数服务器Paracel (3)------数据处理 目录 [源码解析] 机器学习参数服务器Paracel (3)------数据处理 0x00 摘要 0x01 切分需要 1.1 ...
- Upfile的几种常见姿势
记录一下文件上传的常见姿势,更全面的可以做upload-labs. 实验环境:win2003 phpstudy 实验平台:upfile 一.准备上传的一句话木马 eval函数将接受的字符串当做代码执行 ...
- NOIP 模拟 $36\; \rm Cicada 拿衣服$
题解 \(by\;zj\varphi\) 发现右端点固定时,左端点的 \(min-max\) 单调递减,且对于 \(or\) 和 \(and\) 相减,最多有 \(\rm2logn\)个不同的值,且相 ...
- luogu P4206 聪聪和可可
聪聪和可可 鸽了两天 \(dijkstra\)预处理出来两点之间的最短路径\(dis\)数组,读题发现,\(cat\)的走位很怪sb斩了,所以我们设一个\(next\)数组,\(next[i][j]\ ...
- maven打包war,导入本地jar包
方法1: 一 . 在项目根目录创建lib文件夹,把jar放入lib文件夹中 二 . 在项目中使用本地jar pom文件配置如下: <properties> <project.buil ...