WinHTTP로 패킷을 요리하자.

2022. 12. 8. 09:00VB.NET

예전 VB6에서는 주로 winsock이나 inet을 사용했었는데 VB.NET은 둘다 사용을 못하는듯 하다. 혹은 사용 가능하나 내가 못찾는 것일수도...

이제 웬만한건 다 WinHTTP로 사용하게 됐다. 무엇보다 SSL 연결인 https를 지원하니 다른걸 사용할 의미가 없어져버렸다.

네이버든, 다음이든, 구글이든 타겟이 어디든 그냥 WinHTTP로 싹다 해결된다.

내 프로젝트에 WinHTTP를 사용하기 위해서는 우선 프로젝트 참조에서 참조관리자 > COM > Microsoft WinHTTP Services, version 5.1을 선택하면 된다.



참조관리자는 솔루션탐색기 > 참조에서 마우스 오른쪽버튼 클릭 > 참조 추가... 를 선택하면 된다.

WinHTTP는 어느정도 사용법이 정해져있다. 아래 함수를 살펴보자.

Public Function GetSource(pWinHttp As WinHttp.WinHttpRequest, pMethod As String, pURL As String, pRef As String, pData As Object, pContentType As String, Optional pCookie As String = "") As String

  Try
      Call pWinHttp.Open(pMethod, pURL, False)
      Call pWinHttp.SetRequestHeader("Accept", "image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*")
      Call pWinHttp.SetRequestHeader("Accept-Language", "ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7,pt;q=0.6")
      Call pWinHttp.SetRequestHeader("User-Agent", UserAgent)
      If pRef.Length > 0 Then Call pWinHttp.SetRequestHeader("Referer", pRef)
      If pContentType.Length > 0 Then Call pWinHttp.SetRequestHeader("Content-Type", pContentType)
      If pCookie.Length > 0 Then Call pWinHttp.SetRequestHeader("Cookie", pCookie)
      Call pWinHttp.Send(pData)
      Return pWinHttp.ResponseText
  Catch ex As Exception
      Return "Error - " & ex.Message
  End Try

End Function



별다른건 없다. 무엇보다 원하는 Header를 만져서 대상 페이지가 원하는 패킷을 만들어주는게 중요하다. 이건 크롬 개발자도구에서 패킷을 잡아서 확인할 수 있으니 참고하면 된다.

반응형