للمطوّرين

البروكسيات المستضافة

قراءة في 10 دقائقعرض بصيغة Markdown ↗

يرسل البروكسي المستضاف حركة مرور تطبيقٍ عبر URnetwork حين لا يقبل التطبيق إلا إعداد بروكسي: curl أو سكربت أو أداة كشط أو تطبيق هاتف مثل Shadowrocket. يبيّن هذا الدليل أين تجد عنوان URL الخاص بالبروكسي على ur.io وكيف تُدخله في العملاء الشائعة.

ملاحظة واحدة عن النطاق: ليس للبروكسي المستضاف جلسة مختومة. يعمل جهازك العميل داخل المشغّل، الذي يترجم بروتوكول البروكسي إلى بروتوكول الشبكة. وما يقف بين المشغّل وحركة مرورك هو تصميم البروكسي الخالي من السجلات الموصوف في نموذج التهديد، لا الختم. ولا يزال المزوّدون لا يعرفون من أنت. وحيث يستطيع التطبيق تشغيل URnetwork بنفسه، فإن التطبيقات وSDK هي المسار الأكثر خصوصية.

نوعان من البروكسي

ينشئ ur.io نوعين من البروكسي يمكن لعملاء الجهات الخارجية استخدامهما:

بروكسي HTTPSبروكسي SOCKS5
الخطةكل الخططUR Pro
عنوان URL على ur.iohttps://<token>.<host>:<port>socks5h://<token>:x@<host>:<port>
أين يوضع الرمزفي اسم المضيف، بلا اسم مستخدم أو كلمة مرورفي اسم المستخدم؛ ولا تُفحص كلمة المرور أبدًا
يجب أن يدعم العميلبروكسيات HTTPS، التي تستخدم TLS حتى البروكسيSOCKS5 مع اسم مستخدم وكلمة مرور
ما ينقلهحركة الويب: HTTP، وHTTPS عبر CONNECTاتصالات TCP، وUDP عبر UDP associate

لا يدعم بروكسي SOCKS5 الأمر BIND، ويُسقط حزم UDP التي تتجاوز 2 KiB. ويُنشئ ur.io أيضًا ملفات تعريف WireGuard على UR Pro. استورد ملف .conf الذي نزّلته إلى تطبيق WireGuard؛ أما بقية هذا الدليل فتتناول HTTPS وSOCKS5.

احصل على عنوان URL الخاص بالبروكسي

  1. سجّل الدخول إلى ur.io وافتح الوكلاء (Proxies) ‏(ur.io/app/proxies).
  2. اختر إنشاء وكيل (Create proxy).
  3. اختر نوع البروكسي: HTTPS أو SOCKS5 أو WireGuard. يحمل SOCKS5 وWireGuard شارة Pro. وفي الفئة المجانية يعرض زر الإنشاء Pro أولًا.
  4. اختر موقعًا. ابحث عن بلد أو منطقة أو مدينة، أو أبقِ على الأفضل المتاح (Best available)، الذي يستخدم أي مزوّد على الشبكة. وتعرض المواقع عدد المزوّدين في كلٍّ منها.
  5. اختر Create HTTPS proxy أو Create SOCKS5 proxy. يظهر البروكسي الجديد مع عنوان URL الخاص به.

لكل بروكسي HTTPS وSOCKS5 في القائمة زر نسخ الرابط (Copy URL)، الذي ينسخ عنوان URL كاملًا مع رمزه، وزر ×، الذي يحذف البروكسي.

اقرأ عنوان URL

Text
https://<token>.<host>:<port>
socks5h://<token>:x@<host>:<port>
  • <token> هو رمز البروكسي، وهو سلسلة طويلة من الحروف والأرقام. إنه بيانات الاعتماد الوحيدة للبروكسي، ولا يهم فيه حجم الأحرف.
  • في عنوان URL الخاص بـHTTPS، يكون الرمز هو الجزء الأول من اسم المضيف. أدخل <token>.<host> مضيفًا للبروكسي كما يعرضه ur.io تمامًا: فالرمز الذي في الاسم هو ما يسجّل دخولك.
  • في عنوان URL الخاص بـSOCKS5، يقع الرمز بين socks5h:// و:x@. ويأتي <host> بعد @، ويأتي <port> بعد آخر :.
  • الحرف x كلمة مرور بديلة. لا يفحص بروكسي SOCKS5 كلمة المرور أبدًا، لذا تصلح أي قيمة. بعض العملاء لا يرسلون اسم المستخدم إلا إذا عُيّنت كلمة مرور أيضًا، ومنها requests في Python، ولهذا يحمل عنوان URL من ur.io الحرف x. وإذا طلب العميل اسم المستخدم وكلمة المرور كلًّا على حدة، فأعطه الرمز وأي كلمة مرور.
  • أبقِ الحرف h في socks5h. فهو يجعل البروكسي يحلّ أسماء المضيفين، فتخرج عمليات البحث عن الأسماء عبر المزوّد بدلًا من جهازك. ومع socks5 العادي، يحلّ curl الأسماء على جهازك أولًا.

