不改路由表实现智能选择线路,提升访问国内外网站速度

互联网发明以后,我们可以很容易的去访问世界各地的知识资源。但是受限于网络环境的原因,部分资源我们去访问的时候会很慢,或者访问不了,这时候我们可以通过跳板、隧道、虚拟私有网络等形式去进行访问。在使用虚拟私有网络的过程中,大部分软件会通过修改网关地址将所有数据都通过虚拟私有网络进行传递,然而我们很多时候访问某些特定资源,比如本地资源时并不希望数据通过虚拟私有网络,这怎么办呢?

池建强大哥在这篇博文《VPN – 长城内外,惟余莽莽》里提到了用路由表解决这个问题。可是改路由表这么麻烦的事情,想想都觉得不美。

博主之前一直用的是国外VPS+ssh tunnel方式“连接国外主机”,用proxy-switchysharp自动切换出口,非常方便。

现在博主的VPS搬到国内了,功能没有了,买了个虚拟私有网络。为了继续使用proxy-switchysharp,博主用go写了个简单的本地代理服务器,让请求通过指定的IP地址转发出去从而实现跨地区资源访问的目的,而因为虚拟私有网络关闭了“Send all traffic over VPN connection”,国内资源的访问依然快速。

目前项目托管在github,博主水平很差,欢迎各位改进
项目地址:https://github.com/HessianZ/daisy-proxy

可执行文件下载:
DaisyProxy For Mac
DaisyProxy For Windows 64

Read: 2600

This entry was posted in GoMacNetwork and tagged daisy-proxygoproxyvpn下载国内国外FQon 2014/07/15. 2条评论

用goproxy实现基于VPN的本地HTTP代理

我最近用VPN的时候觉得有些地方不太好用,比如说用HTTP代理的时候可以用Chrome的proxy-switchysharp插件做自动切换,这样访问国内资源时和访问国外资源时都很快。因此我用goproxy写了几行代码做了个可以指定本地出口IP的http proxy,连VPN时去掉“Send all traffic over VPN connection“选项,然后用proxy-switchysharp自动切换出口。

不过现在程序还有一些问题,我尝试去访问facebook和twitter都失败了,不知道为什么,同样是https,google和stackoverflow都是正常的,求高手指点。

#########

好了,我知道为什么脸书和推推不能访问了,因为DNS墙了。。。解析出来的地址就不对。

不知道有没有办法在go里面指定ResolveTCPAddr的dns服务器,我现在只能在hosts里面加上正确的IP地址来访问。

#########

代码如下:

package main

import (
    "github.com/elazarl/goproxy"
    "log"
    "net"
    "flag"
    "net/http"
)

var (
    listen = flag.String("listen", "localhost:8080", "listen on address")
    ip = flag.String("ip", "", "listen on address")
    verbose = flag.Bool("verbose", false, "verbose output")
)

func main() {
    flag.Parse()

    if *ip == "" {
        log.Fatal("IP address must be speicified")
    }

    proxy := goproxy.NewProxyHttpServer()
    proxy.Verbose = *verbose
    proxy.Tr.Dial = func (network, addr string) (c net.Conn, err error) {
        if network == "tcp" {
            localAddr, err := net.ResolveTCPAddr(network, *ip + ":0");
            if err != nil {
                return nil, err;
            }
            remoteAddr, err := net.ResolveTCPAddr(network, addr);
            if err != nil {
                return nil, err;
            }
            return net.DialTCP(network, localAddr, remoteAddr);
        }

        return net.Dial(network, addr);
    }
    log.Fatal(http.ListenAndServe(*listen, proxy))
}

使用方法

go run proxy.go -ip VPN虚拟网卡的IP地址

启动代理之后就可以像普通http代理一样在浏览器中使用他咯,非常方便。

另外看到一个也是基于goproxy的项目功能也挺有意思,主要是为开发者解决切换开发、生产环境麻烦的问题。有时间的话想整合一下这些功能,但是好像作者已经不更新了,而且是发布在bitbucket的。。。

http://rongmayisheng.com/post/goproxy-灵活的反向代理和静态资源代理

时间: 2024-10-19 08:23:57

不改路由表实现智能选择线路,提升访问国内外网站速度的相关文章

云时代来临,快速利用CDN服务为海外用户访问国内网站加速

云时代,如何利用CDN服务为海外用户访问国内网站加速 本文Blog地址:http://www.cnblogs.com/taosha/p/6760079.html,您可以自由转载,请保留出处,谢谢配合! 众所周知,海外用户访问国内网站速度都不尽人意,主要原因是地理距离比较远,中国到海外的Internet出口带宽有限且中间还隔着"长城防火墙".那我们有什么办法可以来加速海外用户对国内网站的访问速度么?答案就是CDN服务.本文主要就是介绍CDN服务提高海外客户访问国内网站的加速原理,海外CD

jbpm的智能选择审批人及人工任务分配的实现思路

