最近 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 巧(科)妙(学)上网,你懂的,不多解释的更多相关文章

  1. 【跟我一起学Python吧】Python解释执行原理

    这里的解释执行是相对于编译执行而言的.我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件.运行该程序的时候,就可 ...

  2. 【和我一起学python吧】Python解释执行原理

    这里的解释执行是相对于编译执行而言的.我们都知道,使用C/C++之类的编译性语言编写的程序,是需要从源文件转换成计算机使用的机器语言,经过链接器链接之后形成了二进制的可执行文件.运行该程序的时候,就可 ...

  3. 从零開始学Java之线程具体解释(1):原理、创建

    Java线程:概念与原理 一.操作系统中线程和进程的概念 如今的操作系统是多任务操作系统.多线程是实现多任务的一种方式. 进程是指一个内存中执行的应用程序.每一个进程都有自己独立的一块内存空间.一个进 ...

  4. [转]回答--python django学的很迷茫怎么办?

    作者:王一链接:http://www.zhihu.com/question/26235428/answer/36568428来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处 ...

  5. iOS工作小技巧及填坑记录

    以下是本人在iOS开发工作中使用的一些小技巧,记录一下. 1.使用XXX.pch文件便捷开发+加速Build 在IOS开发的项目中有一个XX_Prefix.pch XX_Prefix.pch:扩展名. ...

  6. 被校园网限速限流的日子 | 路由代理ipv6访问的操作手册

    一 前 言 你是否还在为校园网的收费而小心翼翼?你是否还在为网速不够快而影响科研进程? 你是否还在为处理舍友关系而费经心思? 你是否还在为不能给舍友提供价值而苦恼? 那么,叶子团队或许能够帮助到你解决 ...

  7. 【repost】如何学好编程 (精挑细选编程教程,帮助现在在校学生学好编程,让你门找到编程的方向)四个方法总有一个学好编程的方法适合你

    方法(一)编了这么久的程序,一直想找机会总结下其中的心得和方法,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的!当我看完了云风的<游戏之旅--编程感悟>和梁 ...

  8. yanxin8文章归档

    文章归档 - 2015年四月 (共21篇文章) 26日: 14443协议的CRC_A和CRC_B (0条评论) 25日: 百度钱包-1分钱5元话费 (0条评论) 22日: 驾照考试总结 (0条评论) ...

  9. Win实用好用软件清单推荐

    1. 我的Win实用软件清单 排名不分先后且长期更新 有更好用的或者需要帮助的可以留言----最后一次更新于 2019.06.25 1. Dism++ 1.1. 功能: ​ 系统精简.垃圾清理.系统升 ...

随机推荐

  1. 前后端数据交互利器--Protobuf

    Protobuf 介绍 Protocol Buffers(又名 protobuf)是 Google 的语言中立.平台中立.可扩展的结构化数据序列化机制. https://github.com/prot ...

  2. 在 CentOS 7.5 64位上使用 yum 安装 MySQL 8.0

    前段时间在 CentOS 7.5 64位上安装 MySQL 8.0.查了些资料,在这里记录一下详细的安装和设置步骤. 一.安装 使用yum安装MySQL之前需要先下载对应的.rpm文件,下载方法: 去 ...

  3. 文件上传靶机DVWA和upload-labs

    DVWA靶机 LOW <?php phpinfo() ?> 上传文件 Medium级别 修改Content-Type: application/octet-stream的值为jpg的格式为 ...

  4. Fast Run:提高 MegEngine 模型推理性能的神奇功能

    作者:王博文 | 旷视 MegEngine 架构师 一.背景 对于深度学习框架来说,网络的训练/推理时间是用户非常看中的.在实际生产条件下,用户设计的 NN 网络是千差万别,即使是同一类数学计算,参数 ...

  5. Docker与k8s的恩怨情仇(七)—— “服务发现”大法让你的内外交互原地起飞

    转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 第一章:Docker与k8s的恩怨情仇(一)-成为PaaS前浪的Cloud Foundry 第二章:Dock ...

  6. 为MySQL的source命令导入SQL文件配置参数

    为MySQL的source命令导入SQL文件配置参数 执行 mysql -uroot -p 输入密码后进入 MySQL 命令提示符 set charset utf8; source /root/xxx ...

  7. 15 道超经典大厂 Java 面试题!重中之重

    从超高频的后端面试题出发,指明学习方向 大家好,我是鱼皮. 还记得我的老弟小阿巴么?他目前正值大一暑假,在家自学编程(刷短视频)中. 他整个大一期间基本都在学习前端.后来,我带他写了一次后端,结果就崩 ...

  8. Jenkins自动化部署最完整教程

    1.概述 Jenkins 是一个可扩展的持续集成引擎.主要用于持续.自动地构建/测试软件项目.监控一些定时执行的任务.Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行 ...

  9. HCIA-物理层

    OSI七层模型 应-->表-->会-->传-->网-->数-->物理层 TCP/IP四层模型 两个主导协议 -->工业标准 应-->传-->网-- ...

  10. vue3.0安装

    一 .vue3.0安装 vue3.0安装 个人推荐以下2种 (1). 开发工具的对应代码中 插入CDN <script src="https://unpkg.com/vue@next& ...