חיבור סוקט TCP של Asio למאזין SOCKS5 משלים שלב אחד: חיבור ה-TCP לאותו מאזין. הוא אינו מבקש מהפרוקסי להתחבר לשרת הסופי. לבדיקה מורשית על יעד ציבורי, רשימת פרוקסי SOCKS5 מציעה מועמדים לנקודת הקצה הראשונה של TCP; המחבר עדיין חייב להשלים את החילוף שלהלן.

לאחר מכן על מחבר SOCKS5 להריץ את חילופי הפרוטוקול:

  1. לשלוח ברכת גרסה 5 המונה את שיטות האימות שהלקוח תומך בהן.
  2. לקרוא את השיטה שנבחרה ולבצע את חילופי האימות שלה כשנדרש.
  3. לשלוח CONNECT עם סוג הכתובת של היעד, הכתובת והפורט לפי סדר בתים של הרשת.
  4. לקרוא את התגובה, לבדוק את גרסתה ואת קוד התוצאה, ולצרוך את הכתובת והפורט הכרוכים המלאים באורך משתנה.
  5. למסור את הזרם שהוקם לפרוטוקול של היישום.

עזר בשם socks5::async_proxy_connect שייך למימוש SOCKS המספק את אותו עזר. אזכורו לצד boost::asio אינו הופך אותו לחלק מממשק סוקט ה-TCP של Asio.

קריאות TCP עשויות להחזיר רק חלק מהתגובה. חברו קריאות למספרי הבתים הנדרשים, ואז בחרו את האורך הנותר משדה סוג הכתובת. אל תניחו שלכל תגובת שרת יש פריסת IPv4 קבועה.

עבור HTTPS, בצעו את לחיצת היד TLS ליעד לאחר הצלחת SOCKS CONNECT, תוך שמירה על SNI ואימות שם המארח של היעד. תגובת פרוקסי מוצלחת לבדה אינה מאמתת את האתר.

שמרו על ביטול ועל מועדים לאורך כל רצף ההגדרה. אם חלוף הזמן של הקמת חיבור ה-TCP, חילופי הברכה, האימות וה-CONNECT המאוחרים יישארו בלתי מוגבלים.

מאמרים קשורים