Vídeo grabado: haga clic para ir
查看历史消息
. Haga clic para abrir esta página web y siga desplazándose para ver todos los artículos publicados. En este paso, basado en anyproxy, se modifica el html de la página web y se inyecta un script js para que la página se desplace hacia abajo continuamente. Al desplazarse hacia abajo, se obtiene una lista de todos los artículos. Esencialmente un ataque de intermediario.Como se muestra en la imagen:
Obtenga una demostración de la lista de artículos:
Abra los enlaces del artículo uno por uno:
El primer paso es instalar anyproxy con éxito. Para este paso, lea en detalle el tutorial oficial de anyproxy. Está escrito con gran detalle para asegurarse de que pueda proxy https y ver el contenido del cuerpo de https con éxito.
yarn install
yarn start
Se abrirá automáticamente un resultado.html para ver el contenido de los artículos rastreados en tiempo real. Haga clic en una cuenta oficial de WeChat y haga clic para ver los mensajes históricos. Después de eso, la página del historial continuará desplazándose hasta el final. Los artículos se abrirán uno por uno y se rastrearán.
1. El primer paso es obtener todos los artículos históricos de una cuenta pública. En la máquina real donde se configuró el proxy anyproxy, verifique los mensajes históricos. En este momento, WeChat abrirá la página web del artículo histórico. Obtenga un documento html: , var msgList
son los datos históricos del artículo que necesitamos, se utiliza una coincidencia regular simple para reemplazar caracteres ilegales y JSON.parse se convierte al formato que necesitamos. Basado en anyproxy, inyectamos un script en este documento HTML para hacer que la página web se desplace hacia abajo por sí sola y active el navegador para obtener más artículos.
var scrollKey = setInterval ( function ( ) {
window . scrollTo ( 0 , document . body . scrollHeight ) ;
} , 1000 ) ;
Cuando la página web se desplaza hasta el final, el artículo se obtiene nuevamente. En este momento, es la misma solicitud de obtención, pero el formato con Content-Type se devuelve como application/json
. Aquí se utiliza la coincidencia regular. búsquelo y formatéelo en el formato que necesitemos.
Al mismo tiempo, cuando can_msg_continue
es 0, significa que se ha arrastrado hasta el final y se han obtenido todos los artículos.
En este punto, se han obtenido todos los artículos de una cuenta pública, incluido el título del artículo, el autor y la URL. Pero no hay lecturas ni me gusta. Debe abrir el enlace del artículo específico para verlo.
socket . on ( 'url' , function ( data ) {
window . location = data . url ;
} ) ;
La cantidad de lecturas y me gusta se puede verificar continuamente en el lado del navegador para ver si los elementos DOM se procesan y luego se recopilan y se envían al servidor. También puede verificarlos directamente con anyproxy (yo uso el método anterior aquí).
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 ) ;
El principio es muy simple, basado en rastreadores de máquinas reales, ataques de intermediario e inyección de scripts javascript, deje que el navegador simule el proceso de operación humana.
// 删除微信网页的安全策略
delete header [ 'Content-Security-Policy' ] ;
delete header [ 'Content-Security-Policy-Report-Only' ] ;
header [ 'Expires' ] = 0 ;
header [ 'Cache-Control' ] = 'no-cache, no-store, must-revalidate' ;