رفع خطای ERR_TIMED_OUT در گوشی و مرورگر: علت و راهحل
خطای ERR_TIMED_OUT یعنی جوابی در زمان مقرر نرسید. با این آزمونهای قدمبهقدم بفهمید مشکل از شبکه شما، فیلترشکن، DNS یا خود سایت است، بدون اینکه سرور داشته باشید.
خطای ERR_TIMED_OUT یعنی چه؟
خطای ERR_TIMED_OUT یعنی مرورگر یا برنامه شما منتظر جواب ماند و در زمان تعیینشده جوابی نرسید. خود خطا نمیگوید مشکل کجاست. ایراد ممکن است در Wi-Fi شما باشد، در فیلترشکن، در DNS یا در خود سایت. راه پیدا کردن علت، چند آزمون ساده است که هر کدام یک احتمال را کنار میگذارد.
این راهنما برای کسی است که سرور ندارد. شما فقط یک سایت یا برنامه را باز کردهاید و این پیام را دیدهاید. آزمونها از ساده به سخت مرتب شدهاند، پس آنها را به همین ترتیب انجام دهید و نتیجه هر کدام را یادداشت کنید.
فرق ERR_TIMED_OUT و ERR_CONNECTION_TIMED_OUT در کروم
کروم و مرورگرهای دیگری که بر پایه Chromium ساخته شدهاند، فهرست کدهای خطای شبکه را در فایلی به نام net_error_list.h نگه میدارند. دو کدی که اینجا مهماند اینها هستند:
ERR_TIMED_OUTبا شماره-7. توضیح Chromium برای آن کلی است: «یک عملیات بیش از حد طول کشید» (An operation timed out). تعریف نمیگوید کدام عملیات.ERR_CONNECTION_TIMED_OUTبا شماره-118. توضیح آن دقیقتر است: «تلاش برای برقراری اتصال بیش از حد طول کشید» (A connection attempt timed out).
پس این دو کد میتوانند به دو مرحله متفاوت اشاره کنند. کد -118 یعنی مرورگر هنوز نتوانسته بود با سرور اتصال برقرار کند. کد -7 به مرحله اتصال محدود نیست، پس تأخیر ممکن است در مرحله دیگری بوده باشد. Chromium برای مرحله DNS هم کد جداگانهای دارد: DNS_TIMED_OUT با شماره -803 و توضیح «تراکنش DNS بیش از حد طول کشید». DNS (سامانه نام دامنه) همان بخشی است که نام سایت را به نشانی IP تبدیل میکند.
یک نکته را هم بدانید: این فایل مدت زمان انتظار را برای هیچکدام از این کدها مشخص نمیکند. پس به عدد ثابتی تکیه نکنید. مهم این است که جوابی نرسید، نه اینکه دقیقاً چند ثانیه گذشت.
خطاهای همسایه که چیز دیگری میگویند
چند کد دیگر در همان فایل شبیه به نظر میرسند، اما معنای دیگری دارند. فرق آنها کمک میکند علت را زودتر پیدا کنید:
ERR_NAME_NOT_RESOLVED(-105): نام سایت به نشانی IP تبدیل نشد. مشکل در مرحله DNS است.ERR_CONNECTION_REFUSED(-102): تلاش برای اتصال رد شد. یعنی جوابی آمد، و آن جواب «نه» بود.ERR_CONNECTION_RESET(-101): اتصال قطع شد. Chromium آن را معادل یک بسته TCP RST میداند.ERR_INTERNET_DISCONNECTED(-106): اتصال اینترنت دستگاه قطع شده است.
در خطای timeout هیچ جوابی در زمان مقرر نرسیده است. به همین دلیل این خطا از بقیه مبهمتر است و آزمون بیشتری لازم دارد. فرق را اینطور به خاطر بسپارید: رد شدن اتصال یعنی سرور یا چیزی سر راه جواب داده است، و تمام شدن زمان یعنی سکوت.
چرا صفحه خطای کروم برای هر دو کد یکسان است؟
در کد منبع صفحه خطای کروم (localized_error.cc)، این دو کد دو ردیف جدا دارند، اما محتوای هر دو ردیف یکی است. عنوان صفحه یکی است، متن خلاصه یکی است، پیشنهادها یکی است و هر دو دکمه بارگذاری دوباره (Reload) دارند. پس از روی ظاهر صفحه نمیتوانید بفهمید کدام خطا رخ داده است. فقط کد کوچکی که پایین صفحه نوشته شده فرق را نشان میدهد.
صفحه راهنمای کروم هم این دو خطا را کنار هم آورده و جدا نکرده است. توضیح آن تقریباً این است: صفحه برای اتصال بیش از حد طول کشید، شاید اینترنت شما خیلی کند است یا سایت خیلی شلوغ است. این توضیح درست است، اما فقط دو احتمال از چند احتمال را میگوید.
پیشنهادهای «بررسی اتصال» و «پروکسی و فایروال» یعنی چه؟
کد منبع کروم برای هر دو خطا این نوع پیشنهادها را فعال میکند: بررسی اتصال، بررسی فایروال، بررسی پروکسی، ابزار عیبیابی، و ورود به شبکه. متن دقیق هر پیشنهاد به نسخه و زبان کروم شما بستگی دارد، پس متن صفحه خودتان را بخوانید. معنای هر کدام این است:
- بررسی اتصال: آیا دستگاه اصلاً به Wi-Fi یا کابل شبکه وصل است؟ راهنمای کروم پیشنهاد میکند مودم و روتر را دوباره راهاندازی کنید و اگر مشکل ماند، با شرکت اینترنت تماس بگیرید.
- بررسی پروکسی: پروکسی یک واسطه است که درخواستهای مرورگر اول به آن میرود. اگر در تنظیمات سیستم یا مرورگر پروکسی تنظیم شده و آن واسطه کار نمیکند، سایت هم باز نمیشود. اگر قبلاً برنامه فیلترشکن یا پروکسی نصب کردهاید، تنظیمات پروکسی سیستم را یک بار نگاه کنید.
- بررسی فایروال: فایروال برنامهای است که اتصالها را اجازه میدهد یا میبندد. راهنمای کروم میگوید مطمئن شوید فایروال یا آنتیویروس اتصال شما را مسدود نکرده است.
- ابزار عیبیابی: این پیشنهاد فقط در کروم ویندوز، macOS و ChromeOS ساخته میشود. در کروم اندروید آن را نمیبینید.
- ورود به شبکه: بعضی Wi-Fiها، مثل شبکه هتل یا دانشگاه، اول یک صفحه ورود نشان میدهند. این پیشنهاد فقط وقتی دیده میشود که کروم چنین صفحهای را تشخیص دهد. اگر آن را دیدید، اول وارد شبکه شوید و بعد سایت را دوباره باز کنید.
اول بپرسید: سایت از کار افتاده یا شبکه من به آن نمیرسد؟
همه آزمونهای بعدی به یک سؤال جواب میدهند. آیا سایت برای همه از کار افتاده است، یا فقط از شبکه شما در دسترس نیست؟ این دو مشکل راهحل کاملاً متفاوتی دارند. اگر سایت از کار افتاده، شما کاری نمیتوانید بکنید و باید صبر کنید. اگر مسیر شبکه شما مشکل دارد، تغییر شبکه، DNS یا فیلترشکن میتواند آن را حل کند.
برای جواب دادن، در هر آزمون فقط یک چیز را تغییر دهید و بقیه را ثابت نگه دارید. اگر همزمان شبکه و فیلترشکن را عوض کنید و سایت باز شود، نمیدانید کدام تغییر کار را درست کرد.
آزمونهای رفع ERR_TIMED_OUT به ترتیب
۱. سایت را روی دستگاه دیگری در همان شبکه باز کنید
اگر سایت روی گوشی باز نمیشود اما روی لپتاپ در همان Wi-Fi باز میشود، مشکل در دستگاه اول است، یعنی در تنظیمات یا برنامههای آن. اگر روی هیچ دستگاهی در این شبکه باز نمیشود، مشکل در شبکه یا خود سایت است. یک سایت دیگر را هم امتحان کنید. اگر هیچ سایتی باز نمیشود، مشکل اصلاً به این سایت ربطی ندارد و اتصال شما قطع است.
۲. بین Wi-Fi و دیتای موبایل جابهجا شوید
Wi-Fi را خاموش کنید و همان صفحه را با اینترنت همراه باز کنید. بعد برعکس. این دو اتصال معمولاً از دو شرکت متفاوت میآیند و مسیر متفاوتی تا سایت دارند. اگر سایت فقط روی یکی باز میشود، سایت سالم است و مشکل در مسیر آن یک شبکه است. در این حالت پاک کردن دادههای مرورگر کمکی نمیکند، چون همان مرورگر روی شبکه دیگر کار کرد.
۳. یک بار با فیلترشکن و یک بار بدون آن امتحان کنید
فیلترشکن (VPN) همه یا بخشی از ترافیک شما را از یک سرور دیگر عبور میدهد. پس با روشن و خاموش کردن آن، در واقع از دو مسیر متفاوت به سایت میرسید. نتیجه را اینطور بخوانید:
- با فیلترشکن باز میشود و بدون آن نه: سایت سالم است، اما مسیر مستقیم شبکه شما به آن نمیرسد.
- بدون فیلترشکن باز میشود و با آن نه: مشکل در سرور فیلترشکن یا تنظیمات آن است. سرور دیگری از همان برنامه را امتحان کنید.
- در هر دو حالت باز نمیشود: یا سایت از کار افتاده، یا مشکل در دستگاه شماست. آزمونهای بعدی را ادامه دهید.
اگر فیلترشکن شما WireGuard است و با روشن بودن آن نام سایتها پیدا نمیشود، راهنمای رفع مشکل DNS در تونل WireGuard را ببینید. اگر بعضی سایتها باز میشوند اما صفحههای سنگین نیمهکاره میمانند، راهنمای سرعت پایین WireGuard و تنظیم MTU به کارتان میآید.
۴. Private DNS اندروید را موقتاً تغییر دهید
در اندروید، Private DNS از مسیر Settings > Network & internet > Private DNS در دسترس است. در گوشیهایی که زبانشان فارسی است نام منوها ترجمه شده است و بعضی سازندهها منو را جای دیگری گذاشتهاند. اگر آن را پیدا نکردید، در تنظیمات عبارت Private DNS را جستجو کنید. این تنظیم سه گزینه دارد: Off (خاموش)، Automatic (خودکار)، و وارد کردن نام میزبان یک ارائهدهنده Private DNS.
طبق راهنمای اندروید، دستگاه بهطور پیشفرض با هر شبکهای که از Private DNS پشتیبانی کند، از آن استفاده میکند. اگر قبلاً نام یک ارائهدهنده را دستی وارد کردهاید و آن سرور از شبکه شما در دسترس نیست، تبدیل نام سایتها به IP ممکن است گیر کند. برای آزمون، گزینه را یک بار روی Off و یک بار روی Automatic بگذارید و هر بار صفحه را دوباره باز کنید. بعد از آزمون، تنظیم را به حالتی که میخواهید برگردانید. گوگل توصیه میکند Private DNS روشن بماند.
اگر نمیدانید Private DNS دقیقاً چه کاری میکند، راهنمای Private DNS چیست آن را ساده توضیح میدهد. برای تصمیم درباره حالت دائمی هم اینکه Private DNS را روشن بگذارید یا خاموش را بخوانید.
۵. کش DNS و دادههای سایت را در مرورگر پاک کنید
مرورگر جوابهای DNS و دادههای سایتها را نگه میدارد تا دفعه بعد سریعتر باشد. اگر این دادهها کهنه یا خراب باشند، مرورگر ممکن است به نشانی قدیمی برود. راهنمای کروم هم پاک کردن تاریخچه، کوکیها و کش را جزو قدمهای رفع خطاهای بارگذاری آورده است.
در کروم اندروید این کار را انجام دهید:
- منوی سهنقطه (More) را باز کنید و Delete browsing data را بزنید.
- بازه زمانی را انتخاب کنید. بازه پیشفرض ۱۵ دقیقه است، پس اگر مشکل از قبل بوده، بازه بلندتری بگذارید.
- در More options، گزینههای Cookies and site data و Cached images and files را انتخاب کنید و پاک کنید.
بدانید که پاک کردن کوکیها شما را از سایتها خارج میکند. پس رمزهای خود را دم دست داشته باشید.
در کروم دسکتاپ، صفحه داخلی chrome://net-internals در کد منبع کروم هنوز یک فرمان برای پاک کردن کش DNS مرورگر دارد. این نشانی را در نوار آدرس باز کنید و دنبال بخش DNS و دکمه پاک کردن کش میزبان (host cache) بگردید. اگر این صفحه یا این دکمه در نسخه شما نبود، از این قدم بگذرید. این صفحه برای کروم اندروید بررسی نشده است.
در سافاری مک، راهنمای اپل پیشنهاد میکند اول سایت را در یک پنجره خصوصی (Private Window) باز کنید. اگر آنجا باز شد، دادههای همان سایت را از تنظیمات Privacy سافاری پاک کنید.
آزمون دقیقتر با curl، اگر ترمینال دارید
اگر به یک کامپیوتر با macOS یا لینوکس دسترسی دارید، ابزار curl جواب روشنتری از مرورگر میدهد. این فرمانها را خودتان در ترمینال اجرا کنید و example.com را با نشانی سایت مورد نظر عوض کنید:
curl -I --connect-timeout 10 --max-time 20 https://example.com
echo $?گزینه -I فقط سربرگهای جواب را میگیرد، پس صفحه کامل دانلود نمیشود. گزینه --connect-timeout فقط برای مرحله اتصال سقف زمان میگذارد. طبق راهنمای curl، این مرحله وقتی تمام میشود که جستجوی DNS و دستدهیهای TCP و TLS (یا QUIC) انجام شده باشد. گزینه --max-time سقف زمان کل انتقال را تعیین میکند.
فرمان echo $? کد خروج curl را چاپ میکند. این چند کد مهماند:
0: انتقال از نظر curl موفق بود؛ این کد بهتنهایی موفق بودن پاسخ HTTP را نشان نمیدهد.6: نام سایت پیدا نشد (Could not resolve host). مشکل در DNS است.7: اتصال به سرور شکست خورد (Failed to connect to host).28: زمان تمام شد (Operation timeout).
کد 28 یعنی زمان تعیینشده تمام شد و هم تمام شدن زمان برقراری اتصال و هم تمام شدن زمان کل انتقال را پوشش میدهد؛ پس معادل مشخص ERR_TIMED_OUT در Chromium نیست. این کد نمیگوید در کدام مرحله گیر کرد. چون مرحله اتصال شامل DNS و TLS هم هست، حتی تمام شدن --connect-timeout هم ممکن است در هر یک از این قدمها رخ داده باشد. ارزش curl در مقایسه است. یک بار بدون فیلترشکن و یک بار با آن اجرا کنید. اگر کد از 28 به 0 تغییر کرد، فقط میدانید که انتقال دوم موفق بوده است؛ این نتیجه سلامت سایت یا علت timeout قبلی را ثابت نمیکند. curl بهطور پیشفرض کدهای وضعیت HTTP را خطا حساب نمیکند، پس حتی دریافت کامل پاسخ HTTP 500 هم میتواند کد خروج 0 بدهد. کد وضعیت HTTP را هم در سربرگهای خروجی بررسی کنید.
سایت فیلتر شده یا از کار افتاده؟ با مقایسه بفهمید
برای کاربری در ایران، اولین فکر معمولاً این است که سایت فیلتر شده است. این راهنما چنین چیزی را از روی کد خطا ادعا نمیکند. کدهای timeout در Chromium فقط میگویند زمان تمام شد و درباره علت چیزی نمیگویند. پس نام خطا بهتنهایی ثابت نمیکند که سایت فیلتر شده است یا نه.
به جای حدس زدن، همان سایت را از داخل و خارج مقایسه کنید:
- از داخل کشور، روی دو شبکه متفاوت (Wi-Fi خانه و اینترنت همراه) امتحان کنید.
- از مسیری خارج از کشور امتحان کنید: با فیلترشکن، یا از دوستی که خارج از ایران است بخواهید همان نشانی را در همان ساعت باز کند.
- نتیجه هر آزمون را با ساعت آن یادداشت کنید.
اگر سایت از خارج باز میشود و از داخل روی هیچ شبکهای باز نمیشود، سایت سالم است و از شبکههای داخل در دسترس نیست. اینکه دلیل آن فیلتر است، اختلال است یا چیز دیگری، از این آزمون معلوم نمیشود. اگر از خارج هم باز نمیشود، احتمال زیادی دارد که خود سایت از کار افتاده باشد. اگر روی یک شبکه داخلی باز میشود و روی شبکه دیگر نه، مشکل در مسیر آن یک شرکت اینترنت است.
خطای net::ERR_TIMED_OUT داخل برنامههای اندروید
بعضی برنامههای اندرویدی صفحه وب را با یک جزء داخلی به نام WebView نشان میدهند. وقتی آن صفحه بارگذاری نمیشود، برنامه ممکن است متنی مثل net::ERR_TIMED_OUT نشان دهد. اینکه دقیقاً چه متنی نمایش داده شود، به خود برنامه بستگی دارد، نه به اندروید.
دو نکته درباره این حالت مهم است. اول، در WebView ثابت جداگانهای به نام ERROR_TIMEOUT با مقدار -8 و توضیح Connection timed out وجود دارد. این عدد با کد -7 در Chromium یکی نیست، پس آن دو را با هم اشتباه نگیرید. دوم، طبق مستندات اندروید، WebView خطای بارگذاری را برای هر منبعی گزارش میدهد، نه فقط برای صفحه اصلی. یعنی ممکن است فقط یک عکس یا یک اسکریپت داخل صفحه به زمان نرسیده باشد و برنامه همین را بهعنوان خطا نشان دهد.
برای آزمون، اگر برنامه نشانی صفحه را نشان میدهد، همان نشانی را در کروم باز کنید. اگر در کروم هم خطا داد، آزمونهای بالا را انجام دهید. اگر در کروم باز شد و فقط در برنامه خطا میدهد، مشکل احتمالاً در برنامه یا یکی از منابعی است که برنامه بارگذاری میکند. در این حالت ساعت خطا، نوع شبکه، نسخه برنامه و روشن یا خاموش بودن فیلترشکن را برای پشتیبانی برنامه بفرستید.
همین مشکل در فایرفاکس و سافاری
فایرفاکس و سافاری کدهای Chromium را نشان نمیدهند و متن خطای خودشان را دارند. منطق آزمونها اما همان است: شبکه دیگر، فیلترشکن روشن و خاموش، DNS، و دادههای سایت.
در فایرفاکس، صفحه «سرور پیدا نشد» پیشنهاد میکند اتصال شبکه را بررسی کنید و مطمئن شوید فایرفاکس اجازه دسترسی به وب را دارد، چون ممکن است به شبکه وصل باشید اما پشت یک فایروال باشید. صفحه خطای پروکسی هم میگوید تنظیمات پروکسی را بررسی کنید. یک پیام مخصوص هم در فایرفاکس هست: وقتی فایرفاکس فقط از DNS امن (DNS over HTTPS) استفاده میکند، ممکن است بگوید اتصال به سرور DNS بیشتر از حد انتظار طول کشید. در این حالت مشکل در رسیدن به ارائهدهنده DNS است، نه در خود سایت. تنظیم DNS امن فایرفاکس را موقتاً تغییر دهید و دوباره امتحان کنید. متن دقیق صفحه timeout عمومی فایرفاکس را از صفحه خطای خودتان بخوانید.
در سافاری مک، راهنمای اپل این موارد را برای بررسی آورده است: کوکیها و دادههای سایت، افزونههای مسدودکننده محتوا، iCloud Private Relay، برنامههای VPN یا امنیتی که شبکه را زیر نظر دارند، و تنظیمات دستی پروکسی یا DNS. برای مشکلات شبکه، اپل پیشنهاد میکند صفحه را در مرورگر دیگر یا روی دستگاه دیگری در همان شبکه باز کنید. سافاری در آیفون و آیپد هم متن خطای خودش را نشان میدهد. برای آنها همان آزمونهای شبکه دیگر و فیلترشکن روشن و خاموش را انجام دهید.
اگر صاحب سایت هستید
اگر خطا را روی سایت خودتان میبینید، آزمونهای بالا فقط نیمی از کار است. اول با curl از دو شبکه متفاوت امتحان کنید تا مطمئن شوید مشکل فقط از یک مسیر نیست. اگر از همه جا کد 28 گرفتید، باید روی سرور بررسی کنید که سرویس وب اجرا میشود و پورت 443 باز است. راهنمای بررسی باز بودن یک پورت در لینوکس نشان میدهد چطور بفهمید سرویس روی پورت گوش میدهد و آیا چیزی سر راه آن را بسته است.
پرسشهای رایج (FAQ)
آیا خطای ERR_TIMED_OUT یعنی سایت فیلتر شده است؟
نه لزوماً. کدهای timeout در Chromium فقط میگویند جوابی در زمان مقرر نرسید و علت را نمیگویند. برای فهمیدن، همان سایت را از دو شبکه داخلی و از یک مسیر خارج از کشور، مثلاً با فیلترشکن، امتحان کنید. اگر از خارج باز شد و از داخل نه، سایت سالم است و از شبکههای داخل در دسترس نیست. علت دقیق را این آزمون نشان نمیدهد.
فرق ERR_TIMED_OUT با ERR_CONNECTION_TIMED_OUT چیست؟
در کد Chromium، ERR_TIMED_OUT (-7) یعنی یک عملیات بیش از حد طول کشید، بدون اینکه بگوید کدام عملیات. ERR_CONNECTION_TIMED_OUT (-118) یعنی تلاش برای برقراری اتصال به زمان نرسید. پس دومی به مرحله اتصال اشاره میکند و اولی ممکن است مرحله دیگری باشد. صفحه خطای کروم برای هر دو یکسان است و فقط کد پایین صفحه فرق دارد.
چرا سایت با دیتای موبایل باز میشود ولی با Wi-Fi نه؟
چون این دو اتصال معمولاً از دو شرکت متفاوت میآیند و مسیر متفاوتی تا سایت دارند. اگر سایت روی یکی باز میشود، خود سایت سالم است و مشکل در مسیر شبکه دیگر است. روتر Wi-Fi را دوباره راهاندازی کنید و تنظیم DNS روتر را بررسی کنید. اگر مشکل ماند، با شرکت اینترنت همان شبکه تماس بگیرید.
آیا خاموش کردن Private DNS در اندروید برای رفع خطا کار درستی است؟
برای آزمون بله، برای همیشه لزوماً نه. اندروید بهطور پیشفرض با هر شبکهای که پشتیبانی کند از Private DNS استفاده میکند و گوگل توصیه میکند روشن بماند. گزینه را یک بار روی Off و یک بار روی Automatic بگذارید و نتیجه را مقایسه کنید. اگر فقط با Off کار کرد، احتمالاً ارائهدهندهای که دستی وارد کرده بودید از شبکه شما در دسترس نیست.
خطای net::ERR_TIMED_OUT داخل یک برنامه اندرویدی را چطور رفع کنم؟
اگر برنامه نشانی صفحه را نشان میدهد، آن را در کروم باز کنید. اگر کروم هم خطا داد، مشکل از شبکه یا سایت است و باید شبکه دیگر و فیلترشکن روشن و خاموش را امتحان کنید. اگر فقط در برنامه خطا میدهد، بدانید که WebView خطای هر منبع داخل صفحه را گزارش میکند، مثل یک عکس یا اسکریپت. ساعت خطا و نوع شبکه را برای پشتیبانی برنامه بفرستید.