عامل عنوان URL معاملة كلمة المرور. يستطيع أي شخص يملكه استخدام البروكسي، وحركة مرور البروكسي تستهلك بيانات حسابك. إذا تسرّب عنوان URL، فاحذف ذلك البروكسي على ur.io، فيتوقف البروكسي عن قبول رمزه. ثم أنشئ بروكسي جديدًا.

تحقّق من أنه يعمل باستخدام curl

Shell
# HTTPS proxy, on every plan
curl -x 'https://<token>.<host>:<port>' https://api.bringyour.com/my-ip-info

# SOCKS5 proxy, on UR Pro
curl -x 'socks5h://<token>:x@<host>:<port>' https://api.bringyour.com/my-ip-info

يجيب /my-ip-info بالعنوان الذي جاء منه طلبك وبمكان هذا العنوان. وعبر البروكسي، يكون هذا عنوان مزوّد في الموقع الذي اخترته. تحتاج بروكسيات HTTPS إلى curl بالإصدار 7.52 أو أحدث.

المتصفحات

أبسط طريقة لتمرير متصفح عبر بروكسي هي إضافة URnetwork، التي تنشئ بروكسيها المستضاف الخاص وتديره. راجع البدء في متصفحك.

ولاستخدام بروكسي أنشأته على ur.io بدلًا من ذلك، استخدم عنوان URL الخاص بـHTTPS. لا يستطيع Chrome إرسال اسم مستخدم SOCKS5 إطلاقًا. ولا تستطيع إعدادات البروكسي في نظام التشغيل ولا إعدادات البروكسي اليدوية في Firefox عمومًا وصف بروكسي HTTPS.

Chrome وEdge ومتصفحات Chromium الأخرى. شغّل المتصفح مع البروكسي في سطر الأوامر الخاص به. يجعل مجلد ملف التعريف المنفصل هذا الخيار يعمل حتى إن كانت نافذة متصفحك المعتادة مفتوحة:

Shell
# macOS
open -na "Google Chrome" --args --user-data-dir="$HOME/urnetwork-proxy-profile" --proxy-server="https://<token>.<host>:<port>"

# Linux
google-chrome --user-data-dir="$HOME/urnetwork-proxy-profile" --proxy-server="https://<token>.<host>:<port>"

# Windows, in Command Prompt (Edge: msedge instead of chrome)
start chrome --user-data-dir="%USERPROFILE%\urnetwork-proxy-profile" --proxy-server="https://<token>.<host>:<port>"

Firefox. ليس في إعدادات Firefox اليدوية حقل لاسم المستخدم لـSOCKS ولا نوع بروكسي HTTPS، لذا استخدم ملف تهيئة تلقائية للبروكسي (PAC) من سطر واحد. احفظ ما يلي باسم urnetwork.pac:

js
function FindProxyForURL(url, host) {
  return "HTTPS <token>.<host>:<port>";
}

ثم افتح الإعدادات ← عام ← إعدادات الشبكة ← الإعدادات… (Settings → General → Network Settings → Settings…)، واختر عنوان التهيئة التلقائية للبروكسي (Automatic proxy configuration URL)، وأدخل عنوان الملف، مثل file:///Users/you/urnetwork.pac أو file:///C:/Users/you/urnetwork.pac، ثم اختر موافق (OK). وللإيقاف، اختر بلا بروكسي (No proxy) في مربع الحوار نفسه.

تطبيقات الهاتف: Shadowrocket وغيره

