نحوه رفع خطای 407 Proxy Authentication Required
Updated:
خطای 407 خبر بهتری از ظاهرش است: دستگاه شما به پروکسی متصل شده و مسیر شبکه باز است. پروکسی صرفاً اعلام میکند که نام کاربری و رمز عبور معتبری دریافت نکرده است. به همین دلیل تقریباً همه خطاهای 407 در بخش اطلاعات ورود حل میشوند، نه در روتر یا فایروال شما.
دلایل بروز خطای 407 به ترتیب احتمال
- نام کاربری یا رمز عبور اشتباه یا وارد نشده. یک کاراکتر اشتباه تایپشده، یا فاصله اضافی (space) که همراه با رمز عبور کپی شده است. این مورد علت اکثر گزارشهای 407 است.
- چسباندن فیلدها در کادرهای اشتباه. کل خط
ip:port:user:passدر کادر Host قرار میگیرد، یا نام کاربری در کادر رمز عبور وارد میشود. برخی ابزارها این چهار فیلد را بهطور خودکار تفکیک میکنند، اما برخی دیگر این کار را انجام نمیدهند. - برنامه اصلاً اطلاعات ورود را ارسال نمیکند. تنظیمات پروکسی سیستمعامل فقط آدرس و پورت را ذخیره میکند. برنامههایی که کادری برای درخواست رمز عبور باز نمیکنند، بدون هدر احراز هویت متصل شده و خطای 407 دریافت میکنند.
- کاراکترهای خاص درون URL پروکسی. در ساختار
http://user:pass@host:port، کاراکترهایی مانند@،:یا#در رمز عبور باید percent-encoded شوند (@به%40تبدیل میشود)، در غیر این صورت رشته در جای اشتباهی تفکیک میشود.
خطای 407 در عمل چگونه دیده میشود
ما این خطا را روی یک پروکسی آزمایشی بازتولید کردیم که در اینجا با آدرس مستنداتی 203.0.113.10:8080 و اطلاعات ورود عمداً اشتباه user123:pass456 نشان داده شده است. در برابر یک سایت HTTPS، دستور curl -x http://user123:[email protected]:8080 https://example.com پیام curl: (56) CONNECT tunnel failed, response 407 را چاپ میکند. در برابر یک سایت معمولی HTTP با -w %{http_code}، برنامه curl تنها 407 را چاپ میکند.
فلگ -v را اضافه کنید تا ببینید آیا اصلاً اطلاعات ورود ارسال شده است یا خیر. خروجی لاگ عبارت > CONNECT example.com:443 HTTP/1.1، سپس > Proxy-Authorization: Basic ... و فقط پس از آن خطای 407 را نشان میدهد. اگر خط Proxy-Authorization وجود نداشته باشد، کلاینت شما هرگز اطلاعات ورود را ارسال نکرده است.
ابزار proxy checker متعلق به VinaProxy همین وضعیت را بهصورت auth failed (407) گزارش میدهد. مرورگر Headless Chrome که هیچ کادر ورود مشخصی ندارد، آن را بهصورت ERR_TUNNEL_CONNECTION_FAILED نمایش میدهد؛ tunnel error page را ببینید.
راهحلها به تفکیک محیط کاربری
- ویندوز و Chrome: مرورگر Chrome از تنظیمات پروکسی Windows پیروی میکند (Settings > Network & Internet > Proxy) که فقط آدرس و پورت را نگه میدارد. هنگام بارگذاری اولین صفحه، Chrome یک کادر ورود برای نام کاربری و رمز عبور پروکسی باز میکند. اگر آن را اشتباه تایپ کردهاید و کادر دوباره باز نمیشود، تمام پنجرههای Chrome را ببندید و مجدداً باز کنید.
- مرورگرهای آنتیدتکت (AdsPower, GoLogin, GenLogin): مقادیر Host، Port، Username و Password را در فیلدهای جداگانه نگه دارید. فیلد رمز عبور را کاملاً پاک کرده و بهجای ویرایش، دوباره جایگذاری کنید. راهنمای فیلد به فیلد در GoLogin setup guide قرار دارد.
- گوشیهای موبایل: در iPhone یک گزینه Authentication در مسیر Settings > Wi-Fi > (i) > Configure Proxy وجود دارد؛ خاموش بودن آن خطای 407 ایجاد میکند. Android معمولاً فقط میزبان و پورت را قبول میکند، بنابراین برنامههایی که نیاز به لاگین دارند ممکن است بهجای آن یک خطای اتصال عمومی نشان دهند.
- curl: آرگومان
-U "user:pass"را بهصورت جداگانه ارسال کنید نه اینکه آن را در URL قرار دهید؛ این کار مانع از بروز مشکلات کاراکترهای خاص میشود. - پایتون requests: مقدار
http://user:pass@host:portرا برای هر دو کلیدhttpوhttpsدر دیکشنریproxiesتنظیم کنید و پسوردهای دارای کاراکتر خاص را باurllib.parse.quoteانکود نمایید.
اطلاعات ورود درست است اما خطای 407 باقی میماند
در مرحله بعد پروتکلها را بررسی کنید. VinaProxy پروکسیهای HTTP(S) با ورود user:pass و همچنین SOCKS5 ارائه میدهد، بنابراین پروتکلی را انتخاب کنید که در سفارش شما در داشبورد آمده است. اگر ابزار بررسی پیام not socks5 را برگرداند، آن پورت با پروتکل HTTP کار میکند و نباید روی SOCKS5 تنظیم شود.
گام به گام
- 1
کپی کردن خط پروکسی از داشبورد
سفارش را در داشبورد VinaProxy خود باز کرده و کل خط را بهجای تایپ کردن کپی کنید.
- 2
بررسی با ابزار چک پروکسی
آن را در proxy checker جایگذاری کنید. نتیجه
auth failed (407)نشان میدهد که مشکل از اطلاعات ورود است، نه از شبکه. - 3
وارد کردن دوباره و تمیز نام کاربری و رمز عبور
هر دو فیلد را در نرمافزار خود پاک کرده و بدون هیچ فاصله اضافی در ابتدا یا انتها مجدداً جایگذاری کنید.
- 4
تطبیق پروتکل با مشخصات سفارش
نوع پروکسی را دقیقاً مطابق با سفارش روی HTTP یا SOCKS5 قرار دهید و سپس ذخیره کنید.
- 5
بررسی با curl -v در صورت ادامه مشکل
دستور
curl -vرا با مقادیر واقعی خود اجرا کنید و وجود خطProxy-Authorizationرا قبل از 407 بررسی نمایید.
پرسشهای متداول
آیا خطای 407 به دلیل مسدود شدن پروکسی توسط ISP من است؟
خیر. خطای 407 توسط خود پروکسی ارسال میشود، بنابراین اتصال به پروکسی برقرار شده است. مسیر مسدودشده معمولاً بهصورت timeout یا خطای رد اتصال ظاهر میشود؛ proxy timeout را ببینید.
چرا Chrome مدام اطلاعات ورود پروکسی را درخواست میکند؟
هر ورود اشتباه منجر به خطای 407 جدید میشود و Chrome دوباره درخواست میکند. کلید Caps Lock را بررسی کنید و مطمئن شوید کیبورد ویتنامی یا زبان ورودی دیگری علائم ناخواسته به رمز عبور اضافه نکرده باشد.
چگونه رمز عبوری را که شامل @ است در URL پروکسی قرار دهم؟
آن را انکود کنید: @ بهصورت %40، : بهصورت %3A و # بهصورت %23. در curl، فلگ -U نیاز به انکود کردن را کاملاً برطرف میکند.
برنامههای Selenium یا Puppeteer به جای 407 خطای tunnel نشان میدهند. آیا همان مشکل است؟
معمولاً بله. مرورگر Headless Chrome نمیتواند پنجره ورود را نشان دهد، بنابراین خطای 407 بهصورت ERR_TUNNEL_CONNECTION_FAILED ظاهر میشود. اطلاعات ورود را از طریق سازوکار احراز هویت همان کتابخانه ارسال کنید، همانطور که در Selenium guide آمده است.
پروکسیهای اختصاصی با مشخصات ورود دقیق
با هر سفارش در VinaProxy یک خط آماده ip:port:user:pass دریافت میکنید تا فقط یکبار کپی کرده و در هر جایی جایگذاری کنید.
مشاهده قیمت پروکسیها