Skip to content

Instantly share code, notes, and snippets.

@guendev
Created February 10, 2025 08:49
Show Gist options
  • Save guendev/d7cc734784a7289969251105777df226 to your computer and use it in GitHub Desktop.
Save guendev/d7cc734784a7289969251105777df226 to your computer and use it in GitHub Desktop.
import { Browser, launch, Page } from "puppeteer";
async function checkUrl(browser: Browser, url: string): Promise<boolean> {
let page: Page | null = null;
try {
// Mở 1 trang mới cho URL cụ thể
page = await browser.newPage();
await page.setUserAgent(
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
);
// Chỉ chờ đến khi DOM đã được tải
await page.goto(url, { waitUntil: "networkidle2", timeout: 15000 });
console.log(`URL "${url}" is working.`);
return true;
} catch (error: any) {
console.error(`URL "${url}" is not working. Error: ${error.message}`);
return false;
} finally {
if (page) {
await page.close();
}
}
}
async function checkUrls(urls: string[]) {
let browser: Browser | null = null;
try {
// Khởi tạo trình duyệt headless một lần duy nhất
browser = await launch({ headless: true });
// Kiểm tra tất cả các URL đồng thời
const results = await Promise.all(urls.map(url => checkUrl(browser!, url)));
// Hiển thị kết quả cho từng URL
results.forEach((isActive, index) => {
console.log(`${urls[index]}: ${isActive ? "Working" : "Not working"}`);
});
} catch (error: any) {
console.error("Error launching browser:", error);
} finally {
if (browser) {
await browser.close();
}
}
}
// Ví dụ sử dụng với mảng URL
const domains = [
'https://www.jw.org/en/library/',
"https://tradingview.binary.com/", // URL không tồn tại
"https://example.com",
"https://google.com",
];
void checkUrls(domains);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment