uku / Unblock-Youku

A Chrome extension helping users access their web services while traveling outside mainland China
https://uku.im
GNU Affero General Public License v3.0
3.18k stars 652 forks source link

在Android中以Privoxy本地代理替代PAC自動代理設定 (Root) #80

Closed karlcheong closed 11 years ago

karlcheong commented 11 years ago

本教學issue已過時,

有使用Android需求的人, 推薦看unblock DNS 服務 #112 或者 drony代理 #259


其實這個不算是插件本身的ISSUE,而是想提供一個android能用的unblock youku代理模式

Unblock Youku 計劃中@zhuzhuor 提供了一個pac自動代理設定, 給chrome以外的browser及ios自動解除限制 然而, android手機平版用戶也很多,但是它一直不支持PAC自動代理設定, 無奈只能全局代理 對於我們這些要翻回國內看影片的人來說, 這點很麻煩。

在https://github.com/zhuzhuor/Unblock-Youku/issues/65#issuecomment-13726349 里我說到有2個android上使用代理的方法,但都不太好使 firefox法只能讓firefox使用pac nodejs伺服器則無法在android運行, 即使在電腦架好伺服器,3G/戶外wifi下使用時看片速度也不理想,受伺服器的上下載速度影響

現在通過privoxy伺服器可以把unblock youku功能更好帶到android上!

功能: 各瀏覽器和影音網站的官方app均可解封,一般不影響系統上其他apps正常使用。 在手機本身運行,實現類pac功能,包括了現有pac里的規則,不影響上下載速度。

要求: 手機已root,對android運行有一定的理解。 如本身連接的網絡需要proxy連接外網則需自行修改privoxy設定

使用方法: 1把opt資料夾放到android的/data里。 規則文件放到 opt/privoxy 里面

2設定好/data/opt所有文件的權限為755

3設定開機自動執行 privoxy

android版本<=2.3 GB的手機 3a安裝autostart.apk/在playstore下載 https://play.google.com/store/apps/details?id=nk.bla.android.autostart

android版本>=3 HC, 4 ICS, 4.X JB的手機 (2.3版本也可以用此法) 3b安裝smanager腳本管理器 https://play.google.com/store/apps/details?id=os.tools.scriptmanager smanager設定/data/opt/autostart.sh為boot, root

4在系統網絡設定中把代理伺服器設為127.0.0.1連接埠8123

5android重新開機後,即可使用。


Privoxy Android軟件包 (opt資料夾) 及規則文件下載

https://github.com/karlcheong/unblock_youku_privoxy_rules (privoxy 3.0.15, IPv6 capable)


如果這里有能人會寫android apps的話,可把所有檔案都封裝成一個apps, 然後就不用那么麻煩去放檔案,也無須再root了。

(在google得知曾經有人將privoxy開發打包成apk,可惜沒有找到apk了)

當然這些規則電腦上也能用,下載電腦版本的privoxy再把規則加入設定里就好了。

這個伺服器源自:@zhuzhuor https://github.com/zhuzhuor/Unblock-Youku/issues/49#issuecomment-11172069 的發言

檔案來源:privoxy android 執行檔來自http://3g.inandroid.cn/bbs/viewthread.php?tid=1116, 其他文件來自privoxy官網

設定參考自以下網頁: http://www.privoxy.org/3.0.15/user-manual/ Privoxy User Manual http://blog.csdn.net/lidawei201/article/details/6906218 privoxy——广告过滤和自动代理切换 http://cckpg.blogspot.com/2011/06/privoxy.html 使用Privoxy实现通用选择性代理功能 http://forum.xda-developers.com/showthread.php?t=1281738 Web Browser With Black Background (Invert Colors / Night Mode) Through Proxy Filter


karlcheong commented 11 years ago

使用中發現搜狐視頻android APPS版沒有遵守系統proxy設定 (samsung 官方ROM android 4.1), 使用了直連驗證IP而不能觀看 所以要用proxydroid 把APPS的流量用IPTABLES強制轉到privoxy代理才能通過IP驗證

有問題的APPS(Ver): 搜狐視頻(3.X~) QQ音樂(3.5.0.23~)

