בתוך אתחול ה-libcurl הקיים של היישום ומחזור החיים של easy-handle:

curl_easy_setopt(handle, CURLOPT_URL, "https://example.com/");
curl_easy_setopt(handle, CURLOPT_PROXY, "127.0.0.1:1080");
curl_easy_setopt(handle, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);
curl_easy_setopt(handle, CURLOPT_NOPROXY, "");
curl_easy_setopt(handle, CURLOPT_CONNECTTIMEOUT, 5L);
curl_easy_setopt(handle, CURLOPT_TIMEOUT, 15L);

CURLPROXY_SOCKS5_HOSTNAME שולח את שם המארח של היעד לאורך נתיב SOCKS. CURLPROXY_SOCKS5 במקום זאת פותר אותו בצד הלקוח, שעשוי להשתמש בתצוגת DNS של רשת אחרת. לקוח HTTP ב-C++ שמשתמש ב-libcurl אינו זקוק ללחיצת יד SOCKS משלו רק כדי לבחור במסלול הזה. עבור נקודת קצה ציבורית מורשית, רשימת ה-proxy של SOCKS5 מציעה מועמדים של מארח ופורט כדי להחליף את מאזין ה-loopback להמחשה.

הערך CURLOPT_NOPROXY הריק הופך את בדיקת ה-proxy למכוונת. שמרו על עקיפות מיועדות בעת התאמתו למדיניות הרגילה של היישום. אפשרויות אלה משפיעות על ה-handle הזה; ספריות ושקעים אחרים בתהליך אינם יורשים אותן.

בדקו את ערכי ההחזרה של הגדרת האפשרויות ושל ההעברה דרך טיפול השגיאות של היישום. כשל בהגעה ל-SOCKS או במשא ומתן איתו יכול להתרחש לפני כל תגובת HTTP, ולכן אינו מספק קוד סטטוס של אתר.

פרטי ה-proxy הנדרשים משתמשים בהגדרות אימות ה-proxy הנתמכות ובמנגנון הסודות, בנפרד מההתחברות לאתר. השאירו את אימות TLS פעיל: פתיחת חיבור דרך SOCKS אינה מבססת את זהות שירות ה-HTTPS.

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