An Advanced Solution to Copyright Applications for Oversea Users
Attenzione
This passage provides for sure a solution to copyright issues due to certain applications being used overseas. However, the following means is not limited to such usage but also suitable for, literally speaking, general network manipulation like how VPN works — actually much better, safer, smarter, and more stable and flexible. Let's now begin to dive deep into this overwhelming mechanism supporting almost all kinds of main-stream platforms as Windows, macOS, Linux, iOS and Android.
Preface
As copyright issues become more and more irretating these years especially for oversea users when encountering online audio and video applications. Non-paid users may get copyright warnings like the following if, for example, using a music application called Netease Music
originated from China. Indeed, nowadays even paid users can also be interestingly infected in some certain region.
Solutions can be found on the internet like switching the whole computer DNS to a specified one, while complaints on unstability can also be.
To eliminate such annoying problems, here we introduce Shadowsocks
, an powerful free open-source "tunnel proxy that helps you bypass firewalls", as stated on its official Github project website, together with another outstanding network tool — Proxifier
, allowing "network applications that do not support working through proxy servers to operate through a SOCKS or HTTPS proxy and chains." However, ironically, one may need to break through the GFW to visit the latter official website.
Key Words
Shadowsocks
, Proxifier
, Proxy
, Server
, Copyright
, Network
, GFW
General Idea
- First of all, we need a remote cloud server pre-configured with this proxy service as a Shadowsocks server.
- Then we run
Shadowsocks
application on our local computer. Establish connection with that remote server and see if it's working properly. - Configure
Proxifier
to specify a wanted program i.e. NeteaseMusic, data of which will go through proxy tunnel. - Fault detection & optimization.
Preliminaries
- Server
Here server means a virtual machine in the cloud with various choices of pre-installed operating systems. In most cases, we just communiate with a remote server by a client such as PuTTY
via SSH
protocol — a commandline-like shell without graphic interface.
- Location of the server
In this case, we are dealing with copyright issues outside mainland of China, therefore here we need a cloud server located in mainland of China as if we really are.
While on the contrary, when dealing with GFW issues inside mainland of China, we need one outside then.
- Shadowsocks
- Manual Mode
- Global Mode
- Auto Mode
Shadowsocks is let's say, a VPN-like tunnel proxy tool which sets itself as a kind of stand-by system service in the background and no more attention is needed once set up. The native protocol is based on socket 5
while http
protocol can also be internally translated and supported. Moreover, you can also allow it to automatically start every time your computer boots up. It occupies a port of your internet and only those applications who are manually specified to listen to this port will go through the proxy without interfering with other unnecessary innocent applications — you don't want, for example, your downloaders be also proxied — thus a tunnel-based tool like Shadowsocks is preferred than ordinary globally-aimed VPN.
Listen, or not,
do exist there the port,
neither will it soar,
nor will it sink.你监听,或者不监听,
端口就在那里,
不增不减。—— Benny
Nevertheless, besides Shadowsocks offers the "Manual Mode" acts as above, another two modes - Global and Auto are also available.
When operating in Manual Mode, Shadowsocks only occupies a port as a service. No program will be affected if none is manually specified to listen to this port, just as if no one knows there exist such a port.
When operating in Global Mode, Shadowsocks not only occupies a port as a service, but also broadcast it to built-in syttem native browsers, i.e.,
Internet Explorer, Microsift Edge for Windows and Safari for macOS, by setting the system proxy
to its socket 5
or http
protocol with also the corresponding port. In this manner, any program whose proxy policy is set to "use system proxy" will also be affected. But still, your downloader will not go through the proxy if its proxy policy is set as "without any proxy". In one word, this "global" doesn't mean real global. So in real practical cases, we never use this.
Auto Mode stands for "Proxy Auto Configure Mode", to some certain extent, this mode is usable in GFW cases — link of GFW rules maintained by some certain orginazions can be found online and will further continuously be updated automatically. Such rules determine whether or not proxy will be adopted to open a link in the browser. Yet, personally speaking, still not suggested.
- Proxifier
As we can see, for Shadowsocks, Manual Mode is always preferred, but problems take place that certain program as Mac version of Netease Music doesn't support in-app proxy option, therefore the Manual Mode couldn't come into effect.
We here turn to Proxifier
for help, a software makes possible the capability of certain program not equipped with native in-app proxy.
- SSH connection
- Download
PuTTY
- Connect a remote server
Screen display is not our purpose, what a server need to do are just commands given by us, including but not limited to — download, extract, copy, R/W privilidge, modify and save a file. These commands can all be done by typing into a shell-like window remotely. Here we give an intuitive illustration on how PuTTY
is used to remotely configure a server. (GFW breaking is also required due to the block of its official website in mainland of China.)
![PuTTY](/content/images/2017/04/PuTTY.png)
PuTTY provided by above link is a achieve pack of a set of tools, including what we mainly need — PUTTY.EXE
Run PUTTY.EXE
on your PC and set as follows.
Getting Started
- Grab a server
- Plan A - Ask Benny for a Chinese server directly.
- Plan B - Buy one for yourself. Detailed procedures are as follows.
You can either
or ...
Public IP:
120.**.**.** (ask Benny)
Location:Shenzhen, Guangdong, CN
CPU:1 core
RAM:1 GB
Bandwidth:100 Mbps (max @ 12.5 MB/s)
Data:Priced on actual usage
Let's take Aliyun
as an example. Aliyun gives special offers to students with verified identities. Price of ECS (Elastic Cloud Server) is as low as ¥9.9/month with adjustable bandwidth up to 100Mbps.
I believe the bandwidth is quite sufficient even for video streaming, though I doubt who'd turn to a Chinese server for Chinese video browsing? Maybe iQIYI
?
A snap of purchase is listed below as an example.
![Aliyun Student Server](/content/images/2017/04/Aliyun_Studnet_Server.png)
- Connect and configure your server
Thanks Teddy
, almost-one-click configuration manual
can be found online which performs an automatic initialization to get your server ready for Shadowsocks service. However, maybe such method was intended for GFW usages, meaning that the server to be configured is outside the mainland of China, therefore download links in the script are blocked by the GFW, making the mission impossible.
However, I can manually download and upload the required file, then modify the script by removing those lines, problems are solved.
download_files(){
cd ${cur_dir}
if ! wget --no-check-certificate -O ${shadowsocks_libev_ver}.tar.gz ${download_link}; then
echo "Failed to download ${shadowsocks_libev_ver}.tar.gz"
exit 1
fi
...
}
With the help of FileZilla
, after some manual fatigue, I finally succedded in installing Shadowsocks service on a Chinese server.
- Test your server
- Configure your client
- Turn it on.
- Add your server.
- Type in your parameters.
- Set it to "Global Mode" temporarily for test.
- Try your browsers
- Open your system built-in browsers like Safari or Internet Explorer or Edge.
- Check if you can open
baidu
, if yes, then type inIP
and hit search. Hope you can get the following result.
Once you've finished setting the server, we can test our server by a Shadowsocks client, actually there are many written in different computer languages. Here I prefer Shadowsocks-Windows
on PC and ShadowsocksX-NG
on Mac. Other versions can be found either on shadowsocks.org
or of more varieties, on Github Project
.
Set up your client as following.
- Specify wanted program
- Download
Proxifier
suitable for your platform, then run it. - Set Proxifier as follows.
- Find and check your local port of Shadowsocks to be listend. The default port is 1086 and 1080 for Mac and Windows, respectively.
- Open Proxifier, find
Proxies
->Add...
as following. - Select the program
- In Profixier, find
rules
->Add...
, after typing a fancy name for Netease Music program in theName
column, hit+
and find your program like this. - Then, down in
Action
section, chooseProxy SOCKS5 127.0.0.1:1086
like this. - After that, perform a quick check like the following, make sure
Netease Music
is going throughProxy
. - Finally, switch Shadowsocks to
Manual Mode
.
When asked Do you want Proxifier to use this proxy by default?
, press No
.
- Test your program
- Finally, switch Shadowsocks to
Manual Mode
.
Launch Netease Music
, if you've been already running it, please shut it down and re-launch it.
Have a try on the play of a list, and keep an eye on how Proxifier
responds.
Fault Detection & Optimization
- Fault detection
On the second day right after I set up the server, the Shadowsocks service is not available. My first reaction was to connect the server and perform a reboot since the service has been added to the boot list after its first installation and I believe something may be wrong with the server. However, it still didn't work. I find nothing wrong with the serivce, and also the status
is fine.
I find through mobile celluar data, I can have access to the proxy service, while I just can't once switching back to Wi-Fi or Lan on computer, making the phenomenon even more weird. I started to blaming the ISP (Internet Service Provider) for their blocking my server's IP.
![Public and Private IP](/content/images/2017/04/Aliyun_Server_IP.png)
After several minutes' calm deduction, I checked the configuration script of Shadowsocks service in the server, finding that the server
section writes "0.0.0.0"
. I know this is not correct, I manually change it to the server's IP, 120.**.**.**
, it still didn't work. And finally I find servers provided by Aliyun, just like ones by Amazon Cloud, are equipped with a private local IP, which is 172.**.**.**
, reminding me the same situation I've encountered several years ago dealing with Amazon EC2 VPS. I changed again the server
to this local private IP, resulting in a sucess eventually.
- Optimization (Stay Tuned)
One promising speed up method I've been using on GFW scenarios is to adopt Kcptun, official Github Project can be found here
. And tutorials
can also be found online. This mechenism consumes, as stated, about 20%~30% more data transfer in order to attain a higher speed and less latency, which remains a task to put into action. But so far since the bandwidth of the server is up to 100Mbps
, quite adequate for online browsing and even downloading.
Lastly
Wish you like it. And don't forget to leave a comment below.