eerenyuan commented 11 years ago

这个东西不好用啊... 一开机机器会黑屏一下,怀疑是autostart出问题。我试图手动用RE浏览器去運行這個腳本,也沒用。目前發現的問題是:這裡的帖子說端口是8123,下載文件的說明文件說是80(從配置文件看,應該8123是對的); autostart.sh裏面這句 > /data/startprivoxy.txt 是要往data目錄下輸出文件嗎?那是否也需要修改data目錄的權限(你說修改所有文件的權限,不太懂是什麽意思,opt下面的所有文件,還是data下面的所有文件?);config文件裡開的端口是0.0.0.0:8123,可以用這樣的ip嗎?不太懂。謝謝

karlcheong commented 11 years ago

@eerenyuan " > /data/startprivoxy.txt" 指輸出privoxy運行結果而已 只是方便自己運行 privoxy 時出問題時看是什么問題而已,沒有也可以

修改所有文件的權限指/data/opt之下文件的權限

連接埠是8123才對.里面的說明是我打錯了,謝謝改正

0.0.0.0:8123指在所有網路介面都監聽8123埠, 意思即是和手機同一WLAN下的電腦和其他終端也可以使用手機上的代理 你在手機上用的時候把代理設置為127.0.0.1連接埠8123 就OK 而想在同一WLAN下的電腦和其他終端使用時就指定代理為手機的IP和連接埠8123

autostart.apk會要求ROOT權限,不給就運行不了腳本 要是手動運行腳本的話請先用su切換到root再運行

eerenyuan commented 11 years ago

我现在把文件输出到privoxy folder下,并且给opt folder下的每个文件都单独设置了755权限。autostart.sh可以手动运行了,并且所有app也可以通过它访问大陆网站。但是autostart(root)本身还是无法使用,我听说这个app第一次重启的时候会提示要求su权限,但是我开机以后只看到屏幕闪一下。你知道有什么可能的原因吗,我使用nexus7,压缩包里的apk和google play的版本都试过,autostart.sh文件权限甚至改成了777。

On Thursday, May 16, 2013, karlcheong wrote:

@eerenyuan https://github.com/eerenyuan

/data/startprivoxy.txt 指輸出運行結果而已 只是方便自己運行 privoxy 時出問題時看是什么問題而已,沒有也可以

修改所有文件的權限指/data/opt之下文件的權限

連接埠是8123才對.里面的說明是我打錯了,己改正

0.0.0.0:8123指在所有網路介面都監聽8123埠, 意思即是和手機同一WLAN下的電腦和其他終端也可以使用手機上的代理 你在手機上用的時候把代理設置為127.0.0.1連接埠8123 就OK

— Reply to this email directly or view it on GitHubhttps://github.com/zhuzhuor/Unblock-Youku/issues/80#issuecomment-17989792 .

karlcheong commented 11 years ago

@eerenyuan 我再試了一台小米1S MIUIV5 4.1的手機不能用autostart.apk 可能是autostart.apk太舊了不能兼容新的系統吧 因為我自己是測過一台SCH-i509 2.3沒問題...

要是不能用autostart.apk就只能找其他開機啟動腳本的方法 比如init.d支持. 我再找找有什么軟件能開機啟動腳本... 先試下smanager吧 https://play.google.com/store/apps/details?id=os.tools.scriptmanager

EDIT: smanager 在我測試的Mi1S 4.1可以開機啟動指定腳本

eerenyuan commented 11 years ago

这个试过了,可以用,把脚本选成boot+su,开机自动后台运行。 谢谢

2013/5/17 karlcheong notifications@github.com

@eerenyuan https://github.com/eerenyuan 我再試了一台小米1S MIUIV5 4.1的手機不能用autostart.apk 可能是autostart.apk太舊了不能兼容新的系統吧 因為我自己是測過一台i509 GB 2.3沒問題...

要是不能用autostart.apk就只能找其他開機啟動腳本的方法 比如init.d支持. 我再找找有什么軟件能開機啟動腳本吧...

— Reply to this email directly or view it on GitHubhttps://github.com/zhuzhuor/Unblock-Youku/issues/80#issuecomment-18051348 .

