여기서 말하는 도둑은 ASP의 XML에서 XMLHTTP 컴포넌트가 제공하는 강력한 기능을 이용하여 원격 웹사이트에 있는 데이터(사진, 웹페이지, 기타 파일)를 로컬로 캡쳐하고, 이를 다양한 처리를 거쳐 페이지에 표시하는 것을 말합니다. 데이터베이스에 저장되는 프로그램 유형입니다. 이런 종류의 도둑 프로그램을 사용하면 특정 웹 사이트의 페이지를 변경하여 자신의 페이지로 바꾸거나 특정 웹 사이트의 일부 데이터(기사, 사진)를 저장하는 등 과거에는 전혀 불가능해 보였던 일부 작업을 완료할 수 있습니다. 로컬 데이터베이스에서 사용됩니다. Thief의 장점은 다음과 같습니다. Thief 프로그램의 데이터는 다른 웹사이트에서 가져오고 웹사이트가 업데이트될 때마다 업데이트되므로 웹사이트를 유지 관리할 필요가 없습니다. Thief 프로그램에는 파일이 몇 개만 있고 모든 웹 콘텐츠는 다른 웹사이트에서 가져온 것입니다. 단점은 다음과 같습니다. 대상 웹 사이트가 잘못되면 프로그램도 잘못되고 대상 웹 사이트를 업그레이드하고 유지 관리하는 경우 원격 호출이기 때문에 도둑 프로그램도 그에 따라 속도를 수정해야 합니다. 속도는 로컬 서버에서 데이터를 읽는 것만큼 빠르지만 그보다는 확실히 느립니다. 어때요, 정말 놀랍죠? 이제 도둑 프로그램에 대한 입문 지식을 배워봅시다!
QQ 웹사이트의 일기예보 프로그램을 좀 더 간단하게 공부해 볼까요?
코드는 다음과 같습니다:
<%
오류 발생 시 다음 재개
Server.ScriptTimeOut=9999999
함수 getHTTPage(경로)
t = GetBody(경로)
getHTTPPage=BytesToBstr(t,GB2312)
기능 종료
' 먼저 도둑 프로그램에 대한 일부 초기화 설정을 지정합니다. 위 코드의 기능은 치명적이지 않은 모든 오류를 무시하고 도둑 프로그램의 실행 시간 초과를 매우 긴 시간으로 설정하는 것입니다(실행 시간 초과 오류가 발생하지 않도록). , 원래 기본값을 변환해야 합니다. UTF-8 인코딩을 GB2312 인코딩으로 변환해야 합니다. 그렇지 않으면 XMLHTTP 구성 요소를 직접 사용하여 중국어 문자가 포함된 웹 페이지를 호출하면 코드가 깨집니다.
함수 GetBody(url)
오류 발생 시 다음 재개
검색 설정 = CreateObject(Microsoft.XMLHTTP)
검색 포함
.Open Get, url, False, ,
.보내다
GetBody = .ResponseBody
끝
검색 설정 = 없음
기능 종료
'그런 다음 XMLHTTP 구성 요소를 호출하여 개체를 만들고 초기 설정을 수행합니다.
함수 BytesToBstr(body,Cset)
희미한 객체 스트림
objstream = Server.CreateObject(adodb.stream) 설정
objstream.Type = 1
objstream.Mode =3
objstream.Open
objstream.Write 본문
objstream.위치 = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
objstream = 아무것도 설정하지 않음
기능 종료
함수 Newstring(wstr,strng)
Newstring=Instr(lcase(wstr),lcase(strng))
Newstring<=0이면 Newstring=Len(wstr)
기능 종료
'캡쳐된 데이터를 처리하기 위해서는 adodb.stream 컴포넌트를 호출하고 초기화 설정을 해야 합니다. %>
'다음은 페이지 표시 부분입니다
<%
희미한 wstr,str,url,start,over,city
'사용해야 할 몇 가지 변수를 정의합니다.
도시 = Request.QueryString(id)
'프로그램에서 반환된 ID 변수(즉, 사용자가 선택한 도시)가 id에 할당됩니다.
url=http://appnews.qq.com/cgi-bin/news_qq_search?city=&city&
'여기서 크롤링해야 할 페이지 주소를 설정하세요. 물론 변수를 사용하지 않고 직접 주소를 지정할 수도 있습니다.
wstr=getHTTPage(url)
'지정된 페이지의 모든 데이터를 가져옵니다.
start=Newstring(wstr, <html>)
'처리해야 할 데이터의 헤더를 설정합니다. 이 변수는 크롤링해야 하는 페이지의 소스 코드를 확인하여 다양한 상황에 따라 설정해야 합니다. 이 프로그램에서는 전체 페이지를 크롤링해야 하므로 모든 페이지를 크롤링하도록 설정했습니다. 설정된 콘텐츠는 페이지 콘텐츠마다 고유해야 하며 반복될 수 없습니다.
over=Newstring(wstr, </HTML>)
'start에 해당하는 것은 처리해야 하는 데이터의 꼬리입니다. 마찬가지로 설정된 내용은 페이지에서 고유해야 합니다.
body=mid(wstr,start,over-start)
'표시되는 페이지의 범위를 설정
'이제 Qiankun Shift +++를 사용할 차례입니다. 바꾸기를 통해 데이터에 지정된 문자를 일부 문자로 바꿀 수 있습니다.
body = 교체(body,skin1,날씨 예보-스킨 네트워크)
본문 = 교체(본문,http://appnews.qq.com/cgi-bin/news_qq_search?city,tianqi.asp?id)
'이 프로그램에서는 교체 작업이 완료되었습니다. 다른 요구 사항이 있는 경우 유사한 교체 작업을 계속 수행할 수 있습니다.
응답.본문 쓰기
%>
수정이 필요한 컨텐츠를 교체한 후 수정된 컨텐츠를 페이지에 표시할 수 있습니다. 이것이 프로세스의 끝입니다
프로그램 사용법 및 결과: 위 코드의 설명부분을 제거하고 tianqi.asp로 저장한 후 ASP와 XML을 지원하는 공간에 업로드하여 브라우저에서 실행한다. 이 프로그램을 기반으로 인터페이스 미화 또는 프로그램 최적화를 추가로 수행할 수 있습니다.
위의 내용은 실제로 XMLHTTP 구성 요소의 일부 기본 응용 프로그램에 불과하며 원격 이미지를 로컬 서버에 저장하고 adodb.stream 구성 요소를 사용하여 획득한 데이터를 데이터베이스에 저장하는 등 많은 기능을 구현할 수도 있습니다. 도둑은 다양한 기능과 용도를 가지고 있습니다. 하지만 불법적인 일을 하는 데 사용할 수는 없습니다!
어쩌면 어떤 사람들은 아직도 이런 종류의 도둑질 프로그램이 단지 ASP의 특허인가?라고 묻고 싶어할 것입니다. 아니요, PHP는 fopen 함수를 통해 동일한 효과를 얻을 수 있습니다. PHP 자체의 다양한 특성으로 인해 작성된 도둑 프로그램은 ASP에 비해 크기와 실행 효율성 면에서 분명한 이점이 있습니다. 그러나 여기서는 공간 제한으로 인해 설명하지 않겠습니다. 하나씩 설명해보세요.