تأخذ تطبيقات البروكسي للهواتف، مثل Shadowrocket على iOS، خادم SOCKS5 في بضعة حقول. أنشئ بروكسي SOCKS5 على ur.io ‏(UR Pro) وانسخ عنوان URL الخاص به. ثم أضف خادمًا في التطبيق واملأه من عنوان URL:

الحقلالقيمة
النوع (Type)SOCKS5
العنوان أو الخادم أو المضيف (Address)<host>: الجزء بين @ وآخر :
المنفذ (Port)<port>: الأرقام بعد آخر :
المستخدم أو اسم المستخدم (User)<token>: الجزء بين socks5h:// و:x@
كلمة المرور (Password)أي قيمة، مثل x

احفظ الخادم، واختره، وشغّل الاتصال. ولتمرير الهاتف كله، لا يحتاج تطبيق URnetwork لـiOS أو Android إلى بروكسي، وهو المسار الأكثر خصوصية.

Python

تقبل requests كلا البروكسيين. يحتاج SOCKS5 إلى الإضافة socks ‏(pip install "requests[socks]")، ويحتاج عنوان URL الخاص به إلى كلمة مرور بديلة:

python
import requests

proxy = "https://<token>.<host>:<port>"          # HTTPS proxy, every plan
# proxy = "socks5h://<token>:x@<host>:<port>"    # SOCKS5 proxy, UR Pro

r = requests.get(
    "https://api.bringyour.com/my-ip-info",
    proxies={"http": proxy, "https": proxy},
    timeout=30,
)
print(r.json()["info"]["ip"])

تقبل httpx عناوين URL نفسها؛ ويحتاج SOCKS5 إلى pip install "httpx[socks]". وتقبل aiohttp بروكسي HTTPS:

python
import asyncio

import aiohttp
import httpx

with httpx.Client(proxy="https://<token>.<host>:<port>") as client:
    print(client.get("https://api.bringyour.com/my-ip-info").json())


async def main():
    async with aiohttp.ClientSession() as session:
        async with session.get("https://api.bringyour.com/my-ip-info", proxy="https://<token>.<host>:<port>") as r:
            print(await r.json())

asyncio.run(main())

لا يستطيع معالج التنزيل الافتراضي في Scrapy جلب صفحات https:// عبر بروكسي HTTPS: إذ يتوقف برسالة «HTTPS proxies for HTTPS destinations are not supported». اجلب تلك الصفحات بإحدى المكتبات أعلاه بدلًا من ذلك.

Node.js

مع fetch، أعطِ ProxyAgent من undici بروكسي HTTPS:

js
import { fetch, ProxyAgent } from "undici";

const dispatcher = new ProxyAgent("https://<token>.<host>:<port>");
const res = await fetch("https://api.bringyour.com/my-ip-info", { dispatcher });
console.log(await res.json());

ومع node:https والمكتبات التي تقبل وكيل اتصال (agent)، استخدم https-proxy-agent، أو socks-proxy-agent لـSOCKS5:

js
import https from "node:https";
import { HttpsProxyAgent } from "https-proxy-agent";
// import { SocksProxyAgent } from "socks-proxy-agent";

const agent = new HttpsProxyAgent("https://<token>.<host>:<port>");
// const agent = new SocksProxyAgent("socks5h://<token>:x@<host>:<port>");

https.get("https://api.bringyour.com/my-ip-info", { agent }, (res) => res.pipe(process.stdout));

برامج أخرى: proxychains

على Linux، يرسل proxychains-ng اتصالات أي برنامج عبر بروكسي SOCKS5 ‏(UR Pro) حتى حين لا يكون للبرنامج إعداد بروكسي. يعمل بالتحميل المسبق لمكتبة، لذا لا يصل إلى البرامج المربوطة ربطًا ثابتًا، ومنها معظم برامج Go. ويجب أن يكون البروكسي الأول لديه عنوان IP لا اسم مضيف، لذا ابحث عن العنوان أولًا:

Shell
dig +short <host>

احفظ ملف إعدادات، urnetwork.conf، بهذا العنوان:

Text
strict_chain
proxy_dns
[ProxyList]
socks5 <ip> <port> <token> x

ثم شغّل البرامج من خلاله:

Shell
proxychains4 -f urnetwork.conf curl https://api.bringyour.com/my-ip-info

