녹화된 영상 : 클릭하시면 이동됩니다
查看历史消息
기능을 제공합니다. 이 웹페이지를 열려면 클릭하고 게시된 모든 기사를 보려면 계속 스크롤하세요. 이 단계에서는 anyproxy를 기반으로 웹페이지의 html을 수정하고, 페이지가 계속 아래로 스크롤되도록 js 스크립트를 삽입하여 하단으로 스크롤하면 모든 기사 목록을 가져옵니다. 본질적으로 중간자 공격입니다.그림과 같이:
기사 목록 데모 받기:
기사 링크를 하나씩 엽니다.
첫 번째 단계는 anyproxy를 성공적으로 설치하는 것입니다. 이 단계에서는 https를 성공적으로 프록시하고 https의 본문 내용을 볼 수 있도록 자세히 설명된 anyproxy의 공식 튜토리얼을 읽어보세요.
yarn install
yarn start
크롤링된 기사의 내용을 실시간으로 볼 수 있는 result.html이 자동으로 열립니다. 위챗 공식 계정을 클릭하고 클릭하면 기록 메시지가 표시됩니다. 기사가 하나씩 열리고 콘텐츠가 크롤링됩니다.
1. 첫 번째 단계는 공개 계정의 모든 역사적 기사를 얻는 것입니다. anyproxy 프록시가 설정된 실제 시스템에서 기록 메시지를 확인하세요. 이때 WeChat은 기록 기사 웹 페이지를 엽니다. HTML 문서 가져오기: , var msgList
필요한 과거 기사 데이터이고, 간단한 정규 일치를 사용하여 잘못된 문자를 대체하고, JSON.parse가 필요한 형식으로 변환됩니다. anyproxy를 기반으로 웹 페이지가 자동으로 아래로 스크롤되도록 하고 더 많은 기사를 가져오도록 브라우저를 트리거하기 위해 이 HTML 문서에 스크립트를 삽입합니다.
var scrollKey = setInterval ( function ( ) {
window . scrollTo ( 0 , document . body . scrollHeight ) ;
} , 1000 ) ;
웹 페이지가 끝까지 스크롤되면 기사를 다시 가져옵니다. 이때는 동일한 get 요청이지만 Content-Type이 application/json
인 형식이 반환됩니다. 여기서는 동일한 방법을 사용하여 일반 일치를 사용합니다. 찾아서 필요한 형식으로 포맷하세요.
동시에 can_msg_continue
가 0이면 맨 아래로 끌어내려 모든 물품을 획득했다는 뜻이다.
이 시점에서 기사 제목, 저자 및 URL을 포함하여 공개 계정의 모든 기사를 얻었습니다. 하지만 읽은 내용과 좋아요가 없습니다. 특정 기사 링크를 열어야 볼 수 있습니다.
socket . on ( 'url' , function ( data ) {
window . location = data . url ;
} ) ;
DOM 요소가 렌더링된 다음 수집되어 서버로 전송되는지 확인하기 위해 브라우저 측에서 읽기 및 좋아요 수를 지속적으로 확인할 수 있습니다. 또한 anyproxy를 사용하여 직접 확인할 수도 있습니다(여기서는 이전 방법을 사용합니다).
key = setInterval ( function ( ) {
var readNum = $ ( '#readNum3' ) . text ( ) . trim ( ) ;
if ( ! readNum ) return ;
var likeNum = $ ( '#likeNum3' ) . text ( ) . trim ( ) ;
var postUser = $ ( '#post-user' ) . text ( ) . trim ( ) ;
var postDate = $ ( '#post-date' ) . text ( ) . trim ( ) || $ ( '#publish_time' ) . text ( ) . trim ( ) ;
var activityName = $ ( '#activity-name' ) . text ( ) . trim ( ) ;
var js_share_source = $ ( '#js_share_source' ) . attr ( 'href' ) ;
socket . emit ( 'crawler' , {
readNum : readNum ,
likeNum : likeNum ,
postUser : postUser ,
postDate : postDate ,
activityName : activityName ,
js_share_source : js_share_source
} ) ;
} , 1000 ) ;
원리는 매우 간단합니다. 실제 머신 크롤러, 중간자 공격, 자바스크립트 삽입을 기반으로 브라우저가 인간의 작업 프로세스를 시뮬레이션하도록 합니다.
// 删除微信网页的安全策略
delete header [ 'Content-Security-Policy' ] ;
delete header [ 'Content-Security-Policy-Report-Only' ] ;
header [ 'Expires' ] = 0 ;
header [ 'Cache-Control' ] = 'no-cache, no-store, must-revalidate' ;