karlcheong commented 11 years ago

Updated with latest rules and Privoxy 3.0.15 binary found from somewhere on the Internet.

misakiw commented 11 years ago

你好, 那個 privoxy 7z file 下載後不能extract files, 已分別用chrome和firefox下載再用7z解壓(已入password), 但還是顯示file有問題, 可以提供一個新的下載點嗎? 先謝~! 很想在我的android tv box 用上這個來看國內的video~

karlcheong commented 11 years ago

@misakiw 可以用7Z 9.3 alpha or winrar 5 beta

misakiw commented 11 years ago

Thanks @karlcheong!

redline99cs commented 11 years ago

Miui V5

exec sh -c '/storage/sdcard0/Android/data/opt/autostart.sh '
ge/sdcard0/Android/data/opt/autostart.sh '           <
/storage/sdcard0/Android/data/opt/autostart.sh[1]: cd: /data/opt/privoxy: No such file or directory
Unable to chmod /data/opt: No such file or directory
/storage/sdcard0/Android/data/opt/autostart.sh[4]: /data/opt/privoxy/privoxy: not found
karlcheong commented 11 years ago

@redline99cs 請留意下第1步,把opt文件夾放到根目錄下的data 里 (/data) 而不是SD卡下的android/data文件夾 (/storage/sdcard0/Android/data/)

因為sd卡在一般情況下是不能運行程式的, 除非你修改SD卡掛載參數,重新掛載, 再說你也得把sh里的程式路徑一起修改了 所以不建議你把程式放到SD卡里

foryou168 commented 11 years ago

It is WORKING!!! so COOL~~ thanks for your sharing!

but unfortunately sohu app is not working 請問一下你說到搜狐app可用iptables強制轉到privoxy代理 具體是要怎麼用? 我有Proxy droid 然後在market 下了一個老app "Iptables"然後進去只有"install iptables"按下去後沒特別反應然後退出 接下來該怎麼用?

karlcheong commented 11 years ago

@foryou168 open proxydroid enter following setting

host 127.0.0.1 port 8123 proxytype http

individual proxy tick the sohu app

then switch on

foryou168 commented 11 years ago

it's now working on sohu app thaks a lot:)

redline99cs commented 11 years ago

Thanks, which app work too?

App

Youku OK Sohu OK Tencent (v.qq) NOK

karlcheong commented 11 years ago

@redline99cs Tencent video apps fixed

The supported apps & websites list should equal to the pac file provided in https://github.com/zhuzhuor/Unblock-Youku/wiki/%E4%BB%A3%E7%90%86%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%AE%BE%E7%BD%AE%E7%A4%BA%E4%BE%8B

As 08/2013 on android there're (mainly) : tudou youku tencent video iqiyi letv sohu video Kuwo kugou baidu music qq music

baoeni commented 11 years ago

好像这个下载不了了:https://www.dropbox.com/s/068da33kd01r70m/ubykandroid.7zk 请问有新的地址可以下载吗?

karlcheong commented 11 years ago

@baoeni https://www.dropbox.com/s/de0iqpymn5jzega/ubykandroid.7z

misakiw commented 11 years ago

Hi @karlcheong , 我已經用了privoxy 一段時間, 見到上面有新supported apps, 是否需要重新install上面那個file? 還是它會自動指向新的pac ?

karlcheong commented 11 years ago

@misakiw

規則已更新到最新@2013-8-27 23H00M 我看你應該比較早下載的了, 這里我改了config文件, 把轉發的規則抽了出來成為3個新文件

所以你要更新的話, 最好就是: 把正在運行的privoxy kill了 (terminal 輸入 killall privoxy), 把新的opt資料夾覆蓋舊的opt 再運行autostart.sh就好了

這個沒有更新功能, 都是我在把PAC的規則手動翻譯成privoxy的設定再把目標URL轉發到zhuzhuor的代理 做到跟PAC類似的效果, 只是因為沒打算給很多人用, 沒有想過規則自動更新(本人對於弄程式碼不太行)

當初我弄這個出來是因為

  1. 換了android電話, 不能像IOS那樣子直接用pac
  2. 我這里網路上行頻寬少得很, 不似日本香港韓國隨便都100M雙向, 在家還好, 外出就看不成了。 不然我就直接在家里長開一台舊電腦掛著Nodejs程式了。

