Skip to content →

月份:2015年12月

自动获取国内代理IP

自动获取国内代理IP

前面写了一个用代理翻回国内的指南,需要从proxy-list.org这里找免费代理IP。

这里拿到的IP不稳定,所以总要去重新查询,回来更新pac文件。于是写了个脚本:

  1. 查询免费IP
  2.  ping测速
  3.  找出来最快的更新pac文件

然后在服务器跑了个定时任务,每小时更新一次。

#!/bin/sh
date
echo -n > ip.txt
echo -n > ip_sort.txt
for i in $(seq 1 3)
do
    echo "reading page "$i"..."
    url='http://proxy-list.org/english/search.php?search=CN&country=CN&p='$i
    for ip64 in $(curl --silent $url | grep -P "Proxy\('.*'\)" | cut -d"'" -f2)
    do
        ip_port=$(echo $ip64|base64 -d )
        ip=$(echo $ip_port|cut -d":" -f1)
        time=$(ping -c1 $ip|grep from|cut -d" " -f7|cut -d"=" -f2)
        echo $ip_port":"$time >> ip.txt
    done
done
echo "sorting..."
cat ip.txt|sort -t: -k3 -nu|grep -v -P :$ > ip_sort.txt
ip=$(head -n1 ip_sort.txt|cut -d":" -f1,2)
sed -i-e 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}:[0-9]\{1,\}/'$ip'/g' SwitchyPac.pac
echo "========"

===============
更新了一版,时隔半年,修正了那个错误的测速……看这里

2 Comments

海外用户的国内在线音乐服务使用指南

Outlier

  • 背景
  • 获得免费代理地址
  • 在网易云音乐PC客户端中使用代理
  • 在chrome中使用代理
  • 在OSX中使用系统全局代理

背景

这篇指南其实说白了就是一个翻墙教程。众所周知,由于版权所限,海外用户是无法自由使用国内大部分的在线流媒体服务的,包括网易云音乐,QQ音乐,豆瓣FM,以及包括优酷土豆,B站,搜狐视频等一些涉及到正版视频的在线服务。这篇指南的起因是因为这篇blog。博主给了一些方法,主要是基于JS脚本,但是适用范围有限,而且评论里面也出现各种人反馈问题,我才发现原来对很多人来说这是个问题。不过,

如果你只是想使用网易云音乐的话,强烈建议购买会员包。每月8元,真的不贵。而且更加安全,省事,且道德正确。

如果你不在意话费时间和精力,或者确实有其他需求,请继续阅读。

在线服务对海外用户的判断基本上都是基于IP,所以只要代理一下就没问题了。不过使用免费代理有很严重的安全隐患,请在知晓其安全威胁的前提下使用。

获得免费代理地址

这里推荐使用prox-list.org

proxy-list.org

通过搜索可以找到很多国内的代理服务器,也可以看到各服务器的速度,使用的协议等。这里推荐使用端口为80的http服务,适用性比较广。但是再次强调:你的请求信息明文可能会被代理服务器获得,所以一定谨慎使用。

好我们拿到了一组(IP地址:端口)。下面我们看怎么使用。

在网易云音乐PC客户端中使用代理

最简单的是在网易云音乐客户端中使用了。之前Mac平台的客户端也可以直接使用,但最新版本中此功能消失,所以目前只限于PC平台。

  1. 点击客户端界面右上角齿轮进入设置界面
  2. 找到“工具”->“代理设置”。
  3. 选择“自定义代理”
  4. 服务器和端口填入刚找到的IP和端口(port)
  5. 由于我们使用的是免费代理,所以没有用户名密码。如果你通过其他途径拿到了自建代理服务器,根据使用的代理协议不同,也许会需要用户名密码。这里我们略过留空。
  6. 测试一下。如果提示代理可用,点击“确定”,重启客户端生效。

这里的测试比较有用,可以快速得知自己选中的代理是否可用。

在chrome中使用代理

推荐使用SwitchySharp插件。SwitchySharp的作者最近开发了一个新的代理控制插件,作者认为新作品更优秀,更可控,但是我个人认为SwitchySharp更简单易懂。

在插件的选项界面新建一个情景模式。这里我的模式叫“in”

情景模式

可以看到这里有两个“手动”和“自动”配置方法。手动配置的意思是,你要自己设置代理地址,并且自己设置代理规则,哪些请求使用代理,哪些不使用代理。自动配置则是读取一个配置文件,不同的请求自动使用不同的代理。

