Privoxy+SS在Linux上面实现科学上网
Privoxy+SS在Linux上面实现科学上网
type
status
date
slug
summary
tags
category
icon
password
前言:
在天朝做开发者真的不容易,每天都要忍受漫长的等待时间,特别是git clone的时候,不忍直视10几kb的龟速,因此,下面给大家分享一个Linux翻墙的方法(转发请注明来源)
原料:shadowsocks,privoxy,gfwlist2privoxy,genpac
- 安装privoxy协议转换器
- 安装shadowsocks客户端(此处安装的是命令行版本的ss,如需QT GUI版本的,请先添加apt镜像源后执行sudo apt install shadowsocks-qt5)
- 编辑配置文件
- 添加如下字符
- 编辑privoxy配置文件使其能监听shadowsocks本地1080端口并转发到1081端口上,1081端口由系统网络代理应用来监听
更改如下两行
- 保存后使用service privoxy restart重启服务
- 打开网络代理软件,使用手动模式
HTTP代理 127.0.0.1 1081
HTTPS代理 127.0.0.1 1081
Socks主机 127.0.0.1 1081
shadowsocks启动命令:
- 现在就可以翻墙上网了哈哈哈
注意事项:代理成功后,浏览器能上谷歌,但是终端ping不通,为什么?
Shadowsocks只是一个转发器,把流量转发到代理上(先将socks5转发为浏览器可用的HTTP(S)),而ping不走这个协议,所以无法ping通
Privoxy设置GFW自动代理
此处设置可使privoxy自动代理GFWList下的网络地址
官方的GFWList是众人们总结出来的成果并经常更新,Github上就存在这么一个项目。这里的gfwlist可以说是权威的结果,但是光有这个List还是不能解决问题,因为ShadowSocks需要的是PAC文件,同时GFWList.txt也做了加密处理,光有这个文件也不知道哪些是有用的地址,因此还需要另一个神器:GFW2PAC。
- 安装软件,注意该文件只能使用python2安装,如正在使用python3,请删除/usr/bin/python,后重新执行如下命令:
- 再输入如下命令安装 gfwlist 到 privoxy 协议转换库
- 输入如下命令(注意是一行输入,中间用一个空格分开而不是多行)
输入完该命令,即可看到该文件,位置在/etc/privoxy/gfwlist.action
设置好了以后,我们只需要将生成的PAC文件放入ShadowSocks的根目录就好了!同时,我们也可以随意往里面添加需要翻墙的Host,因为转换成PAC以后,就是可识别的Json数据格式了。
然后,在 config 文件中添加如下一行
保存后退出,输入如下命令重启 privoxy 服务
查看代理是否成功可以使用curl ip.gs命令,若显示的IP和前面shadowsocks配置的IP一样则证明代理成功
Ubuntu系统设置autopac自动代理
需要安装genpac代理规则生成器(这个只是生成.pac规则文件,并不进行代理)
终端输入如下命令(注意是一行输入,中间用一个空格分开而不是多行)
命令执行完毕,即可看到多了一个autoproxy.pac文件,在系统设置->网络代理部分设置为自动模式,导入该pac文件即可实现自动代理
注意:
- 终端翻墙必须输入如下命令(前提是已经使用协议转换器转换成HTTP(S))
- 如果想走HTTP(S)协议的话,必须用协议转换器(如:privoxy),因为shadowsocks默认走socks代理,协议不同无法直接通信!!!
- 协议转换后的端口不准和原socks端口有冲突,否则端口冲突无法使用!!!
- git下载时,要在终端输入如下命令(注意第0条)可在~/.gitconfig文件配置
这里的端口是使用协议转换器转换后的端口,不是原socks5端口!!!
- snap代理
snap会从/etc/environment文件读取一些配置,于是我们编辑它(注意:APT安装软件之前也要读取该文件,因此更改后可能会导致APT访问国内镜像源速度变慢甚至无法访问)。
Socks与HTTP代理的区别
什么是HTTP代理:www对于每一个上网的人都再熟悉不过了,www连接请求就是采用的http协议,所以我们在浏览网页,下载数据(也可采用ftp协议)是就是用http代理。它通常绑定在代理服务器的80、3128、8080等端口上。
什么是socks代理:相应的,采用socks协议的代理服务器就是SOCKS服务器,是一种通用的代理服务器。Socks是个电路级的底层网关,是DavidKoblas在1990年开发的,此后就一直作为Internet RFC标准的开放标准。Socks 不要求应用程序遵循特定的操作系统平台,Socks 代理与应用层代理、 HTTP 层代理不同,Socks 代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求)。所以,Socks代理比其他应用层代理要快得多。它通常绑定在代理服务器的1080端口上。如果您在企业网或校园网上,需要透过防火墙或通过代理服务器访问 Internet就可能需要使用SOCKS。一般情况下,对于拨号上网用户都不需要使用它。注意,浏览网页时常用的代理服务器通常是专门的http代理,它和SOCKS是不同的。因此,您能浏览网页不等于 您一定可以通过SOCKS访问Internet。 常用的防火墙,或代理软件都支持SOCKS,
但需要其管理员打开这一功能。为了使用socks,您需要了解一下内容:
① SOCKS服务器的IP地址
② SOCKS服务所在的端口
③ 这个SOCKS服务是否需要用户认证?如果需要,您要向您的网络管理员申请一个用户和口令
知道了上述信息,您就可以把这些信息填入“网络配置”中,或者在第一次登记时填入,您就可以使用socks代理了。
在实际应用中SOCKS代理可以用作为:电子邮件、新闻组软件、网络传呼ICQ、网络聊天MIRC和使用代理服务器上联众打游戏等等各种游戏应用软件当中。
SOCKS是一组由Internal工程工作小组(IETF)所开发出来的开放软件开放标准,用来处理网络安全的事宜。SOCKS象一堵墙被夹在Internal服务器和客户端之间,对于出入企业网络的资讯提供流量和安全的管理。SOCKS这个名词并不是一组英文字头的缩写,而是一个和TCP/IP的Socket端口有关的安全标准,一般防火墙系统通常是象网关(Gateway)一样是作用在OSI模型的第七层也就是应用层上,对TCP/IP的高级协议,如Telnet、FTP、HTTP和SMTP加以管制,而SOCKS作用在OSI模型的第四层也就是会话层上,象一个代理一样对客户端到服务器端或服务器和服务器之间的数据联系,提供安全上的服务。由于SOCKS作用在会话层上,因此它是一个提供会话层到会话层间安全服务的方案,不受高层应用程序变更的影响。
那SOCKS4和SOCKS5又有什么不同?具体表现在SOCKS4只能代理TCP协议,而SOCKS5什么协议都可以代理,而QQ使用的是UDP协议,所以它不能使用SOCKS4代理,而象国外的ICQ使用比UDP协议安全的TCP协议,所以就可以使用SOCKS4代理。
那SOCKS代理和HTTP代理有什么不同?从上文我们知道SOCKS工作在会话层上,而HTTP工作在应用层上,SOCKS代理只是简单地传递数据包,而不必关心是何种应用协议(比如FTP、HTTP和NNTP请求),所以SOCKS代理服务器比应用层代理服务器要快得多。
常在一些软件的设置中可以看到HTTP代理、SOCKS代理和FTP代理等方面的设置项目。请问,这些代理之间有什么区别?
通常按照不同的用途选择不同的代理:浏览器用HTTP或SOCKS代理、下载软件用HTTP或SOCKS代理、上传软件用FTP或SOCKS代理、其他方面(聊天,MUD游戏等)一般用SOCKS代理。
SOCKS代理使用范围很广,但SOCKS有SOCK4和SOCK5之分。其中SOCK4只支持TCP协议,SOCK5支持TCP和UDP协议,还支持身份验证、服务器端域名解释等。SOCK4能干的SOCK5都可以干,反过来就不行。我们常用的聊天软件(如QQ),起初就一直用的是TCP和UDP协议,所以只能用SOCK5的代理。
简单说:Http代理是用来浏览网页用的,其端口一般是80和8080,不过也有3128等其它端口的;而socks5代理则可以看成是一种全能的代理,不管是telnet、ftp还是irc聊天都可以用它,这类代理的端口通常是1080。
常见问题
- "/lib/x86_64-linux-gnu/libcrypto.so.1.1: undefined symbol: EVP_CIPHER_CTX_cleanup"解决方案
- --------------------------------------
- --------------------------------------
这个问题是由于在openssl1.1.0版本中,废弃了EVP_CIPHER_CTX_cleanup函数
解决办法:
全文搜索cleanup
将所有
EVP_CIPHER_CTX_cleanup
替换成为
EVP_CIPHER_CTX_reset
- 切换到python3版本之后,shadowsocks服务无法启动
由于xxx等原因,shadowsocks项目已经停更,ss不兼容版本大于3.5的python3,如遇这种情况请切换为默认的python2.7版本之后重启shadowsocks服务,之后使用sudo提升权限后执行sslocal启动后台代理服务
Loading...