يجعل proxy_dns البرنامج proxychains يحلّ الأسماء عبر البروكسي. وإذا توقفت الاتصالات عن العمل لاحقًا، فابحث عن العنوان مجددًا.

الحدود

الفئة المجانيةUR Pro
البروكسيات النشطة51,000
البروكسيات الجديدة في الدقيقة520

تُحتسب أيضًا البروكسيات التي تنشئها إضافة المتصفح. ولا يوقف الحدّ إلا إنشاء بروكسيات جديدة: فالبروكسيات التي لديك تواصل العمل، وحذف أحدها يفسح المجال لآخر. يبقى البروكسي حتى تحذفه؛ أما البروكسي الذي يبقى دون استخدام نحو 30 يومًا فيُحذف عنك.

عناوين IP الخروج الفريدة

يوزّع البروكسي المستضاف عادةً اتصالاته على عدة مزوّدين، لذا قد يخرج اثنان من بروكسياتك من العنوان نفسه. ومع عنوان IP خروج فريد، على UR Pro، يخرج كل بروكسي عبر مزوّد واحد لا يستخدم عنوانَه أيٌّ من بروكسياتك الأخرى. ويحتفظ البروكسي بمخرجه ما دام ذلك المزوّد سليمًا.

  • التفعيل: في صفحة الوكلاء، حدّد عنوان IP خروج فريد (Unique exit IP) عند إنشاء بروكسي. واضبط عدد الوكلاء (Number of proxies) لإنشاء ما يصل إلى 20 دفعة واحدة. وفي API، أضف "unique_exit": true إلى proxy_config.
  • الحدود: تُحتسب بروكسيات المخرج الفريد ضمن الحدود نفسها التي تنطبق على أي بروكسي آخر، 1,000 نشط و20 جديدًا في الدقيقة.
  • ما تراه: يعرض كل بروكسي مكان مخرجه (المدينة والمنطقة والبلد) ومنذ متى. ولا يُعرض عنوان IP الخاص بالمخرج. ولرؤيته، اجلب فحص IP عبر البروكسي، مثلًا بأوامر curl أعلاه.
  • إذا تعطّل المزوّد: يحصل البروكسي تلقائيًا على مخرج فريد جديد، ويعرض جارٍ استبدال المخرج… (Replacing exit…) أثناء ذلك. وعمليات الاستبدال محدودة في الساعة؛ وبعد تجاوز الحد ينتظر البروكسي ويعاود المحاولة لاحقًا. وفي API، يجعل "unique_exit_replace": "manual" البروكسي ينتظرك بدلًا من ذلك: فيعرض فُقد المخرج (Exit lost) حتى تغيّره.
  • تغيير المخرج (Rotate exit): يمنح البروكسي مخرجًا فريدًا جديدًا. يمكن تغيير مخرج البروكسي مرة واحدة في الدقيقة وحتى 60 مرة في اليوم. وإذا لم يكن في الموقع مخرج فريد آخر متاح، يحتفظ البروكسي بمخرجه الحالي.
  • لا يتوفر مخرج فريد: حين تكون كل المخارج السليمة في الموقع مستخدمة من بروكسياتك الأخرى، يبلغك ur.io بذلك ولا ينشئ شيئًا؛ ولا تُحتسب المحاولة ضمن حدودك. اختر موقعًا آخر، أو الأفضل المتاح.

استكشاف الأخطاء وإصلاحها

يرفض ur.io إنشاء بروكسي. يعرض السبب (الرسائل باللغة الإنجليزية). في الفئة المجانية:

  • «Your plan's limit of 5 active proxies is reached. Remove a proxy to create another, or upgrade to UR Pro for more.» (بلغت خطتك حدّها البالغ 5 بروكسيات نشطة.) احذف البروكسيات التي لم تعد تستخدمها، أو رقِّ خطتك.
  • «Your plan allows 5 new proxies a minute. Try again in a minute, or upgrade to UR Pro for more.» (تسمح خطتك بـ5 بروكسيات جديدة في الدقيقة.) انتظر دقيقة ثم حاول مجددًا.

وعلى UR Pro، تذكر الرسائل نفسها حدود Pro وتُسقط عرض الترقية.

