asp에서 웹스크랩핑을 할려고
흔하게 Set xmlhttp = Server.CreateObject("Msxml2.ServerXMLHTTP.6.0") 를 이용해서
사이트 소스를 불러올려는데
불러올려는 사이트에서 로그인하라고 뜨네요 (물론 로그인 먼저 한 다음이라도...)
아마 정상적인 경로로 접근하지 않으면 로그인하라고 뜨는것 같아요...
그냥 다른 프레임에 주소를 써 넣으면 그냥 열리거든요...
그런데 Msxml2.ServerXMLHTTP.3.0 으로 사용하면
해당 페이지의 권한이 없다고 나오네요...
무슨차이때문인가요?
그리고 해당페이지 소스를 가져올려면 어떤 다른 방법이 있을까요?
하루종일 구글링해서 여러가지 시도해봤지만...
document.documentElement.outerHTML 이 방법도 권한이 없다고 나오고...
이것때문에 몇일동안 머리가 깨질지경입니다. ㅜ.ㅡ
다른 사이트 웹페이지를 긁어오려고 하는가보네요...
문의하신것에 대한 각각의 답변입니다.
1. 프레임에 주소로 이동하면 웹페이지 열리는데 server object 이용할경우 로그인창 뜨는경우
브라우저 통해서 접속한거랑 server object 통해서 접속한거랑 서로 다릅니다.
쉽게 말하면 server object도 별로의 브라우저로 봐야합니다.
그래서 server object로 웹페이지 접속한후 인증을 별도로 해줘야 합니다.
이건 구글링 해보면 아마 나올겁니다. (때에 따라선 접속하려는 사이트 특정상 server object를 이용해서 로그인이 안될수도 있습니다)
2. xmlhttp3.0 사용권한 오류
xmlhttp6.0, xmlhttp3.0 모두 로컬에서만 이용되는 dll (혹은 ocx) 파일입니다.
로컬 pc 자원이기 때문에 기본적으로는 웹을 통해서 해당 dll 접속 못합니다.
xmlhttp6.0이 동작하는 이유는 아마도..기본적으로 iis에 포함되어 있거나 아니면 별도 설치를 했을것 같은데
ms 계열을 안한지 오래되서 그건 잘 모르겠습니다.
암튼, xmlhttp3.0이 가능하도록 하려면 xmlhttp3.0 파일에 대해서 사용권한을 익명이나 웹유저가 접속할수 있도록 설정해줘야합니다.
3. document.documentElement.outerHTML일 이용한방식
보안상 서로 서로 다른 도메인의 내용을 script를 이용해서 가져올수 없습니다.
같은 도메인(1차도메인까지 같아도 됨)내에서는 되는데 다른 도메인은 안됩니다.
나쁜놈들이 악용해서 다 막았습니다.
제가 asp쪽은 손 놓은지 오래되서 원론적인 내용만 생각나고 자세하게 어떻게 해결해야하는 방법은 이제 모릅니다 -_-;
별로 도움되는 답변이 되질 못했네요;;