{"id":1628,"date":"2026-08-24T14:57:58","date_gmt":"2026-08-24T06:57:58","guid":{"rendered":"https:\/\/blog.liu-qi.cn\/2026\/08\/24\/ios-shadowrocket-clean-ip-chain-proxy-chatgpt\/"},"modified":"2026-08-24T15:07:38","modified_gmt":"2026-08-24T07:07:38","slug":"ios-shadowrocket-clean-ip-chain-proxy-chatgpt","status":"publish","type":"post","link":"https:\/\/en.blog.liu-qi.cn\/2026\/08\/24\/ios-shadowrocket-clean-ip-chain-proxy-chatgpt\/","title":{"rendered":"How to Use a Clean IP to Access ChatGPT on Mobile? iOS Shadowrocket Chain Proxy Configuration Tutorial"},"content":{"rendered":"<h3>1. Add a Residential Node.<\/h3>\n<p>Use the add node function to add a residential node.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/01.jpeg\" alt=\"image\" \/><\/p>\n<p>The residential node type is generally HTTP or SOCKS5, both are usually supported.<\/p>\n<p>For example, if I now select SOCKS5, the following form appears.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/02.jpeg\" alt=\"image\" \/><\/p>\n<p>Taking <a href=\"https:\/\/www.webshare.io\/?referral_code=8vw0r0hq4ubc\" target=\"_blank\" rel=\"noopener noreferrer\">Webshare<\/a> as an example, you can see the IP address, port number, username, and password in the website backend. Fill these four items into the corresponding positions. Algorithm, plugin, and UDP forwarding can generally be left as default.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/03.png\" alt=\"image\" \/><\/p>\n<p>There is a lazy method here: you can have AI help you generate a QR code based on the information, then use the scan QR code function below. Scanning it will automatically input the details.<\/p>\n<h3>2. Configure Chain Proxy.<\/h3>\n<p>Click &#8220;Proxy Via&#8221;.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/04.jpeg\" alt=\"image\" \/><\/p>\n<p>In &#8220;Proxy Via&#8221;, select the front-end node you want to use.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/05.jpeg\" alt=\"image\" \/><\/p>\n<p>Return to the previous level&#8217;s edit node interface and click save.<\/p>\n<p>Then go back to the home page and select the local residential node you added initially.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/06.jpeg\" alt=\"image\" \/><\/p>\n<p>Then enable the proxy, and you&#8217;re all set.<\/p>\n<p>Let&#8217;s test it.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/07.jpeg\" alt=\"image\" \/><\/p>\n<p>However.<\/p>\n<p>This configuration brings up a problem. If I feel the front-end node isn&#8217;t performing well and want to switch to another one, I need to go back into this local node&#8217;s edit screen, click &#8220;Proxy Via&#8221; again, and then search for the desired node under the desired proxy group.<\/p>\n<p>Every time you change one, you have to go through this process. It&#8217;s annoying and not elegant at all.<\/p>\n<p>So, let&#8217;s be a bit more refined.<\/p>\n<h3>3. Create a Proxy Group.<\/h3>\n<p>First, go back to the home page, press and hold on a blank area, and drag down.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/08.jpeg\" alt=\"image\" \/><\/p>\n<p>It&#8217;s like opening &#8220;Taobao Second Floor&#8221; in the Taobao app.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/09.jpeg\" alt=\"0655e0328be8280fffbe4ea237c0023b\" \/><\/p>\n<p>This enters the proxy group interface. Click the plus sign in the top right corner to add a group.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/10.png\" alt=\"image\" \/><\/p>\n<p>Turn on the subscription here, and a server node will appear below. Enter it.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/11.png\" alt=\"image\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/12.jpeg\" alt=\"77d554ae928bb7125f3e928f177fd726\" \/><\/p>\n<p>Select the nodes (or the entire proxy group) you wish to use as chain proxy front-end nodes.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/13.jpeg\" alt=\"image\" \/><\/p>\n<p>This point needs special mention.<\/p>\n<p>Here you can directly select the entire proxy group, or you can select the required nodes one by one.<\/p>\n<p>For example, suppose you usually hop between 8 different proxy services (&#8220;airports&#8221;).<\/p>\n<p>You find that among all the routes from these 8 airports, there are a few particularly suitable for connecting to the US.<\/p>\n<p>You can then select them one by one.<\/p>\n<p>Moreover, this selection supports aggregation.<\/p>\n<p>You can select routes across different airports, or directly add multiple entire airports.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/14.jpeg\" alt=\"4a204cd1551a1d2853fbe52e1ba739d1\" \/><\/p>\n<p>For example, if I select 9 from this bunch, these 9 become the nodes in the proxy group I&#8217;m creating now.<\/p>\n<p>Next, you can choose a &#8220;Type&#8221;.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/15.jpeg\" alt=\"image\" \/><\/p>\n<p>There are several types; generally, the first three are more commonly used.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/16.png\" alt=\"image\" \/><\/p>\n<p>The first, <code>select<\/code>, is manual selection; whichever is selected is used.<\/p>\n<p>The second, <code>url-test<\/code>, is automatic speed testing; it switches to the node with the lowest latency.<\/p>\n<p>The third, <code>fallback<\/code>, is automatic fallback. If the selected node is unavailable, it automatically chooses the node at the top of the added list that was last detected as normal, following the list order.<\/p>\n<p>Although the list sorting can be a bit annoying, I generally choose to use <code>fallback<\/code>.<\/p>\n<p>But since the exit node remains unchanged, if the airport is good, using <code>url-test<\/code> is also fine.<\/p>\n<p>Additionally, under Settings \u2192 Subscription, there is a &#8220;Sort by Ping&#8221; option. Enabling this allows nodes to be automatically sorted by Ping value. If you don&#8217;t want to filter and directly add all nodes from all proxy groups at once, you can also use this function with <code>fallback<\/code>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/17.jpeg\" alt=\"image\" \/><\/p>\n<p>Go back to the original proxy group and scroll to the bottom.<\/p>\n<p>The three fields below are related to speed testing. Interval and Timeout generally don&#8217;t need to be changed.<\/p>\n<p>I personally feel changing the URL to Cloudflare&#8217;s is more practical.<\/p>\n<p><a href=\"https:\/\/cp.cloudflare.com\/generate_204\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/cp.cloudflare.com\/generate_204<\/a><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/18.jpeg\" alt=\"image\" \/><\/p>\n<p>Then go back and name this group &#8220;Front-end Group&#8221;, and save it.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/19.png\" alt=\"image\" \/><\/p>\n<p>Then click into this group to complete speed testing and node selection.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/20.jpeg\" alt=\"image\" \/><\/p>\n<h3>4. Configure Chain Proxy Again<\/h3>\n<p>Now go back to the &#8220;Proxy Via&#8221; section in the residential node edit.<\/p>\n<p>You will find that above the original nodes, there is now an optional &#8220;Front-end Group&#8221;.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/21.jpeg\" alt=\"image\" \/><\/p>\n<p>Select the Front-end Group, and you can use this entire proxy group as the front-end.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/22.png\" alt=\"image\" \/><\/p>\n<p>Now, when you need to adjust the front-end node,<\/p>\n<p>just press and drag the screen down to open the proxy group interface,<\/p>\n<p>and switch nodes within the Front-end Group.<\/p>\n<p>Of course, if your airport nodes are relatively stable,<\/p>\n<p>you can directly choose <code>url-test<\/code>, and the software will automatically switch to the fastest front-end node for you.<\/p>\n<p>However, one thing to note: the &#8220;fastest&#8221; here refers to the fastest connection to the speed test URL,<\/p>\n<p>which is the default gstatic or the modified cloudflare we just changed.<\/p>\n<p>It serves as a reference but does not necessarily mean it&#8217;s the fastest to your residential broadband node.<\/p>\n<h3>5. Configure Rules<\/h3>\n<p>Now, we have solved the awkward problem of having to go into node edit to test and switch front-end nodes.<\/p>\n<p>But it still probably can&#8217;t be called elegant.<\/p>\n<p>Because ShadowRocket&#8217;s default basic\u5206\u6d41 rules generally only simply distinguish between proxy and direct based on GEOIP.<\/p>\n<p>That is to say, when accessing Baidu, there&#8217;s no problem; it can achieve automatic direct connection without going through the proxy. But accessing most foreign websites will go through the proxy. If you keep selecting this residential node, that means it will go through the chain proxy via your residential node.<\/p>\n<p>This leads to two negative effects.<\/p>\n<p>The first negative effect: because both necessary and unnecessary traffic goes through the chain proxy, the overall internet experience becomes laggy.<\/p>\n<p>The second negative effect: if your residential broadband node has a data limit, it will consume data in both necessary and unnecessary situations.<\/p>\n<p>Then, you have to jump back and forth between these two sides, which is quite awkward.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/23.jpeg\" alt=\"image\" \/><\/p>\n<p>So, to be more elegant, let&#8217;s go to the configuration interface.<\/p>\n<p>Click this \u24d8 to edit rules.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/24.jpeg\" alt=\"image\" \/><\/p>\n<p>Enter the rules interface, click the plus sign in the top right corner to add a rule.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/25.jpeg\" alt=\"image\" \/><\/p>\n<p>The type can generally be chosen as domain suffix or keyword matching. There are many details here, so I won&#8217;t expand on them.<\/p>\n<p>I&#8217;ll directly use <code>DOMAIN-SUFFIX<\/code> to match domain suffixes. Fill the domain suffixes that need to go through the chain proxy into the domain field.<\/p>\n<p>For example, I fill in <a href=\"http:\/\/chatgpt.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">chatgpt.com<\/a> here, then set the policy to the residential node we added, and save.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/26.png\" alt=\"image\" \/><\/p>\n<p>Now ChatGPT will be automatically routed to the residential node.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/27.png\" alt=\"image\" \/><\/p>\n<p>Go back to the home page.<\/p>\n<p>Now the node doesn&#8217;t need to be the residential one; select the node you wish to use for your\u5e38\u89c4 proxy.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/28.jpeg\" alt=\"image\" \/><\/p>\n<p>Go to a website to test.<\/p>\n<p>Cloudflare&#8217;s exit IP is Germany,<\/p>\n<p>ChatGPT&#8217;s exit IP is our residential node.<\/p>\n<p>No problem.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/29.jpeg\" alt=\"image\" \/><\/p>\n<p>To add, the previous ChatGPT domain suffix addition was just an example.<\/p>\n<p>If you want to do it properly, it&#8217;s\u5efa\u8bae to add a series of OpenAI domains, especially those related to login.<\/p>\n<p>The same goes for others like Claude and Gemini.<\/p>\n<p>Also, in actual operation, you don&#8217;t have to add them one by one like this.<\/p>\n<p>Find an AI to help you convert existing rules from your computer&#8217;s Clash \/ Surge \/ V2ray, etc., then generate a QR code and scan it directly.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/blog.liu-qi.cn\/wp-content\/uploads\/2026\/08\/ios-shadowrocket-chain-proxy\/images\/30.jpeg\" alt=\"image\" \/><\/p>\n<p>But when converting, I personally\u5efa\u8bae maintaining relative restraint, only setting up\u5206\u6d41 for some key websites.<\/p>\n<p>Using overly complex\u5206\u6d41 rules on a phone can also be a bit strange.<\/p>\n<p>Especially some ad-blocking rule sets can be troublesome to manage on a phone.<\/p>\n<p>That&#8217;s all.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A step-by-step guide on configuring chain proxy in Shadowrocket for iOS to access ChatGPT and other AI services using a clean residential IP. Covers adding nodes, creating proxy\u2026<\/p>\n","protected":false},"author":0,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[24],"tags":[],"class_list":["post-1628","post","type-post","status-publish","format-standard","hentry","category-articles"],"_links":{"self":[{"href":"https:\/\/en.blog.liu-qi.cn\/index.php\/wp-json\/wp\/v2\/posts\/1628","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en.blog.liu-qi.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/en.blog.liu-qi.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/en.blog.liu-qi.cn\/index.php\/wp-json\/wp\/v2\/comments?post=1628"}],"version-history":[{"count":2,"href":"https:\/\/en.blog.liu-qi.cn\/index.php\/wp-json\/wp\/v2\/posts\/1628\/revisions"}],"predecessor-version":[{"id":1630,"href":"https:\/\/en.blog.liu-qi.cn\/index.php\/wp-json\/wp\/v2\/posts\/1628\/revisions\/1630"}],"wp:attachment":[{"href":"https:\/\/en.blog.liu-qi.cn\/index.php\/wp-json\/wp\/v2\/media?parent=1628"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/en.blog.liu-qi.cn\/index.php\/wp-json\/wp\/v2\/categories?post=1628"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/en.blog.liu-qi.cn\/index.php\/wp-json\/wp\/v2\/tags?post=1628"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}