# WordPress 자동 업로드 시도 진행 상황 **날짜**: 2025-11-26 **작업 디렉토리**: `/var/www/tkim.planitai.co.jp/blog/batch/auto-post-ai-news` ## 목표 `gemini-mcp-demo-script-ja.md` 파일을 WordPress 블로그에 자동으로 업로드 - **대상 파일**: `/var/www/tkim.planitai.co.jp/blog/20251126-gemini-mcp-demo-script/gemini-mcp-demo-script-ja.md` - **WordPress URL**: https://2025032623012012057904.onamaeweb.jp/blog/wp-admin/ - **인증 정보**: `.env` 파일 참조 ## 시도한 방법들 ### 1. REST API 사용 (upload_to_wp.js) **접근 방식**: - WordPress REST API (`/wp-json/wp/v2/posts`) 사용 - Basic Authentication - Markdown → HTML 변환 (`marked` 라이브러리) **결과**: ❌ 실패 ``` 상태 코드: 403 Forbidden 원인: SiteGuard Lite WAF가 요청 차단 ``` **에러 메시지**: ``` 閲覧できません (Forbidden access) Powered by SiteGuard Lite ``` ### 2. WP-CLI 사용 시도 **접근 방식**: - `wp-cli.phar` 다운로드 - 로컬 WordPress 설치에 직접 접근 시도 **결과**: ❌ 불가능 ``` 이유: WordPress가 원격 서버(onamaeweb.jp)에 호스팅되어 있음 WP-CLI는 로컬 WordPress 설치에만 사용 가능 ``` **조치**: WP-CLI 삭제 ### 3. XML-RPC 사용 (upload_to_wp_xmlrpc.js) **접근 방식**: - WordPress XML-RPC 엔드포인트 (`/xmlrpc.php`) 사용 - `wp.newPost` 메서드 호출 - XML 형식으로 데이터 전송 **결과**: ❌ 실패 ``` 상태 코드: 403 Forbidden 원인: SiteGuard Lite가 XML-RPC 요청도 차단 ``` ### 4. 청크 방식 (upload_to_wp_chunked.js) **접근 방식**: 1. 먼저 빈 포스트 생성 2. 그 다음 콘텐츠로 업데이트 **결과**: ⚠️ 부분 성공 ``` ✓ 빈 포스트 생성 성공 (ID: 68) ✗ 콘텐츠 업데이트 실패 (403 Forbidden) ``` **생성된 포스트**: - ID: 68 - 상태: draft - 편집 URL: https://2025032623012012057904.onamaeweb.jp/blog/wp-admin/post.php?post=68&action=edit ## 문제 분석 ### SiteGuard Lite WAF 차단 **차단 원인**: - 콘텐츠에 포함된 코드 블록 (```로 감싸진 코드) - WAF가 XSS, SQL Injection 등의 공격 패턴으로 오인 - 엔드포인트와 무관하게 **콘텐츠 내용**을 분석하여 차단 **테스트 결과**: - 간단한 텍스트만 있는 파일 (test-simple.md): ✓ 성공 (Post ID: 66) - 코드 블록이 있는 파일 (gemini-mcp-demo-script-ja.md): ✗ 차단 ### 시도한 모든 프로토콜이 차단됨 | 방법 | 엔드포인트 | 결과 | |------|-----------|------| | REST API | `/wp-json/wp/v2/posts` | 403 Forbidden | | XML-RPC | `/xmlrpc.php` | 403 Forbidden | | 청크 업데이트 | `/wp-json/wp/v2/posts/{id}` | 403 Forbidden | ## 최종 결정 ### ✅ 수동 업로드로 진행 **이유**: 1. SiteGuard Lite WAF 설정 변경 권한 없음 2. 모든 자동화 시도가 WAF에 의해 차단됨 3. 빈 포스트(ID: 68)는 생성됨 **수동 업로드 방법**: 1. WordPress 관리자 로그인 2. 포스트 ID 68 편집 페이지 접속 3. Markdown 파일을 HTML로 변환한 내용 복사/붙여넣기 ## 정리 작업 ### 삭제된 파일 ```bash rm -f upload_to_wp.js rm -f upload_to_wp.sh rm -f upload_to_wp_xmlrpc.js rm -f upload_to_wp_chunked.js rm -f upload_to_wp.js.bak rm -f post-68-content.html ``` ### 유지된 파일 - `auto-post-ai-news.js` (메인 자동화 스크립트) - `lib/wordpress-client.js` (WordPress API 클라이언트) - `.env` (환경 설정) - 기타 라이브러리 파일들 ## 교훈 ### 1. WAF 차단 문제 - **증상**: 403 Forbidden, SiteGuard Lite 메시지 - **원인**: 콘텐츠의 코드 블록이 공격 패턴으로 오인됨 - **해결책**: - WAF 설정 조정 (관리자 권한 필요) - IP 화이트리스트 등록 - 수동 업로드 ### 2. WP-CLI 한계 - 로컬 WordPress 설치에만 사용 가능 - 원격 WordPress에는 SSH 접근 + 원격 WP-CLI 실행 필요 ### 3. 프로토콜 우회 불가 - REST API, XML-RPC 모두 동일한 WAF 통과 - 엔드포인트 변경으로는 해결 불가 - 콘텐츠 자체를 분석하는 WAF에는 프로토콜 변경 무의미 ## 다음 단계 1. ✅ WordPress 관리자 페이지에서 수동으로 콘텐츠 업로드 2. ⬜ SiteGuard 설정 검토 (관리자 권한 획득 시) 3. ⬜ 향후 유사 콘텐츠를 위한 WAF 예외 규칙 설정 고려 ## 참고 ### 성공한 포스트 - Post ID: 66 (test-simple.md) - 간단한 텍스트, 코드 블록 없음 - Post ID: 68 (gemini-mcp-demo-script-ja.md) - 빈 포스트만 생성됨 ### 환경 정보 ``` WordPress URL: https://2025032623012012057904.onamaeweb.jp/blog API URL: https://2025032623012012057904.onamaeweb.jp/blog/wp-json Category ID: 4 WAF: SiteGuard Lite ``` --- **작업 완료 시각**: 2025-11-26 **최종 상태**: 수동 업로드로 전환