這個issue算是 #106 , #112 的基礎吧, 那2個應用中也包括了這里設置privoxy的經驗 只是 #112 的反向伺服器正常運行後, 因為那伺服器後台是用作者的nodejs程式, 可以跟著這里直接更新 可能就會沒那麼勤手動翻譯PAC了吧

misakiw commented 11 years ago

@karlcheong Thanks! 明白了! 今晚測試了#112 那個給android用的 dns, 在我的tv box上可以正常運作, 想問一下, 我利用這個dns來看電影對那個"反向伺服器"的loading大不大? 它只是做轉向?

再問多一個問題, 用自設的proivoxy 還是那個dns會比較快?

karlcheong commented 11 years ago

由於DNS+反向代理的限制, 只能以域名做單位來決定代理與否, 代理的精細度及不上chrome extension& proxy.pac 還要負擔使用者 所有DNS請求的轉發 可以說 #112 新伺服器負載會比原來的那個單純pac proxy伺服器重 不過它和原來的那個伺服器一樣也是不用負責影片傳輸的, 不然這單單一個伺服器的資源是受不了的

unblock youku 2台公共PROXY的運作: 一般域名 User-> US IP DNS Forward to -> 3rd party DNS -> get the resolved IP User-> internet -> target server

白名單域名/包含特殊URL時 User -> US IP DNS / PAC script -> get the Proxy IP User-> US IP Proxy server -> China server -> internet -> target server

速度和安全性可以這樣高->低比較:

  1. 自己架設nodejs 或 自己有國內IP代理配合PAC 做特殊URL轉發
  2. 單純privoxy特殊URL轉發向unblockyouku伺服器 或 使用unblockyouku伺服器的pac檔做特殊URL轉發(DNS不變)
  3. 使用unblockyouku的DNS反向代理

(1)使用ISP DNS, 連接一般網站時最佳, 除非nodejs / PAC 連接的國內IP代理出問題, 不然不會影響unblock。 缺點: 看 #80

(2)使用ISP DNS, 連接一般網站時最佳, 而一旦unblockyouku伺服器出問題時將不能連接特殊URL, 造成不能unblock。 缺點: 用電腦架設privoxy的話同 #80, 而用路由器架設會有點複雜, 只使用pac的話將不支持android等。

(3)使用unblockyouku的美國DNS轉發器, 連接一般網站時取不到距離自己近的IP, 可能影響瀏覽/下載速度, 而且一旦unblockyouku伺服器出問題而用戶不懂改回DNS設定, 將不能上網。 好處是簡單方便通用。

看完上面的說明後 建議有能力的還是在自己的設備上架設NodeJS代理是最好的 其次是按 #80 #106 架的privoxy 特殊URL轉發上層代理也不錯

misakiw commented 11 years ago

@karlcheong

可不可以support 風行網 android app? 在國外使用很lag 和只有很少影片可以看到(對比電腦版), 不知是不是block了國外ip...

karlcheong commented 11 years ago

@misakiw 我需要一些電腦有,手機沒有的影片的例子 國外使用lag, 而不是完全不能載入(或列表中不能看到)的話, 那不是block ip,而應該是你的網絡連接風行國內伺服器的速度不行 這一般只能直接使用國內代理來解決,

hafa2012 commented 11 years ago

@karlcheong 楼主。。。。 privoxy安卓版在土豆客户端上失效了,,,看火影忍者会提示版权问题 youku客户端上的电视剧也看不了,, 只有搜狐app运行正常 是不是土豆和优酷的验证机制变化了?

但奇怪的是chrome插件的普通模式下,都能观看

hafa2012 commented 11 years ago

@karlcheong privoxy设定里,应当是把过滤出来的请求套上“proxy.uku.im:80”这个nodejs代理,, 可是在privoxy的action file 里并没有看到相应的语句? 只看到:{+forward-override{forward digito.wlmacao.tk:8000}}

如果在浏览器里,直接把“proxy.uku.im:80”设置为代理服务器,土豆网的主页根本打不开,是不是说nodejs服务器也设置了过滤,只对ip验证的链接才接受代理申请?

