ETC/Auto Hotkey

네트워크 및 웹 자동화: HTTP 요청, 웹 스크래핑, 원격 제어를 통한 효율적인 작업 자동화

shimdh 2025. 2. 5. 15:07
728x90

1. HTTP 요청 및 API 통신

HTTP 요청의 기본 개념

HTTP(Hypertext Transfer Protocol)는 클라이언트와 서버 간의 데이터 전송을 위한 프로토콜입니다. 주로 웹 브라우저가 웹 페이지를 요청할 때 사용되며, 다음과 같은 주요 메서드가 있습니다:

  • GET: 서버에서 데이터를 가져옵니다.
  • POST: 서버에 데이터를 전송합니다.
  • PUT: 서버의 리소스를 업데이트합니다.
  • DELETE: 서버의 리소스를 삭제합니다.

API란?

API(Application Programming Interface)는 소프트웨어 간의 상호작용을 가능하게 하는 규칙 집합입니다. 예를 들어, 날씨 정보 API를 통해 특정 지역의 날씨 데이터를 가져올 수 있습니다. API는 다양한 서비스와 데이터를 연동하는 데 필수적인 도구입니다.

AutoHotkey로 HTTP 요청 보내기

AutoHotkey를 사용하면 간단한 스크립트로 HTTP 요청을 보내고 API와 통신할 수 있습니다. 이를 통해 외부 서비스와의 연동이 가능해지며, 데이터를 자동으로 수집하거나 처리할 수 있습니다.

GET 요청 예제

; URL 설정 (예시로 JSONPlaceholder API)
url := "https://jsonplaceholder.typicode.com/posts/1"

; GET 요청 실행
HttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HttpObj.Open("GET", url)
HttpObj.Send()

; 응답 받기
responseText := HttpObj.ResponseText

MsgBox % "서버 응답:" . responseText

이 코드는 지정된 URL로 GET 요청을 보내고, 서버의 응답을 메시지 박스로 표시합니다. 이를 통해 특정 데이터를 쉽게 가져올 수 있습니다.

POST 요청 예제

; URL 설정 (예시로 JSONPlaceholder API)
url := "https://jsonplaceholder.typicode.com/posts"

; 보낼 데이터 설정 (JSON 형식)
data := "{""title"": ""foo"", ""body"": ""bar"", ""userId"": 1}"

; POST 요청 실행
HttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HttpObj.Open("POST", url)
HttpObj.SetRequestHeader("Content-Type", "application/json")
HttpObj.Send(data)

; 응답 받기 
responseText := HttpObj.ResponseText

MsgBox % "서버 응답:" . responseText

이 코드는 JSON 형식의 데이터를 POST 방식으로 전송하고, 서버의 응답을 확인합니다. 이를 통해 데이터를 서버에 저장하거나 업데이트할 수 있습니다.

실생활 활용 사례

  • 자동화된 데이터 수집: 뉴스 사이트나 블로그에서 최신 기사를 스크래핑하여 분석하거나 요약한 후 이메일 알림으로 받을 수 있습니다.
  • 서비스 연동: Slack이나 Discord 같은 커뮤니케이션 도구에 메시지를 자동으로 보내거나 특정 이벤트 발생 시 알림 기능을 추가해 팀원들에게 신속히 전달할 수 있습니다.
  • 데이터 저장 및 관리: 사용자 입력 폼에서 받은 데이터를 원격 데이터베이스나 파일 시스템에 저장하도록 할 수도 있습니다.

2. 웹 스크래핑 및 데이터 추출

웹 스크래핑의 개념

웹 스크래핑은 웹사이트에서 데이터를 자동으로 추출하는 기술입니다. 예를 들어, 뉴스 사이트에서 최신 기사를 수집하거나, 쇼핑몰에서 상품 가격을 비교하는 데 사용됩니다. 웹 스크래핑은 데이터 분석, 시장 조사, 경쟁사 모니터링 등 다양한 분야에서 활용됩니다.

AutoHotkey로 웹 스크래핑 구현하기

AutoHotkey는 HTTP 요청을 통해 HTML 문서를 가져오고, 문자열 조작을 통해 원하는 데이터를 추출할 수 있습니다. 이를 통해 웹사이트의 특정 정보를 자동으로 수집할 수 있습니다.

기본적인 HTTP GET 요청 예제

url := "https://example.com"
HttpObj := ComObjCreate("MSXML2.ServerXMLHTTP")
HttpObj.Open("GET", url, false)
HttpObj.Send()
response := HttpObj.ResponseText

MsgBox % response ; 서버로부터 받은 HTML 내용 표시

이 코드는 지정된 URL로 GET 요청을 보내고, 서버의 응답을 메시지 박스로 표시합니다. 이를 통해 웹사이트의 HTML 내용을 확인할 수 있습니다.

특정 태그 내 텍스트 추출 예제

; 이전 단계에서 response 변수에 저장된 HTML 내용 사용
startPos := InStr(response, "<title>") + StrLen("<title>")
endPos := InStr(response, "</title>", false, startPos)
pageTitle := SubStr(response, startPos, endPos - startPos)

MsgBox % "페이지 제목: " . pageTitle ; 페이지 제목 출력

이 코드는 <title> 태그 사이의 텍스트를 추출하여 페이지 제목을 출력합니다. 이를 통해 웹사이트의 특정 정보를 쉽게 추출할 수 있습니다.

데이터를 CSV 파일로 저장하기

filePath := "C:\data\output.csv"
FileAppend, Title`n%pageTitle%`n,, %filePath%
MsgBox % "데이터가 '" filePath "' 에 저장되었습니다."

추출한 데이터를 CSV 파일로 저장하여 엑셀 등에서 활용할 수 있습니다. 이를 통해 데이터를 체계적으로 관리할 수 있습니다.

