构建自己的iOS网络代理客户端 - tlanyan

同步来源:树洞剪藏 源站剪藏 ID:271 原文地址:https://itlanyan.com/build-your-ios-vpn-client/
构建自己的iOS网络代理客户端 - tlanyan set 限制解除 跳到内容
tlanyan 十里平湖霜满天,寸寸青丝愁华年
首页 Linux C/C++ 科学技术 关于 友情链接
首页 iOS 构建自己的iOS网络代理客户端
22 Aug 2018 构建自己的iOS网络代理客户端 iOS 科学上网 tlanyan 2020年10月2日
本文目录
前提条件 构建步骤 可能遇到的问题 有关Potatso 其他 参考 本文说的网络代理客户端指ShadowSocks(R)客户端,用途你懂的。
本文写作时的环境:MacOS High Sierra 10.13.6, Xcode版本9.4.1 ,Swift版本4.1.2,所用代码的 commitID: 318a5e1 本文所用的XCode工程文件夹已经上传至网盘: https://pan.baidu.com/s/190N2_ElBWGzxtpL-Hx_d1A Xcode10(适用于ios 12及以上设备)构建的版本以及如果构建过程中遇到的问题请参考: 构建Potatso问题集锦及解决方案 前提条件 返回目录 构建iOS设备的自用客户端(Potatso),需要两个前提条件: 一台装有XCode的MacOS设备; 一个可用的苹果开发者账号。 构建步骤 返回目录
- 安装Cocospods 如果已安装,请略过此步。 更新系统的gem版本:打开终端,输入: sudo gem update -- system ; 设置国内gem源: gem sources -- list 输出为 https : //gems.ruby-china.org/ 请略过此步;否则先删除官方源再添加gems国内源: gem sources -- remove https : //rubygems.org/; gem sources --add https://gems.ruby-china.org/ ; 安装Cocospods: sudo gem install cocoapods 。
- 构建Potatso Potatso 的作者( icodesign )公开了源代码,而后由于部分人的滥用导致作者删除代码且第二版不再开源。本文使用的Potatso客户端的代码来自 icodesign 及 haxpor 等人。 构建Potatso的步骤如下: 克隆代码: git clone https : //github.com/haxpor/Potatso.git ; 更新子模块: cd Potatso ; git submodule update -- init ; 安装依赖:打开 Podfile ,将第一行改成: source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' (使用清华的CocoaPods源),然后运行 pod install -- verbose ; 使用XCode打开 Potatso . xcworkspace ; 更改 Potatso 及 PacketTunnel 、 TodayWidget 两个子项目的 Bundle ID ,例如本人分别改成: potatso . tlanyan . pp . ua 、 potatso . tlanyan . pp . ua . PacketTunnel 和 potatso . tlanyan . pp . ua . TodayWidget ; 更改 Potatso 及 PacketTunnel 、 TodayWidget 两个子项目 Capabilities 中的 App Group 和 Keychain Sharing 的Group:在”App Groups”中删除原有的 group . io . wasin . potatso ,新增自己的group,例如:”group.potatso.tlanyan.pp.ua”;在”Keychain Sharing”中输入自己的group ID; 打开”Potatso.m”文件,将 shareGroupIdentifier 函数的返回值改成自己的group id; 在Potatso项目的 BuildSettings 中找 Code Signing Entitlements ,将”xxxx.entitlements”删除; 将iPhone等iOS设备连接到电脑,目标选择新接入的设备,点击左上角的“build and run”按钮,Xcode会编译并安装App,然后启动。 一切顺利的话,iOS设备上的客户端能正常使用,接下来可以安装到多个设备上,也可以打包成ipa用iTunes安装到其他已注册设备。软件截图如下:
请记住用途为自用,请不要商业使用或者将应用发布到App Store上(并收费)。 可能遇到的问题 返回目录 本人构建过程中遇到的主要问题是Cocoapods依赖安装。执行 pod install ,前面一切顺利,到 libYAML 会出现问题: Installing LibYAML ( 0.1 . 4 )
[!] Error installing LibYAML [!] / usr / bin / curl - f - L - o / var / folders / dj / ljst94xx47l7fn3wz4q9bwsw0000gn / T / d20180822 - 4467 - 1cotycr / file . tgz http : //pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz --create-dirs --netrc-optional --retry 2
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl : ( 7 ) Failed to connect to pyyaml . org port 80 : Connection refused 根据提示libYAML官网的80端口关闭了,将http替换成https发现可以正常下载。libYAML官网这仅支持https,连301跳转机会都不给的骚操作顿时让我有点小蛋疼。用grep搜索工程,没发现可以把http改成https的配置文件存在;对Cocoapods不熟,libYAML的地址不知是否从云端下载下来;打开 Podfile . lock ,将版本从”0.1.4″改成其他的,依赖又出问题;无奈之下先将文件下载下来,将其放到”/var/folders/dj/ljst94xx47l7fn3wz4q9bwsw0000gn/T/d20180822-4467-1cotycr/”目录下并改名为”file.tgz”,再次运行 pod install -- verbose ,发现路径每次都不一样,非常蛋疼。 最后的解决方案是采用网络劫持: 新开一个终端,进入root模式: sudo - i ; 创建download/libyaml目录,将下载的文件复制到文件夹: mkdir - p download / libyaml ; mv / Users / tlanyan / Downloads / yaml - 0.1 . 4.tar . gz download / libyaml / ; 将pyyaml.org域名解析指向本地:vim编辑 /etc/ hosts 文件,增加一行: 127.0 . 0.1 pyyaml . org ; 用Python启动一个静态web服务器,监听80端口: python - m SimpleHTTPServer 80 。 以root身份设置好监听后,在原来终端继续 pod install -- verbose ,问题解决。 除了依赖问题,其他问题主要是以Bundle ID/group ID的问题,请根据错误提示修改。 有关Potatso 返回目录 Potatso的作者是 icodesign , 祭奠死去的 Potatso 1 为作者对Potatso的自述,建议每一个使用Potatso代码的人都看看。 Github上搜”Potatso”,最匹配排名第一的仓库持有者是haxpor(Wasin Thonkaew)。其在仓库README的第一位置建议使用代码的人查看 ADHERE_LICENSE.md 中的内容。简单来说就是不要直接复制源码然后发布到App Store上,具体来讲haxpor的希望是:
其他 返回目录 本人常用的客户端是 SsrConnectPro ,可惜不管全局还是系统代理,都无法使用TG。后来用了 WaterDrop ,使用TG无忧。遗憾的是前两周 WaterDrop 抽风,连接服务器后又立马断开,原因未知。想着重装一下就好了,就将其卸载掉。打开App Store搜索发现软件不见踪影,上网查方知已经下架(其他区也下架),只好寻找替代品。在App Store下载了多个客户端,能上外网的很多,用得了Telegram的很少。这顿时让我有种危机感:要是这些软件下架了,我该怎么在iOS上(尤其是新设备)访问外网、使用TG呢? 解决办法之一是做一个自己的客户端,这样就永远不会下架。本人比较幸运,从闲下来找代码以及编译并测试使用正常,总共花了几个小时(主要时间是解决Cocospods的依赖安装)。上网查了一圈,貌似没有相关教程,于是有了此文。 本人从未用过Swift,无法对客户端功能进行修改,类似问题请勿咨询本人。如果可以,请购买 Potatso 2 支持原作者,或者给haxpor等人捐赠。 感谢阅读! 参考 返回目录 https://github.com/haxpor/Potatso https://www.jianshu.com/p/1711e131987d https://sspai.com/post/38909 https://coolshell.cn/articles/1480.html https://cloud.tencent.com/developer/article/1072481 https://mirror.tuna.tsinghua.edu.cn/help/CocoaPods/ AD: 【国外VPS推荐】 DMIT洛杉矶三网回程CN2 GIA VPS,稳定做站推荐 赞(105) 分享
您可能喜欢
系统出现大量HTTP Auto Proxy Detection Worker Process
使用shadowsocks看外面的世界
构建Potatso问题集锦及解决方案
Shadowsocks/SS教程
切换apple id下载其它国家和地区的应用
注册香港apple id及充值教程
标签: Potatso ssr客户端 SS客户端
解决Windows上编译PHP7.1拓展的错误
Nginx的upstream_response_time
34 条评论
Stone 2020年12月10日 21:18
请教一下,这个2018年的代码支持Trojan协议吗? 回复
tlanyan 2020年12月10日 21:35
不支持,v2ray也不支持 回复
PH 2020年8月22日 17:30
设置国内gem源有什么意义,是因为在国内读取官方的源很慢吗?加入我在国外的话是不是就不用弄 回复
tlanyan 2020年8月22日 22:06
嗯,国外就不需要设置 回复
te 2020年7月1日 10:15
CocoaPods源还有哪些地方的,不用清华大学的可以吗? 回复
tlanyan 2020年7月1日 12:05
可以,中科大、阿里云应该也都有 回复
te 2020年7月1日 14:02
有国外的源吗?不知道哪里搜有什么地方的源 回复
tlanyan 2020年7月1日 14:39
百度搜一下cocospod的源就有了 回复
王光卫博客 2020年3月7日 14:21
这种文章必须保存收藏 回复
h'z 2020年2月12日 18:01
碰到个错误 Confidential.h not found. Command /bin/sh failed with exit code 12 回复
tlanyan 2020年2月12日 18:03
是不是pod依赖没安装好?或者新版改动了? 回复
h'z 2020年2月12日 18:58
pod应该装对的,可能是新版本改动? 看了下github上面的代码,也没Confidential.h 然后下载了你网盘的版本,里面有Confidential.h,这条过了 但是跑真机的话,报No such module ‘PotatsoModel’在Manager.swift的import PotatsoModel这里 跑模拟器居然编译能过, 但运行出错报Thread 1: signal SIGABRT 在Manager.swift的open static let sharedManager = Manager()这里 回复
tlanyan 2020年2月12日 18:59
估计是有些包的新版变动了 建议你先下载我的,然后对照排除,我也好久没动这个代码了 回复
piapiapia 2020年2月1日 12:33
hi,谢谢你的分享很详细。 有没有遇到虾米、微信语音电话、bilibili视频播放等服务不可用的情况,Potatso开启后内外网都正常,就是有一部份走ip的服务直接不可用,手动关掉以后又马上连上了,非常苦恼 谢谢 回复
tlanyan 2020年2月1日 15:20
没有,你可能需要更新一下ip库的规则 回复
CY 2019年12月30日 14:04
开启代理,访问外网页面报错,这是怎么回事 500 Internal Privoxy Error Privoxy encountered an error while processing your request: Could not load template file no-server-data or one of its included components. Please contact your proxy administrator. If you are the proxy administrator, please put the required file(s)in the (confdir)/templates directory. The location of the (confdir) directory is specified in the main Privoxy config file. (It’s typically the Privoxy install directory, or /etc/privoxy/). 回复
tlanyan 2019年12月30日 15:10
代理软件设置有问题,关掉其它软件,然后重新开启ss试试,或者重启电脑再打开ss 回复
CY 2019年12月30日 15:46
我是跑的源码安装到手机上的,手机上的其他软件都是关闭的😿, 回复
tlanyan 2019年12月30日 17:08
手机上的报错?还真是第一次看到,基本问题就是代理环境有问题 回复
Lee 2019年11月19日 16:40
楼主有没有最新的能运行的这个Potatso项目的源码,给我发下吧,我下的这个不行,跟最新xcode不匹配,QQ: 786016470 多谢!! 回复
tlanyan 2019年11月19日 16:41
看文章开头提到的另外一篇文章 回复
运 2019年10月3日 10:45
Potatso支持V2Ray吗? 回复
tlanyan 2019年10月3日 13:03
支持socks5、ss和ssr,不支持v2ray 回复
鱼 2019年9月17日 21:14
博主,除了potatso还有其他活跃开源的ios客户端项目吗? 回复
tlanyan 2019年9月17日 21:19
目前所知有outline和brook在活跃开发中 回复
potatso 2019年9月4日 22:22
楼主,能借开发者账号用一下吗? 回复
tlanyan 2019年9月4日 22:28
我的也过期了,手上没有可用的 回复
玉米包谷 2019年2月18日 16:06
Build failed,错误如下:No member named ‘re_g’ in ‘regex_t’ 具体代码 /*************************************************
- Free store held by a regex * ****************************************** *******/ void pcre_regfree(regex_t *preg) { (pcre_free)(preg->re_g); } … 具体源文件:Library/ShadowPath/ShadowPath/Privoxy/pcre/pcreposix.c 这个解决了吗?在Xcode10上会有这个错误,但是有人说: ‘re_pcre’ 替换成 ‘re_g’ ‘re_erroffset’ 替换成 ‘re_nsub’ 就可以解决,但不知道会不会有影响! 回复
LibYAML报错 2018年11月12日 15:12
open /Users/Your Name/.cocoapods/repos/master/Specs/5/b/9/LibYAML/0.1.4/LibYAML.podspec.json change the address “http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz” to “https://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz” 回复
高 2018年12月14日 15:49
[!] Error installing LibYAML [!] /usr/bin/curl -f -L -o /var/folders/dj/ljst94xx47l7fn3wz4q9bwsw0000gn/T/d20180822-4467-1cotycr/file.tgz http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz –create-dirs –netrc-optional –retry 2 您好 我按您给的方案来做处理 还是报错了 期待您的回复 感谢 回复
tlanyan 2018年12月14日 16:04
报错信息发一下,或者加我Q 1020923112 回复
robin 2018年9月1日 19:02
Build failed,错误如下:No member named ‘re_g’ in ‘regex_t’ 具体代码 /*************************************************
- Free store held by a regex * *************************************************/ void pcre_regfree(regex_t *preg) { (pcre_free)(preg->re_g); } … 具体源文件:Library/ShadowPath/ShadowPath/Privoxy/pcre/pcreposix.c 请指导,邮箱: [email protected] 感谢。 回复
玉米包谷 2019年2月18日 16:10
解决错误了吗? Build failed,错误如下:No member named ‘re_g’ in ‘regex_t’ 回复
tlanyan 2019年2月21日 09:48
我两次构建都未发现此问题,你可以用我打包好的zip包试试 回复
发表回复 取消回复 您的邮箱地址不会被公开。 必填项已用 * 标注 评论 * 显示名称 * 邮箱 * 网站
热门文章
V2Ray教程
trojan教程
V2Ray高级技巧:流量伪装
V2ray的VLESS协议介绍和使用教程
frp内网穿透教程
Xray教程
获取ios科学上网客户端
拯救被墙的服务器
Cloudflare设置回源端口
一些VPS商家整理
近期文章 在国内服务器上使用acme自动签发证书 使用C++17简化代码 修复Yum Error: Database Disk Image is Malformed 跨节点MPI环境的两个问题 修改sshd配置兼容低版本客户端 在arm机器上编译OpenMPI std::vector的两个性能问题 MacOS上编译fortran程序 解决CMake Could NOT find MPI_C的问题 MTX文件格式
文章分类
C/C++ iOS Java Linux MacOS PHP Python VPS教程 Web Windows WordPress Yii 书评影评 前端开发 安全 安卓 树莓派 生活点滴 科学上网 科学技术 网络转载 默认分类
版权所有 ©2024 tlanyan | 网站地图 本站作品采用 CC-BY 4.0 协议授权,转载需注明原文出处