独自のiOSウェブプロキシクライアントを構築する

再版は、記事の出典を明記してください: https//tlanyan.me/build-your …

この記事で言及しているWebプロキシクライアントは、使用できるShadowSocks(R)クライアントを参照しています。

前提条件

iOSデバイスの独自のクライアント(Potasto)を構築するには、次の2つの前提条件が必要です。

  1. Xcodeを備えたMacOSデバイス。
  2. 利用可能なApple Developerアカウント。

ビルドステップ

1.ココスポッドをインストールする

既にインストールされている場合は、この手順をスキップしてください。

  1. システムのgemのバージョンをsudo gem update --system 。端末を開いてsudo gem update --systemますsudo gem update --system ;
  2. 国内の宝石のソースを設定する: gem sources --list https://gems.ruby-china.org/出力するhttps://gems.ruby-china.org/このステップをスキップする、そうでない場合は公式のソースを削除して宝石を追加する: gem sources --remove https://rubygems.org/; gem sources --add https://gems.ruby-china.org/ ;
  3. Cocospodsをsudo gem install cocoapodssudo gem install cocoapods

2. Potatsoを構築する

Potatsoicodesign )の著者はソースコードを公開し、著者はコードを一部の人に悪用し、2番目のバージョンはもはやオープンソースではなくなりました。 この記事で使用されているPotatsoクライアントのコードは、 icodesignhaxporらのコードです。

Potatsoを構築する手順は次のとおりです。

  1. コードをクローン: git clone https://github.com/haxpor/Potatso.git ;
  2. サブモジュールを更新する: cd Potatso; git submodule update --init ;
  3. インストールの依存関係: Podfileを開き、最初の行をsource 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git' ://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git(TsinghuaのCocoaPodsソースを使用)に変更し、 pod install --verbose実行します。 pod install --verbose ;
  4. Potatso.xcworkspaceを開きます。
  5. PotatsoPacketTunnelTodayWidget Bundle ID 2つのサブプロジェクトのBundle IDを変更します。たとえば、次のように変更しました: potatso.tlanyan.mepotatso.tlanyan.me.PacketTunnel and potatso.tlanyan.me.TodayWidget ;
  6. PotatsoPacketTunnelTodayWidgetの2つのサブプロジェクトのCapabilitiesで、 App GroupKeychain Sharing App Groupを変更します。「App Groups」内の元のgroup.io.wasin.potatsoを削除し、独自のグループを追加します。たとえば、「group.potatso .tlanyan.me ";自分のグループIDを" Keychain Sharing "に入力します。
  7. "Potatso.m"ファイルを開き、 shareGroupIdentifier関数の戻り値を独自のグループIDに変更します。
  8. PotatsoプロジェクトのBuildSettingsでCode Signing Entitlementsを探し、 "xxxx.entitlements"を削除します。
  9. iPhoneなどのiOSデバイスをコンピュータに接続し、新しく接続したデバイスを選択し、左上隅の「ビルドと実行」ボタンをクリックすると、Xcodeはアプリケーションをコンパイルしてインストールし、起動します。

すべてうまくいくと、iOSデバイスのクライアントは正常に使用でき、複数のデバイスにインストールすることも、ipaにパッケージ化して、iTunesで他の登録済みデバイスにインストールすることもできます。 ソフトウェアのスクリーンショットは次のとおりです。




あなた自身の使用のためにそれを使用することを忘れないでください、それを商業的に使用しないでください、またはApp Storeにアプリを公開してください(そして、有料)。

考えられる問題