karlcheong commented 11 years ago

@hafa2012 我回家後看看APPS的問題吧..

privoxy 的設定中 這個 digito.wlmacao.tk 就是nodejs代理 (看 #112 )

nodejs服务器是设置了过滤,只接受对ip验证的链接 原因是避免網絡資源abuse,還有避免來做違法的事情

hafa2012 commented 11 years ago

@karlcheong 土豆和优酷如果核对视频服务器和ip验证服务器的记录,就会发现很多ip没有通过ip验证,就开始播放视频了~ 他们是否对这个现象下手了? 难道以后只能vpn回国内看视频了吗?以前在国内总想翻墙出去,现在到了国外,却又想翻墙回去~唉

但不对呀,chrome插件普通模式还是能用的,都是pac+nodejs的原理,为什么一个能用,一个不能?

karlcheong commented 11 years ago

@hafa2012 youku客戶端, 網頁的話沒找到問題, 給個看不了的影片來? 土豆網頁已經開始使用https加密視頻地址 (跟youku PC客戶端一樣 #118) 不能再直接使用反向代理破解了 但privoxy 安卓版是正向代理模式. 應該不影響才是 我先去檢查更新一下規則

hafa2012 commented 11 years ago

@karlcheong 好像都不能看,如果要试,就试蜡笔小新 安卓没电了,用的ipad(uku pac)加优酷客户端

karlcheong commented 11 years ago

ipad的話我沒有 安卓和 iphone 試了, app和網頁都是沒問題的說,

hafa2012 commented 11 years ago

@karlcheong 我这里前几天可以,现在好像完全不行了,基本上都不能用了 我在澳大利亚,是不是我在澳洲自己建个nodejs服务器会好一些? 关于nodejs如何与搜狗代理链接这一块代码是公开的吗?要不要注册搜狗帐号什么的?

hafa2012 commented 11 years ago

@karlcheong

我用自己电脑架了nodejs服务器,用foxfire看下面这个火影忍者视频,提示由于版权问题,只允许大陆播放 http://www.tudou.com/albumplay/Lqfme5hSolM/2Z1t-nKXifk.html

可是,如果用chrome的普通模式,就能直接观看了,虽然速度有点慢 (但理论上chrome插件的普通模式和foxfire加pac效果应当是一样的,不对么?)

另外看搜狐的时候,命令行有反应,而看土豆时,命令行根本就没有任何变化。 untitled

zhuzhuor commented 11 years ago

@hafa2012 土豆网的视频因为技术原因,暂时不用代理服务器或者 PAC 文件解决问题,现在只能用 Chrome 的扩展程序来解决

hafa2012 commented 11 years ago

@zhuzhuor @karlcheong 请稍稍解释一下原因?我们对原理很感兴趣~

那优酷和搜狐呢?

还有请问2位的skype是啥?希望可以直接联系。

karlcheong commented 11 years ago

@zhuzhuor 或者可以讓nodejs伺服器在遇到tudou播放頁時不用代理直連, 然後修改它的內容再輸出? 在 #68 還有 dns代理上我就是這樣干的, 只是我用的privoxy, 沒遇上什么問題的樣子

這種方法我還在,QQ百度Music等等.. 用過,

@hafa2012 土豆是通過擴展加插一段script來解決的 用pac的話不能加插script所以才不能看

skype很少上 還是mail吧 email

zhuzhuor commented 11 years ago

@karlcheong 这样的话就得所有 tudou 的 html 页面都要经过代理服务器了,感觉服务器压力会有些大,不过回头可以在 proxy.uku 那服务器上试试看

hafa2012 commented 10 years ago

@karlcheong 发现了安卓版本的privoxy,,特来通知 http://www.1mobile.com/proxy---privoxy-beta-3-166804.html 点击下载,会安装一个1mobile market,这个market会自动下载“安卓版的privoxy” 比较慢,要耐心等一段时间才能下载成功,

安装试验了下,这个安卓版的privoxy可以随系统自动启动,就免了autostart,也不用root了, 如果安卓用户都用这个,就节约了服务器的资源 具体配置,还请Karl看看 顺便问,怎么能把那个可直接连接sougou服务的privoxy版本,以及unblock的配置文件整合在这个app里?

hafa2012 commented 10 years ago

好像最近都没人来啦。。。

karlcheong commented 10 years ago

@hafa2012 這個privoxy在我的小米機 android4.1 上不能運行...

直接连接sougou服务的privoxy版本是第三方修改過的版本, 他只編譯了Windows版 其他版本得從原代碼編譯.. 問題是我不會= =

hafa2012 commented 10 years ago

请会安卓编程的同学出手帮个忙,编译方法已经从法国人处获得,加上Karl说的直连搜狗的代码~ 就可以把所有的安卓系统的unblock问题解决了~ 最好再加个自动升级配置文件的功能,就像foxfire的adblock插件似的,可以自动更新过滤规则。 这样就不比pac差了

shine12 commented 10 years ago

想問OPT 我打包載了8天前上傳的版本 Proxydroid掛globe proxy 都是連網路都沒有 這版目前能成功運作嗎? 折騰很久了= =

另外 完全不用再加任何檔案到OPT資料夾了嗎? 如cnf開頭的三個檔案? 不用放的話 能解youku android tv v1.8.3嗎?

karlcheong commented 10 years ago

需要這3個文件放到 opt\privoxy\ 里面 cnforward.action cnfilter.action cnfilter.filter

Proxydroid掛globe proxy 都是連網路都沒有 應該是privoxy沒有運行成功, 你可以試試在terminal中手動運行, 看看它有沒有正常運行

vingoleong commented 10 years ago

youku android tv v1.8.3 是youku 改了服务器 。还是 APP 的检查 改变了? 由 1.8.1 升 到 1.8。3 就 出现 只能国內沉看了。。郁闷中

y20729354 commented 10 years ago

karlcheong

我用你的設定, Proxydroid掛globe proxy 都是連網路都沒有 terminal中手動運行, 看看它有沒有正常運行 <<我不太明白什麼terminal?

karlcheong commented 10 years ago

terminal = 終端機介面程式 我在用這個 https://play.google.com/store/apps/details?id=jackpal.androidterm

y20729354 commented 10 years ago

我用了你的設定..是不是要在 opt\privoxy\ 里面 加入 cnforward.action cnfilter.action cnfilter.filter 還有什麼要加呢? 另外想問terminal怎測試.我是新手.. 亦想問我用小米盒子unblock dns 192.241.222.103..很卡啊..改用這版的方法可以解決嗎?

karlcheong commented 10 years ago

@y20729354 1 就這3個 2 terminal 里先輸入 su -> enter,再輸入autostart.sh 里的命令

不管是用privoxy正向還是反向代理, 都盡量沒有對影片CDN分發地址進行代理 問題是大陸CDN有時不能正常對國外IP分發 對它來說速度較快的地址

要解決的話需要分析出對方CDN分發地址然後進行修改/代理 有需要可看下 #124

y20729354 commented 10 years ago

karlcheong 我是新手..太多問題請見諒...

  1. 那#124及#64 固定host 可否設在小米盒子上?#124只提供host放左PC的有關位置!
  2. 64 那麼多條代理, 我用那一個?我卡主要卡左youku及土豆及愛奇藝....暈...但很奇怪地我用pc chorme unblock youku 插件沒問題啊..

  3. 112有提到在andriod device..proxydriod用pac文件方法..可解決嗎?你的回應如下:

    proxydroid 不能支援ub.uku.js的pac文件 請打開ub.uku.js 的mitm_proxy選項 然後proxydroid直接設定proxy為http 再輸入伺服器IP和port

想問怎打開ub.uku.js 的mitm_proxy選項?我不太明白

題外話, 由於PCCW用小米盒子performance 好好多, 我用HKBN...openvpn to PCCW...但出來的unblock youku的速度仍不理想..你知原因嗎?(已沒有加密..vpn 速度測試為6m/4m...server side cpu loading only 30%...不過unblock youku速度只有150k....比用HKBN直接連更慢..我也不知原因....pccw & hkbn > vpn >pccw tracert route躍點也一樣)..