← العودة إلى المدونة

بروكسي مع تسجيل دخول وكلمة مرور في البرنامج بدون مصادقة: بوابة محلية على gost و3proxy وSquid وproxychains

البرنامج يطلب فقط العنوان والمنفذ، ولكن البروكسي لديه تسجيل دخول وكلمة مرور؟ قم بإنشاء بوابة محلية: gost بأمر واحد، 3proxy مع منفذ لكل ملف تعريف، Squid مع سجل أو proxychains-ng للبرامج التي لا تدعم البروكسي. الأوامر، التكوينات والأخطاء التي تؤدي إلى تسرب عنوان IP الحقيقي.

📅٣٠ ربيع الآخر ١٤٤٨ هـ
بروكسي مع تسجيل دخول وكلمة مرور في البرنامج بدون مصادقة: بوابة محلية على gost و3proxy وSquid وproxychains

لقد اشتريت بروكسي، وتلقيت سلسلة على شكل login:password@host:port، لكن البرنامج يطلب فقط "العنوان والمنفذ". موقف مألوف: Chrome مع العلم --proxy-server، إعدادات نظام Windows وAndroid، محلل قديم، Selenium-grid، أداة بدون حقل كلمة مرور. الحل هو نفسه منذ سنوات عديدة - بوابة محلية: بروكسي صغير على جهازك الخاص، يستقبل الاتصالات بدون كلمة مرور ويقوم تلقائيًا بإدخال اسم المستخدم عند الاتصال بالبروكسي الحقيقي. سنستعرض أربع أدوات موثوقة، أوامر لكل منها والأخطاء التي عادة ما تضيع الوقت والمال.

لماذا لا "تفهم" البرامج البروكسي مع كلمة المرور

هناك طريقتان للمصادقة مع مزود البروكسي: باستخدام اسم المستخدم وكلمة المرور (Basic Auth) أو من خلال قائمة بيضاء من عناوين IP. الخيار الثاني يحل المشكلة، لكنه يعمل فقط إذا كان لديك عنوان IP خارجي ثابت - غالبًا ما يكون مفقودًا في الإنترنت المنزلي والشبكات المحمولة، ويتغير في الوظائف السحابية مع كل تشغيل. لقد قارنّا بالتفصيل كلا الطريقتين في دليل مصادقة البروكسي.

عند استخدام اسم المستخدم وكلمة المرور، نواجه قيود البرامج نفسها:

  • Chrome وChromium. العلم --proxy-server وفقًا لوثائق Chromium يقبل المخطط، المضيف والمنفذ (على سبيل المثال، --proxy-server="foopy:8080") - لا توجد حقول لبيانات الاعتماد في هذا التركيب. في نافذة المتصفح العادية، سيظهر مربع حوار كلمة المرور، لكن في وضع headless وفي الاختبارات الآلية، لا يوجد من يملأه.
  • إعدادات النظام. في إعداد البروكسي اليدوي في Windows وفي إعدادات Wi-Fi في معظم إصدارات Android، يوجد فقط المضيف والمنفذ. إما أن تطلب كلمة المرور من تطبيق معين، أو لا يمكنك إدخالها في أي مكان.
  • برامج قديمة ومخصصة. العديد من الأدوات والمكتبات تدعم البروكسي، ولكن بدون مصادقة، أو تتعطل عند وجود رموز خاصة في كلمة المرور.
  • برامج بدون دعم للبروكسي على الإطلاق. أدوات سطر الأوامر التي لا تقرأ أي متغيرات بيئية، ولا إعدادات.

تغلق البوابة المحلية جميع الحالات الأربعة: ترى البرنامج البروكسي 127.0.0.1:8080 بدون كلمة مرور، بينما تقوم البوابة بإعادة توجيه حركة المرور إلى المزود مع اسم المستخدم.