私がビルドプロセス中に遭遇した主な問題は、Cocoapodsがインストールに依存していたことでした。 pod install実行pod install 、すべてうまくいくので、 libYAMLに問題があり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は閉じられています.httpsをhttpsに置き換えて、それを正常にダウンロードできることがわかります。 libYAMLの公式のウェブサイトはこれが唯一のhttpsをサポートし、301のジャンプ機会が突然私に少し卵の痛みをさせる操作に与えられていません。 grepを使ってプロジェクトを検索すると、設定ファイルがhttps httpに変更され、Cocoapodsに慣れていないこと、libYAMLのアドレスがクラウドからダウンロードされていないこと、 Podfile.lock開き、バージョンを「0.1.4」から「0.1.4」に変更する依存関係には問題があります。まずファイルをダウンロードし、 "/ var / folders / dj / ljst94xx47l7fn3wz4q9bwsw0000gn / T / d20180822-4467-1cotycr /"ディレクトリに入れて、再度 "file.tgz"に名前を変更してくださいpod install --verboseを実行pod install --verboseと、毎回パスが違うことがわかります。非常に苦しいです。

最終的な解決策は、ネットワークハイジャックを使用することです。

  1. 新しい端末を開き、ルートモードに入ります: sudo -i ;
  2. download / libyamlディレクトリを作成し、ダウンロードしたファイルを次のフォルダにコピーしますmkdir -p download/libyaml; mv /Users/tlanyan/Downloads/yaml-0.1.4.tar.gz download/libyaml/ ;
  3. pyyaml.orgのドメイン名の解決方法をlocal:vim edit /etc/hostsファイルに指定し、行を追加します: 127.0.0.1 pyyaml.org ;
  4. Pythonで静的Webサーバーを起動し、ポート80で待機しますpython -m SimpleHTTPServer 80

rootとして監視を設定しpod install --verbose 、元のターミナルでpod install --verboseを続けると、問題は解決されます。

依存関係の問題に加えて、その他の問題は主にバンドルID /グループIDに基づいています。エラーメッセージに従って修正してください。

Potatsoについて

icodesignの著者はicodesignの著者自身の自己報告のためにPotatso 1の死を記念して icodesignであり、Potatsoコードを使用するすべての人がそれを見ることが推奨されている。

Githubの "Potatso"を検索すると、最もよく一致する倉庫の所有者はhaxpor(Wasin Thonkaew)です。 ADHERE_LICENSE.mdの内容を表示するには、倉庫のREADMEの最初の場所にコードを使用することをお勧めします。 簡単に言えば、ソースを直接コピーしてApp Storeに公開しないでください。特に、haxporの希望は次のとおりです。

その他

私が使用するクライアントはSsrConnectProですが、TGはグローバルまたはシステムプロキシに関係なく使用できません。 その後、 WaterDrop使用され、TGは心配なしで使用されました。 残念ながら、 WaterDropは最初の2週間でWaterDrop 、サーバーに接続した直後に切断されました。原因は不明です。 それに集中したい場合は、アンインストールしてください。 App Storeの検索を開き、ソフトウェアが見つからないことを確認して、インターネットが削除されていることを確認した(他の領域も棚卸しされていない)ので、代替案を見つけなければならない。 私はApp Storeに多数のクライアントをダウンロードした。私はインターネットに多くのアクセス権を持っていて、少数の電報を使った。 これが突然私に危機感を感じさせました。これらのソフトウェアを削除した場合、iOS(特に新しいデバイス)でインターネットにアクセスしてTGを使用するにはどうすればよいですか?

1つの解決方法は、あなた自身のクライアントを作成して、決して削除されないようにすることです。 私はコードを見つけてそれを普通にコンパイルしてテストできるほど幸運です。数時間(主にCocospodsの依存関係のインストールを解決することです)がかかりました。 インターネットをチェックした後、関連するチュートリアルがないようですので、私はこの記事を持っています。

私はSwiftを一度も使用していない、私はクライアントの機能を変更することはできません、私に似たような質問をしないでください。 可能であれば、 Potatso 2を購入して元の著者Potatso 2サポートするか、haxporなどに寄付してください。

読んでくれてありがとう!

リファレンス

  1. Https://github.com/haxpor/Pot …
  2. Https://www.jianshu.com/p/171 …
  3. Https://sspai.com/post/38909
  4. Https://coolshell.cn/articles …
  5. Https://cloud.tencent.com/dev …
  6. Https://mirror.tuna.tsinghua ….
元のリンク