WinHTTP로 패킷을 요리하자.
2022. 12. 8. 09:00ㆍVB.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를 만져서 대상 페이지가 원하는 패킷을 만들어주는게 중요하다. 이건 크롬 개발자도구에서 패킷을 잡아서 확인할 수 있으니 참고하면 된다.
반응형
'VB.NET' 카테고리의 다른 글
VB.NET WPF Timer 사용하기 (0) | 2022.12.10 |
---|---|
VB.NET에서 컨트롤 배열 만들기 (0) | 2022.12.09 |
VB.NET OrderBy, ThenBy를 이용한 리스트 정렬 (역순정렬 포함) (0) | 2022.12.05 |
VB.NET 이미지를 가로/세로 비율에 맞춰서 원하는 크기로 리사이즈 (0) | 2022.12.05 |
사진을 음악으로 연주하면 어떤 소리가 날까? (1) | 2022.12.05 |