실생활 활용 사례

  • 가격 비교: 여러 쇼핑몰의 상품 가격을 스크래핑하여 가장 저렴한 가격을 찾을 수 있습니다.
  • 뉴스 모니터링: 뉴스 사이트에서 특정 키워드가 포함된 기사를 자동으로 수집하여 요약 보고서를 생성할 수 있습니다.
  • 경쟁사 분석: 경쟁사의 웹사이트에서 제품 정보나 가격 정책을 스크래핑하여 시장 동향을 분석할 수 있습니다.

3. 원격 제어 및 네트워크 관리

원격 제어

원격 제어는 물리적으로 떨어진 장치를 조작할 수 있게 해주는 기술입니다. AutoHotkey를 사용하면 간단한 스크립트로 원격 파일 전송이나 프로그램 실행을 자동화할 수 있습니다.

원격 파일 전송 예제

FileCopy, C:\source\*.*, \\remote-pc\destination\

이 코드는 로컬 컴퓨터의 특정 폴더에 있는 파일을 원격 컴퓨터의 지정된 폴더로 복사합니다.

원격 프로그램 실행 예제

Run, \\remote-pc\path\to\application.exe

이 코드는 원격 컴퓨터에서 특정 프로그램을 실행합니다.

네트워크 관리

네트워크 관리는 여러 장치의 상태를 모니터링하고 관리하는 작업입니다. AutoHotkey를 사용하면 장치 상태를 체크하거나 업데이트 알림을 보낼 수 있습니다.

장치 상태 체크 예제

PingCheck(IP) {
    RunWait % "cmd /c ping -n 1 " . IP, , Hide, OutputVar
    return InStr(OutputVar, "Reply from") ? true : false
}

if (PingCheck("192.168.0.1")) {
    MsgBox, The device is online!
} else {
    MsgBox, The device is offline!
}

이 코드는 특정 IP 주소의 장치가 온라인 상태인지 확인하고 결과를 메시지 박스로 표시합니다.

자동 업데이트 알림 예제

Loop {
   If (SoftwareNeedsUpdate()) { ; 가상의 함수 호출 
      MsgBox, Update available on one or more devices!
   }
   Sleep, 3600000 ; 한 시간마다 체크 
}

이 코드는 네트워크 내 장치에서 소프트웨어 업데이트가 필요한 경우 사용자에게 알림을 보냅니다.

실생활 활용 사례

  • 원격 모니터링: 여러 대의 서버나 컴퓨터를 원격으로 모니터링하여 문제가 발생할 경우 즉시 대응할 수 있습니다.
  • 자동화된 백업: 특정 시간에 원격 컴퓨터의 데이터를 자동으로 백업할 수 있습니다.
  • 네트워크 보안: 네트워크 내 장치의 보안 상태를 주기적으로 점검하고 취약점을 해결할 수 있습니다.

4. 고급 활용 및 통합 사례

HTTP 요청과 웹 스크래핑의 결합

HTTP 요청과 웹 스크래핑을 결합하면 더욱 강력한 자동화 시스템을 구축할 수 있습니다. 예를 들어, 특정 웹사이트에서 데이터를 스크래핑한 후 이를 API를 통해 다른 시스템에 전송할 수 있습니다.

예제: 웹 스크래핑 후 API로 데이터 전송

; 웹 스크래핑을 통해 데이터 추출
url := "https://example.com"
HttpObj := ComObjCreate("MSXML2.ServerXMLHTTP")
HttpObj.Open("GET", url, false)
HttpObj.Send()
response := HttpObj.ResponseText

startPos := InStr(response, "<title>") + StrLen("<title>")
endPos := InStr(response, "</title>", false, startPos)
pageTitle := SubStr(response, startPos, endPos - startPos)

; 추출한 데이터를 API로 전송
apiUrl := "https://jsonplaceholder.typicode.com/posts"
data := "{""title"": """ . pageTitle . """, ""body"": ""This is a scraped title"", ""userId"": 1}"

HttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1")
HttpObj.Open("POST", apiUrl)
HttpObj.SetRequestHeader("Content-Type", "application/json")
HttpObj.Send(data)

responseText := HttpObj.ResponseText
MsgBox % "API 응답:" . responseText

이 코드는 웹사이트에서 페이지 제목을 스크래핑한 후, 이를 API를 통해 다른 시스템에 전송합니다.

원격 제어와 네트워크 관리의 통합

원격 제어와 네트워크 관리를 통합하면, 네트워크 내 장치의 상태를 모니터링하고 문제가 발생할 경우 자동으로 조치를 취할 수 있습니다.

예제: 장치 상태 모니터링 후 원격 재부팅

Loop {
    ; 장치 상태 체크
    if !PingCheck("192.168.0.1") {
        MsgBox, 장치가 오프라인 상태입니다. 원격 재부팅을 시도합니다.
        Run, \\remote-pc\path\to\reboot_script.exe
    }
    Sleep, 60000 ; 1분마다 체크
}

이 코드는 특정 장치가 오프라인 상태일 경우, 원격으로 재부팅 스크립트를 실행합니다.


결론

네트워크 및 웹 자동화는 반복적인 작업을 효율적으로 처리하고, 데이터를 체계적으로 관리할 수 있는 강력한 도구입니다. AutoHotkey를 활용하면 HTTP 요청, 웹 스크래핑, 원격 제어 등 다양한 작업을 손쉽게 자동화할 수 있습니다. 이를 통해 업무 생산성을 높이고, 복잡한 작업도 단순화할 수 있습니다. 실습을 통해 익히고, 점차 복잡한 프로젝트에 도전해보세요! 이러한 기술은 IT 관리자, 개발자, 데이터 분석가 등 다양한 직군에서 유용하게 활용될 것입니다.

728x90