كيف تعمل الخطة

  1. يتم تشغيل خادم بروكسي خفيف على جهازك (أو VPS حيث يعمل المحلل) ويستمع إلى المنفذ المحلي، على سبيل المثال 127.0.0.1:8080.
  2. في تكوين البوابة، يتم إدخال البروكسي "الأب" (upstream) - عنوان المزود، اسم المستخدم وكلمة المرور.
  3. يتصل البرنامج بالمنفذ المحلي بدون مصادقة.
  4. تفتح البوابة اتصالًا بالمزود، تمر بالمصادقة وتعيد توجيه حركة المرور إلى الأمام. بالنسبة للموقع، تبدو كعنوان IP الخاص بالمزود، وليس عنوانك.

لا يتم فك تشفير HTTPS: من خلال بروكسي HTTP، يقوم المتصفح بإنشاء نفق باستخدام طريقة CONNECT، وتقوم البوابة ببساطة بتمرير البايتات المشفرة.

الخيار 1: gost - أمر واحد، بدون تكوينات

gost (GO Simple Tunnel) - ملف تنفيذي واحد على Go لنظامي Windows وmacOS وLinux. هذه هي أسرع طريقة لإنشاء بوابة. في gost، العلم -L يحدد الخدمة المحلية، و-F - العقدة التي سيتم من خلالها إعادة توجيه حركة المرور. يتم إدخال بيانات الاعتماد مباشرة في عنوان العقدة:

gost -L http://127.0.0.1:8080 -F socks5://LOGIN:PASSWORD@HOST:PORT