手动配置

  1. 和网易云音乐的使用方法一样,我们这里填入刚才找到的IP和端口。并且选中“对所有协议均使用相同的代理服务器”。
  2. 保存
  3. 在“切换规则”中配置相关规则。以虾米为例
模式名称 URL模式 匹配模式 情景模式
随便 *://*.xiami.com/* 通配符 in

这里比较重要的是URL模式,你需要了解基本的通配符,以及要使用代理的URL写法。比较容易有问题的是网易云音乐的URL模式。虽然网易云音乐的 主页是music.163.com,但是对数据的请求都是xxx.126.net而不是xxx.163.com。所以正确的写法应该\*://\*.126.net/\*

  1. 保存
  2. 单击SwitchySharp插件图标,选择“自动切换模式”。

这里如果你选择“in”,那么所以的请求都会使用代理,因此你就无法使用油管了。使用“自动切换模式”会根据你的切换规则决定是否使用代理,以及使用什么情景模式。

自动模式

这里我直接贴一下我写好的代理配置文件。

function regExpMatch(url, pattern) {    try { return new RegExp(pattern).test(url); } catch(ex) { return false; }    }
    function FindProxyForURL(url, host) {
    if (shExpMatch(url, "*://*.xiami.com/*") || shExpMatch(url, "*://xiami.com/*")) return 'PROXY 27.46.22.113:8888';
    if (shExpMatch(url, "*://*.163.com/*") || shExpMatch(url, "*://163.com/*")) return 'PROXY 27.46.22.113:8888';
    if (shExpMatch(url, "*://*.youku.com/*") || shExpMatch(url, "*://youku.com/*")) return 'PROXY 27.46.22.113:8888';
    if (shExpMatch(url, "*://*.tudou.com/*") || shExpMatch(url, "*://tudou.com/*")) return 'PROXY 27.46.22.113:8888';
    if (shExpMatch(url, "*://*.bilibili.com/*") || shExpMatch(url, "*://bilibili.com/*")) return 'PROXY 27.46.22.113:8888';
    if (shExpMatch(url, "*://*.126.net/*") || shExpMatch(url, "*://126.net/*")) return 'PROXY 27.46.22.113:8888';
    return 'DIRECT';
}

 

这里面包括了对虾米音乐,网易云音乐,优酷土豆,和bilibili的代理配置。你也可以通过SwitchySharp插件的“导入/导出”功能,根据你的“切换规则”配置导出PAC文件。

  1. 复制这段代码,把里面的IP和地址替换为你自己的代理服务器,然后保存为proxy.pac。
  2. 在“情景模式”中选择“自动配置”
  3. “导入PAC文件”,导入proxy.pac

如果你有自己的服务器,或者自己电脑搭建了本地web服务器,也可以吧PAC文件上传到服务器上,这里直接填入pac文件的访问地址即可。这里不赘述了。

  1. 单击插件图标,选择“in”。
    如之前所说,这里选择了“in”,是说所有的请求都会使用“in”的代理配置,也就是会使用PAC文件的配置。

注意:如果你使用了自动代理,就不要使用“自动切换模式”

如此这般,你就可以使用chrome使用这些在线流媒体服务了。

在OSX中使用系统全局代理

这里我们需要使用到刚才的PAC文件。

  1. 打开网络偏好设置
  2. 高级
  3. 代理
  4. 这里选中自动代理配置,填入pac文件的访问地址。

这里需要说明的是,如果你要使用类似chrome的自动代理配置,你需要一个pac文件的访问地址。可以开启Mac的apache迅速搭建本地 web服务来做到,但是不在本文的说明范围,请自行谷歌。如果你没有开启,则跳过此步骤,但这意味着你所有的请求,包括任意联网的客户端的网络请求,都会 经过代理。

这会有严重的安全隐患,所以十分不建议如此使用。
5. 选中web代理(http)和安全web代理(https),并在中都填入刚才的代理服务器地址和端口。

这里比较令我费解的是,虽然我们使用了pac配置文件,但是系统似乎并不会使用其中的代理地址,必须在下面http和https中再配置一遍好服务器地址才能正常使用。也许是我的个例。

这样一来,Mac平台的虾米和网易云音乐客户端也可以正常使用了。

最后再啰嗦几句。

  • 请一定在知晓免费代理的安全隐患的前提下使用次方案。
  • 免费代理的地址会经常抽风/失效,如果发现代理不通畅,比如通过PC端的网易云客户端测试代理地址不再可用,可以去proxy-list找找别的地址。
  • SwitchyPac的使用方法如果不太清楚,去Google,网上大把大把的中文教程。

以上。

========更新======

写了个自动获取IP更新PAC文件的脚本

2 Comments