[PHP] node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자

페이지 정보

shadow2fox shadow2fox 26 1 2 2025.06.13 19:52:21

평점

  • 평점 : 5점 (1명 참여)

본문

📝 node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자

일반적으로 curl로 HTML 메타 태그를 파싱할 수 있으나 Meta 플랫폼 서비스(페이스북, 스레드 등)는 대부분의 콘텐츠를 로그인 사용자 기반의 클라이언트 렌더링으로 제공해서 curl이나 일반 HTTP 요청으로는 HTML 메타 태그를 추출할 수 없다.

1. Node.js 설치

https://nodejs.org/ko 접속하여 LTS 버전 다운로드 후 Node.js를 설치한다.

node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자

설정 마지막 단계 tool for Native Modules의 체크 박스를 선택하지 않고 설치한다.

2. Puppeteer 설치

 

cmd 창이나 터미널 창을 열어 아래 명령어를 입력한다.



mkdir C:\puppeteer

cd C:\puppeteer

npm init -y

npm install puppeteer

3. ogimage.js 작성

puppeteer가 설치된 폴더에 아래 소스 코드로 ogimage.js 파일을 작성한다.


const puppeteer = require('puppeteer');

(async () => {
  const url = process.argv[2];

  if (!url || !url.startsWith('http')) {
    console.log('');
    process.exit(0);
  }

  const browser = await puppeteer.launch({
    headless: true,
    args: ['--no-sandbox', '--disable-setuid-sandbox']
  });

  const page = await browser.newPage();

  // 일반적인 브라우저처럼 가장 널리 호환되는 User-Agent 설정
  await page.setUserAgent(
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36'
  );

  try {
    await page.goto(url, { waitUntil: 'networkidle2', timeout: 15000 });

    // og:image만 추출
    const ogImage = await page.evaluate(() => {
      const meta = document.querySelector('meta[property="og:image"]');
      return meta ? meta.content : '';
    });

    console.log(ogImage || '');
  } catch (err) {
    console.log('');
  } finally {
    await browser.close();
  }
})();

4. PHP에서 활용


$node = 'C:\\Program Files\\nodejs\\node.exe';
$script = 'C:\\puppeteer\\ogimage.js';
$url = '이미지를 추출할 url 주소';

$command = "\"$node\" \"$script\" \"$url\"";
exec($command, $output, $result_code);

if ($result_code === 0 && !empty($output))
    $og_image = trim(implode("\n", $output));

$url은 preg_match를 활용해서 추출한다.

추출한 $og_image의 이미지 주소를 이용해 서버에 다운로드 하고 가공해 활용하도록 한다.

추천인 2
  • skyfield4u
    하늘구장
  • 소현세자
shadow2fox
10
shadow2fox - 회원등급 : 자연/Level 147 - 포인트 : 2,610,052
레벨 147
경험치 3,231,227

Progress Bar 27.05%

- 가입일 : 2015-03-10 12:21:44
- 서명 : 인간에게 가장 큰 선물은 자기 자신에게 기회를 주는 것이다. - 크리스 가드너, Chris Gardner -
- 자기소개 : There's never a shortcut to happiness.

댓글1

하늘구장님의 댓글

skyfield4u
하늘구장 2025.06.13 23:19

윈도우 서버 이용자라서 저도 한번 도전해 보고 싶네요

멋진 팁 고맙습니다

축하합니다. 첫 댓글로 29경험치를 획득하였습니다.

Total 762139 페이지

제목 글쓴이 날짜 조회 추천
그누•영카트  댓글+1⭐ 그누보드(영카트) 5.6.14 shadow2fox 2025.06.14 27 2
PHP  댓글+1⭐ 🚩 node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자 shadow2fox 2025.06.13 27 2
PHP  댓글+1 PHP에서 변수의 값이 날짜 형식이고 유효한 날짜 형식인지 검증해 보자 shadow2fox 2025.06.06 49 1
그누•영카트  댓글+2 그누보드(영카트) 5.6.13 shadow2fox 2025.05.15 116 2
에디터  댓글+1 CKEditor 4.x 툴바에서 소스 글자 지우기 shadow2fox 2025.05.04 159 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.12 shadow2fox 2025.04.16 184 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.11 shadow2fox 2025.04.16 160 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.10 shadow2fox 2025.02.25 203 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.9 shadow2fox 2025.01.22 250 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.8 shadow2fox 2024.11.27 356 3
그누•영카트  댓글+2 그누보드(영카트) 5.6.7 shadow2fox 2024.11.01 359 2
그누•영카트  댓글+1 그누보드(영카트) 5.6.6 shadow2fox 2024.09.24 305 1
그누•영카트  댓글+1 그누보드(영카트) 5.6.5 shadow2fox 2024.09.05 323 1
그누•영카트  댓글+2 그누보드(영카트) 5.6.4 shadow2fox 2024.07.04 444 2
그누•영카트  댓글+2 그누보드(영카트) 5.5.17 shadow2fox 2024.06.09 499 2
이윰  댓글+1 게시글 삭제 시 입력한 태그 삭제하기 shadow2fox 2024.05.11 503 2
그누•영카트  댓글+2 그누보드(영카트) 5.5.16 shadow2fox 2024.04.18 480 2
그누•영카트  댓글+2📸 그누보드(영카트) 5.5.15 shadow2fox 2024.04.12 504 2
그누•영카트  댓글+3 그누보드(영카트) 5.5.14 shadow2fox 2024.04.04 611 2
그누•영카트  댓글+2 그누보드(영카트) 5.5.13 shadow2fox 2024.02.20 732 2