الآن يمكن لأي برنامج استخدام بروكسي HTTP 127.0.0.1:8080 بدون كلمة مرور. إذا كانت كلمة المرور تحتوي على رموز خاصة (@, :, #)، تقترح وثائق gost تمريرها من خلال معلمة auth في base64:

echo -n LOGIN:PASSWORD | base64
gost -L http://127.0.0.1:8080 -F socks5://HOST:PORT?auth=<نتيجة_base64>

يرجى ملاحظة: إذا تم تعيين auth، فإن اسم المستخدم وكلمة المرور المدخلة مباشرة في العنوان، يتجاهلها gost. عدة أعلام -F متتالية تشكل سلسلة من عدة بروكسي.

متى تستخدم: تحتاج إلى "توافق" سريع بين متصفح واحد أو سكربت مع البروكسي، بدون تثبيت حزم وتعديل التكوينات.

الخيار 2: 3proxy - العديد من المنافذ على جهاز واحد

3proxy - خادم بروكسي مدمج مع تكوين في ملف واحد. التوجيه الرئيسي هو parent؛ وفقًا للوثائق، تركيبها هو: parent <weight> <type> <ip> <port> <username> <password>، ويجب أن تأتي بعد قاعدة allow. الحد الأدنى لتكوين البوابة:

auth iponly
allow * 127.0.0.1
parent 1000 http HOST PORT LOGIN PASSWORD
proxy -p8080 -i127.0.0.1

ما هو مهم هنا:

  • auth iponly - بدون كلمة مرور، ولكن مع التحقق من ACL؛ القاعدة allow * 127.0.0.1 تسمح فقط بالاتصالات المحلية.
  • الوزن 1000 يعني "دائمًا من خلال هذا الأب". تستخدم 3proxy الأوزان الأقل من 1000 لجمع سلاسل عشوائية.
  • نوع الأب: http، connect، socks4، socks5 وغيرها - اختر البروتوكول الذي قدمه المزود.
  • -i127.0.0.1 يربط الخدمة بالواجهة المحلية. بشكل افتراضي، تقبل 3proxy الاتصالات على جميع الواجهات.

طريقة مريحة: تكرار كتلة allow / parent / proxy عدة مرات مع منافذ مختلفة وحسابات مختلفة للمزود. هكذا نحصل على "المنفذ = بروكسي منفصل": 127.0.0.1:8081 - الولايات المتحدة، :8082 - ألمانيا وهكذا. هذا التنسيق يفهمه تقريبًا أي برنامج، بما في ذلك تلك التي يتم إدخال البروكسي فيها كقائمة "مضيف:منفذ".

متى تستخدم: عشرات الملفات الشخصية أو التدفقات، كل منها يحتاج إلى مخرج خاص به.

الخيار 3: Squid - إذا كنت بحاجة إلى التخزين المؤقت والسجلات

Squid أثقل، لكنه يوفر التخزين المؤقت، سجلات مفصلة وACL مرنة. يتم إدخال المزود كعقدة رئيسية من خلال cache_peer، وتمنع التوجيه never_direct allow all Squid من الوصول إلى الإنترنت مباشرة دون المرور بالأب:

http_port 127.0.0.1:3128
cache_peer HOST parent PORT 0 no-query default login=LOGIN:PASSWORD
never_direct allow all

نقاط مهمة من وثائق Squid:

  • يتم تعيين منفذ ICP إلى 0 إذا لم يدعمه الأب - لا يوجد ذلك في البروكسي التجارية.
  • في login=، يُسمح بتسلسلات URL-escape (على سبيل المثال، %20 للمسافة)، لذلك يجب كتابة الرمز % في كلمة المرور كـ %%.
  • بدون never_direct، قد يقرر Squid أنه من الأفضل الذهاب مباشرة إلى الموقع - وسيتم إرسال الطلب بعنوان IP الحقيقي الخاص بك. بالنسبة لجمع البيانات واستخدام حسابات متعددة، هذا هو أسوأ سيناريو.

متى تستخدم: مكتب أو فريق يحتاج إلى سجل، من ذهب إلى أين، أو طلبات متكررة لنفس الموارد.

الخيار 4: proxychains-ng - للبرامج التي لا تدعم البروكسي

إذا كانت البرنامج لا تدعم البروكسي على الإطلاق، فإن proxychains-ng (Linux وmacOS) سيساعد. يقوم باعتراض استدعاءات الشبكة للبرنامج ويقوم بتغليف اتصالات TCP الخاصة به في بروكسي. تدعم SOCKS4a وSOCKS5 وHTTP، والمصادقة - اسم المستخدم وكلمة المرور لـ SOCKS وBasic لـ HTTP. السطر في قسم [ProxyList] له تنسيق النوع ip المنفذ [اسم المستخدم كلمة المرور]:

strict_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
http HOST PORT LOGIN PASSWORD

التشغيل: proxychains4 curl https://api.ipify.org - في الرد سيكون عنوان IP الخاص بالمزود، وليس عنوانك.

  • strict_chain - يتم استخدام جميع البروكسي في القائمة بالترتيب، وإذا كان أحدها غير متاح، فلن يكون هناك اتصال. أكثر أمانًا من dynamic_chain، الذي يتجاوز العقد الميتة.
  • proxy_dns - تذهب طلبات DNS أيضًا عبر البروكسي. بدون ذلك، يرى مزود الإنترنت الخاص بك أي المجالات التي تطلبها، وقد يلاحظ الموقع عدم تطابق الموقع الجغرافي لـ DNS وIP.
  • يتم البحث عن التكوين بالترتيب: ملف من -f أو المتغير PROXYCHAINS_CONF_FILE، ثم ./proxychains.conf، ~/.proxychains/proxychains.conf و/etc/proxychains.conf.

القيود التي يذكرها المؤلفون أنفسهم: فقط TCP (لا يتم تمرير UDP وICMP)، قد تحدث أعطال في البرامج التي تولد العديد من العمليات، وعلى macOS، لا يسمح حماية SIP باعتراض البرامج النظامية.

أي أداة تختار: ورقة غش قصيرة

  • متصفح واحد أو سكربت، تحتاجه "الآن" - gost.
  • العديد من الملفات الشخصية، لكل منها IP أو دولة خاصة بها - 3proxy مع منفذ منفصل لكل حساب.
  • فريق، سجل الطلبات، تخزين مؤقت - Squid.
  • برنامج بدون إعدادات بروكسي على الإطلاق - proxychains-ng.

خمسة أخطاء تكلف أكثر من غيرها

  1. تستمع البوابة إلى جميع الواجهات. قمت بتشغيل gost مع -L http://:8080 على VPS - وحصلت على بروكسي مفتوح للإنترنت كله على جيجابايتك. تجد الماسحات البروكسي المفتوحة بسرعة. دائمًا حدد 127.0.0.1، وإذا كانت البوابة تستخدمها أجهزة أخرى - أغلق المنفذ بجدار الحماية. لقد كتبنا عن كيفية العثور على البوابات المفتوحة بسرعة بواسطة شبكات الروبوت في تحليل دودة CARBONATO.
  2. تسرب عبر البوابة. Squid بدون never_direct، proxychains بدون proxy_dns، متصفح يتصل مباشرة عبر WebRTC/UDP - كل هذا يكشف عنوان IP الحقيقي. تحقق من النتيجة على خدمة تحديد IP واختبار تسرب DNS.
  3. بوابة واحدة لجميع الحسابات. إذا كانت 30 ملفًا شخصيًا مضادة للكشف تتصل بنفس المنفذ بنفس الجلسة الثابتة، سيكون لدى الجميع نفس IP - هذه هي الطريقة المباشرة لربط الحسابات. وزع الملفات الشخصية عبر المنافذ أو استخدم معلمات جلسة المزود.
  4. رموز خاصة في كلمة المرور. @ و: تكسر تحليل العناوين على شكل login:pass@host. استخدم معلمة base64 في gost، أو الهروب في Squid أو قم بإنشاء كلمة مرور بدون رموز خاصة.
  5. البوابة - خطوة إضافية ونقطة فشل. على الجهاز المحلي، التأخير يكاد يكون صفرًا، لكن إذا كانت البوابة موجودة في مركز بيانات آخر، يتم إضافة تأخير شبكي لكل طلب. احتفظ بالبوابة بالقرب من البرنامج وقم بإعداد التشغيل التلقائي (systemd، خدمة Windows)، وإلا بعد إعادة تشغيل الخادم، سيذهب المحلل بهدوء إلى لا شيء.

ما البروكسي الذي يجب وضعه خلف البوابة

لا تهتم البوابة بنوع البروكسي الموجود خلفها - يعتمد الاختيار على المهمة:

  • بروكسي سكنية - لجمع البيانات من المواقع المحمية، والأسواق وملفات التعريف المضادة للكشف: عناوين IP لمستخدمي المنازل تثير شكوكًا أقل لدى مضادات الروبوتات.
  • بروكسي موبايل - لوسائل التواصل الاجتماعي والتطبيقات، حيث يكون التحقق أكثر صرامة: عادة ما يخرج العديد من المشتركين الحقيقيين من نفس IP لمزود الهاتف المحمول (عبر CGNAT)، وحظرها يعد مخاطرة بالنسبة للمنصة نفسها.
  • بروكسي مراكز البيانات - للمهام الكبيرة بدون حماية صارمة: اختبارات التوفر، API، اختبارات. الأرخص لكل جيجابايت.

إذا كان البروكسي مع تدوير، فإن منطق تغيير IP عادة ما يحدده المزود - من خلال المعلمات في اسم المستخدم أو الإعدادات في الحساب. لا تكسر البوابة ذلك: إنها تمرر اسم المستخدم كما هو. لذلك من الملائم إنشاء عدة منافذ مع معلمات جلسات مختلفة - واحد مع IP جديد لكل طلب، وآخر مع IP ثابت لمدة 30 دقيقة.

النتيجة

البروكسي مع اسم المستخدم وكلمة المرور مناسب لأي برنامج، إذا وضعت بوابة محلية بينهما. يحل gost المشكلة بأمر واحد، و3proxy مريح لـ "المنفذ = ملف شخصي"، وSquid - للفرق مع السجل، بينما يربط proxychains-ng حتى البرامج التي لا تعرف شيئًا عن البروكسي. القواعد الرئيسية: الاستماع فقط إلى 127.0.0.1، ومنع الاتصالات المباشرة لتجاوز الأب والتحقق من أن الموقع يرى IP المزود، وليس IP الخاص بك.