一.jbpm中审批人的概念 在工作流中每一个人工任务的办理者被称作审批人,在原生的jbpm定义中,我们可以看到assignee和assignmentHandler这两个标签. <task name="review" g="96,16,127,52">       <assignment-handler class="org.jbpm.examples.task.assignmenthandler.AssignTask"> 

解决国外用户访问国内网站慢的问题

现象: 阿里云上有ECS,华东地区的,现在有美国和日本的客户反映访问我们的网站比较慢?部分美国客户上传图片上传不了,不能完成报名的操作测试网速http://www.webkaka.com/ 关于为什么使用CDN加速后,反而效果适得其反,变成了减速度:1.首先理论上CDN的加速效果是毋庸置疑的,科学上这种现象非常规2.假设出现原因也可以理解:以下面例子为例比如,你在香港或者美国使用的VPS,那么在这种情况下你申请一些大厂商提供的CDN加速服务,如果你备案了,那么可以享受国内不同地区的节点提供的服务

设置VPN仅访问部分网站使用(图文)

VPN这种全局性的连接有利有弊,优点是连接上无需其他设置,所有程序都可以使用,简单方便.缺点是连接上所有网络都走VPN,可能会影响其它使用,比如访问国内网站的速度.之前我们介绍了路由表设置海外&国内分流方法,可以解决这个问题. 有些朋友可能觉得这还不算完美,能不能只设置部分网站使用VPN.下面就来介绍一个方法,以Windows 7示例.其它系统也可以参考类似设置,明白其原理就行. 设置VPN访问部分网站使用: 1.设置一个VPN拨号连接,PPTP或L2TP都行,不会设置的可以参考这里的设置教程.

【转】Nginx区分PC或手机访问不同网站

原文链接:http://www.nginx.cn/784.html 近几年来,随着手机和pad的普及,越来越多的用户选择使用移动客户端访问网站,而为了获取更好的用户体验,就需要针对不同的设备显示出最合适的匹配,这样就是近年来流行的“响应式web设计”. 响应式web设计是一种纯前端技术js.css等实现的针对不同设备访问同一网址看到不同的布局,是页面内容更适合当前设备阅读.但这个不是本文的重点,重点还是放在nginx如何实现上来. 本文要讲的的是如何使用nginx区分pc和手机访问不同的网站,是

利用vmware与ccproxy代理服务器实现VPN连接时Chrome访问国内网站不走VPN通道

最近(2014-6-12)国内封谷歌封的厉害,不得已挂VPN来突破封锁,但是连接了VPN后所有的连接全部要经国外VPN中转再传回,这就导致了访问国内网站比如百度,AB站,CB,淘宝等速度不快. 可以通过VMWARE与CCPROXY代理服务器来实现既连接了VPN,又让国内的网站不走VPN,具体实现如下: 1.实体机: 系统:win7 网卡:物理网卡 网路出口:路由器192.168.10.1 本地连接IP:192.168.10.74,255.255.255.0,192.168.10.1 VPN IP

Nginx区分PC或手机访问不同网站

近几年来,随着手机和pad的普及,越来越多的用户选择使用移动客户端访问网站,而为了获取更好的用户体验,就需要针对不同的设备显示出最合适的匹配,这样就是近年来流行的“响应式web设计”. 响应式web设计是一种纯前端技术js.css等实现的针对不同设备访问同一网址看到不同的布局,是页面内容更适合当前设备阅读.但这个不是本文的重点,重点还是放在nginx如何实现上来. 本文要讲的的是如何使用nginx区分pc和手机访问不同的网站,是物理上完全隔离的两套网站(一套移动端.一套pc端),这样带来的好处p

如何通过预加载器提升网页加载速度

预加载器(Pre-loader)可以说是提高浏览器性能最重要的举措.Mozilla 官方发布数据,通过预加载器技术网页的加载性能提升了19%,Chrome测试了 Alexa 排名前2000名网站,性能有20%的提升. 它并不是一门新技术,有人认为只有 Chrome 才具备这个功能.也有人认为它是有史以来提升浏览器性能最有效的方法.如果你第一次接触预加载器,也许心中已经有了无数个问号.什么是预加载器?它是如何提升浏览器性能的? 首先需要了解浏览器是如何加载网页的 一个网页的加载依赖于脚本文件.CS

谷歌浏览器访问网站提示“您要访问的网站包含恶意软件”

今天有蝉知建站系统的客户反映,他的站点在用谷歌浏览器访问时提示"您要访问的网站包含恶意软件",而是用其他的浏览器访问显示正常,红通通的页面并未让用户感到一丝喜庆. 问题原因: 出现这个问题的原因有很多,遇到该提示时,可以考虑以下几个因素: 1.网站本身确实有问题,比如被恶意攻击.挂马,或是间接地引用了恶意网站的内容等. 2.站长在网站内投放的一些代码被谷歌误认为是恶意代码,比如广告联盟等. 3.网站本身没有问题,但被运营商HTTP或DNS劫持,强行投放广告,这是最常见也最恶心的情况.