طبیعتاً اگر تا الان سعی کرده باشید با API سایتهایی مثل تلگرام و اینستاگرام و … کار کنید چون فیلتر هستند، روی هاست و سرورهای ایرانی به مشکل میخورید و جواب موفقی از API دریافت نمیکنید 😭 چند وقت پیش برای یه مشتری نیاز بود که یه اتصال بین API تلگرام و سایتش که روی هاست داخلی بود برقرار کنم که متأسفانه با همین مشکل مواجه شدم. در نتیجه جستجویی کردم و به این کد رسیدم که در واقع آدرس API رو دور میزنه.
async function handleRequest(request) {
const url = new URL(request.url);
// Change the hostname to 'api.telegram.org'
url.hostname = 'api.telegram.org';
// Create a new request with the modified URL
const newRequest = new Request(url.toString(), request);
// Fetch and return the response from the new URL
try {
const response = await fetch(newRequest);
return response;
} catch (error) {
// Handle errors, if any
return new Response('Internal Server Error', {
status: 500,
headers: {
'content-type': 'text/plain',
},
});
}
}
addEventListener('fetch', (event) => {
event.respondWith(handleRequest(event.request));
});
شیوه استفاده: یه ورکر در کلودفلر بسازید و کدهای بالا رو داخلش بذارید. سپس دیپلوی بفرمایید. از اینجا به بعد میتونید به جای آدرس API فیلتر شده از آدرس ورکرتون استفاده کنید. من اینجا برای API تلگرام استفاده کردم اما برای باقی موارد فیلتر شده یا تحریم شده قابل استفاده است. کافیه متغیر url.hostname رو جایگزین کنید.