يرفض بروكسي SOCKS5 تسجيل الدخول. يعرض curl إحدى هذه الرسائل، وتصوغها العملاء الأخرى بطريقتها:

  • User was rejected by the SOCKS5 server (1 1). الرمز خاطئ أو مقتطع، أو حُذف البروكسي. انسخ عنوان URL من ur.io مجددًا.
  • No authentication method was acceptable. لم يرسل العميل اسم مستخدم. اجعل اسم المستخدم هو الرمز، مع كلمة مرور بديلة مثل x.

يرفض بروكسي HTTPS الاتصال. يعرض curl الرسالة CONNECT tunnel failed, response N، حيث N هو:

  • 407: لم يجد البروكسي رمزًا صالحًا. انسخ عنوان URL من ur.io مجددًا، وأدخل <token>.<host> كاملًا مضيفًا للبروكسي.
  • 502: لم يعد البروكسي موجودًا، مثلًا لأنك حذفته، أو تعذّر الوصول إلى الوجهة.
  • 403: عنوان المتصل خارج قفل IP الخاص بالبروكسي. ولا يملك هذا القفل إلا البروكسيات التي أُنشئت عبر API مع قفل IP.

العميل الذي يتلقى ردًّا فارغًا، أو اتصالًا يُغلق فورًا، يخاطب البروكسي على الأرجح بـHTTP عادي. استخدم عنوان URL الذي يبدأ بـhttps:// في عميل يدعم بروكسيات HTTPS.

الصفحات بطيئة أو تنتهي مهلتها. جرّب الأفضل المتاح، أو موقعًا فيه مزوّدون أكثر. تستهلك حركة مرور البروكسي بيانات حسابك، لذا لا يستطيع حساب نفدت بياناته فتح اتصالات جديدة.

يتغير عنوان IP الخروج. كما في التطبيقات، يوزّع البروكسي المستضاف اتصالاته على عدة مزوّدين في موقعه. وقد يتغير العنوان الذي يراه الموقع من اتصال إلى آخر. وللإبقاء على عنوان IP خروج واحد لكل بروكسي، أنشئه مع عنوان IP خروج فريد على UR Pro.

البروكسي في المكان الخطأ. قد يخرج الأفضل المتاح في أي بلد. اختر بلدًا أو منطقة أو مدينة عند إنشاء البروكسي. ولا يستطيع ur.io نقل بروكسي لديك بالفعل: أنشئ بروكسي جديدًا في المكان الذي تريده، ثم احذف القديم.

الأتمتة عبر API

تستدعي صفحة الوكلاء API المشغّل: الطلب POST /network/auth-client مع proxy_config، حيث يختار initial_device_state.location الموقع. ويحمل proxy_config_result في الرد كلًّا من https_proxy_url وsocks_proxy_url وauth_token. ولا يحتوي socks_proxy_url الذي تعيده API على اسم مستخدم: أضف auth_token اسمًا للمستخدم، كما يفعل ur.io. وتحدّ lock_ip_list المؤلفة من عناوين IP أو شبكات فرعية من يحق له استخدام البروكسي. وتنطبق الحدود أعلاه على API أيضًا.

ولعنوان IP خروج فريد، أضف unique_exit إلى proxy_config:

JSON
{
  "proxy_config": {
    "unique_exit": true,
    "initial_device_state": {
      "location": { "connect_location_id": { "best_available": true } }
    }
  }
}

أضف "unique_exit_replace": "manual" لإبقاء البروكسي على مخرجه حين يتعطل مزوّده، حتى تغيّره؛ والقيمة الافتراضية هي "auto".

يعطي proxy_config_result.exit في الرد قيم المخرج exit_id وcountry_code وregion وcity وexit_since وstate ‏(assigned أو replacing أو no_supply)، وstate_reason حين يوجد، وreplace_mode. ويبلغ GET /network/proxies عن الشيء نفسه في exit الخاص بكل بروكسي، بجانب proxy_client الخاص به. ويعني الرفض مع no_unique_supply أن الموقع لم يبقَ فيه مخرج لا تستخدمه بروكسياتك بالفعل. ويَنقل الطلب POST /network/proxy/rotate-exit مع client_id الخاص بالبروكسي البروكسيَ إلى مخرج فريد جديد ويجيب بالقيمة exit الجديدة؛ ويرفض بـrate_limited بعد تجاوز حد التغيير، أو بـno_unique_supply حين لا يتوفر مخرج آخر. ويقبل تسجيل دخول شبكتك أو مفتاح API.