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

페이지 정보

shadow2fox shadow2fox 126 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')) {
    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,616,617
레벨 147
경험치 3,246,018

Progress Bar 60.59%

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

댓글1

하늘구장님의 댓글

skyfield4u
하늘구장 2025.06.13 23:19

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

멋진 팁 고맙습니다

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

Total 762126 페이지

제목 글쓴이 날짜 조회 추천
그누•영카트  🔒 비추천 게시물 블라인드 루루아빠 2015.06.15 2 0
제로  🔒 [re] 진보된 추출법 루루아빠 2005.06.27 4 0
이윰  🔒 쇼핑몰 테마 메인 화면을 쇼핑몰로 바꾸기 루루아빠 2016.09.24 4 0
이윰  🔒 특정 페이지 혹은 게시판에서 사이드 메뉴를 사용치 않기 루루아빠 2015.05.23 5 0
기타  🔒 iplug 공동구매 카페주소 루루아빠 2007.03.01 8 0
그누•영카트  🔒 HTMLPurifier 7레벨 이상은 적용 안받기 루루아빠 2015.03.10 8 0
기타  댓글+1🔒 마우스 및 키보드 복사 금지 제어하기 루루아빠 2015.03.16 14 0
제로  댓글+1🔒 닉네임과 이름앞 아이콘을 회원들이 직접 업로드 할경우 탈퇴시 문제점의 해결책 루루아빠 2005.07.12 16 0
기타  🔒 링크 타겟 새로운 창으로 열때 가운데 정렬해서 원하는 사이즈로 열기 루루아빠 2005.06.25 17 0
제로  🔒 멀티게시판 코멘트 통합추출 팁 루루아빠 2005.06.27 17 0
제로  댓글+1🔒 여러 게시판의 최근글 통합해서 뽑아내기 루루아빠 2005.06.27 24 0
제로  댓글+1🔒 게시물 작성자가 현재 접속여부표시하기 루루아빠 2005.07.05 26 0
제로  댓글+1🔒 💾 멀티갤러리 통합추출 팁 루루아빠 2005.06.27 30 0
그누•영카트  댓글+1 그누보드(영카트) 5.6.14 shadow2fox 2025.06.14 123 2
PHP  댓글+1 🚩 node.js를 윈도우 서버에 설치하고 peppeteer 라이브러리를 이용하여 og:image를 추출해 보자 shadow2fox 2025.06.13 127 2
PHP  댓글+1 PHP에서 변수의 값이 날짜 형식이고 유효한 날짜 형식인지 검증해 보자 shadow2fox 2025.06.06 138 1
그누•영카트  댓글+2 그누보드(영카트) 5.6.13 shadow2fox 2025.05.15 200 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.11 shadow2fox 2025.04.16 253 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.12 shadow2fox 2025.04.16 261 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.10 shadow2fox 2025.02.25 268 2
에디터  댓글+1 CKEditor 4.x 툴바에서 소스 글자 지우기 shadow2fox 2025.05.04 290 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.9 shadow2fox 2025.01.22 342 2
그누•영카트  댓글+1 그누보드(영카트) 5.6.6 shadow2fox 2024.09.24 345 1
그누•영카트  댓글+1 그누보드(영카트) 5.6.5 shadow2fox 2024.09.05 371 1
그누•영카트  댓글+2 그누보드(영카트) 5.6.8 shadow2fox 2024.11.27 413 3
그누•영카트  댓글+2 그누보드(영카트) 5.6.4 shadow2fox 2024.07.04 496 2
그누•영카트  댓글+2 그누보드(영카트) 5.6.7 shadow2fox 2024.11.01 503 2
그누•영카트  댓글+2 그누보드(영카트) 5.5.16 shadow2fox 2024.04.18 521 2
그누•영카트  댓글+2📸 그누보드(영카트) 5.5.15 shadow2fox 2024.04.12 550 2
이윰  댓글+1 게시글 삭제 시 입력한 태그 삭제하기 shadow2fox 2024.05.11 551 2