Записанное видео: нажмите, чтобы перейти
查看历史消息
. Нажмите, чтобы открыть эту веб-страницу, и продолжайте прокручивать ее, чтобы просмотреть все опубликованные статьи. На этом этапе на основе Anyproxy изменяется HTML-код веб-страницы и внедряется js-скрипт, обеспечивающий непрерывную прокрутку страницы. При прокрутке вниз получается список всех статей. По сути, это атака «человек посередине».Как показано на рисунке:
Получить демо-список статей:
Открывайте ссылки статьи по одной:
Первым шагом является успешная установка любого прокси. Для этого подробно прочитайте официальное руководство по любому прокси. Оно написано очень подробно, чтобы убедиться, что вы можете успешно проксировать https и просматривать содержимое тела https.
yarn install
yarn start
Файл result.html будет автоматически открыт для просмотра содержимого просканированных статей в режиме реального времени. Нажмите на официальную учетную запись WeChat и нажмите, чтобы просмотреть исторические сообщения. После этого страница истории продолжит прокручиваться до конца. статьи будут открываться одна за другой и сканироваться по контенту.
1. Первым шагом является получение всех исторических статей публичного учета. На реальном компьютере, где был настроен прокси-сервер Anyproxy, проверьте исторические сообщения. В это время WeChat откроет веб-страницу исторической статьи. Получаем html-документ: , var msgList
— необходимые нам исторические данные статьи, для замены недопустимых символов используется простое регулярное сопоставление, а JSON.parse преобразуется в нужный нам формат. На основе Anyproxy мы встраиваем в этот HTML-документ скрипт, который заставляет веб-страницу прокручиваться вниз и запускать браузер для получения дополнительных статей.
var scrollKey = setInterval ( function ( ) {
window . scrollTo ( 0 , document . body . scrollHeight ) ;
} , 1000 ) ;
Когда веб-страница прокручивается до конца, статья получается снова. На этот раз это тот же запрос на получение, но возвращается формат с Content-Type как application/json
. Здесь используется тот же метод, для которого используется обычное сопоставление. находим и форматируем его в нужный нам формат.
При этом, когда can_msg_continue
равен 0, это означает, что его протянули вниз и все статьи получены.
На данный момент получены все статьи публичного аккаунта, включая название статьи, автора и URL-адрес. Но нет прочтений и лайков. Чтобы увидеть ее, нужно открыть ссылку на конкретную статью.
socket . on ( 'url' , function ( data ) {
window . location = data . url ;
} ) ;
Количество прочтений и лайков можно постоянно проверять на стороне браузера, чтобы увидеть, отображаются ли элементы DOM, а затем собираются и отправляются на сервер. Вы также можете проверять их напрямую с помощью любого прокси (здесь я использую первый метод).
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 ) ;
Принцип очень прост. Основанный на реальных компьютерных сканерах, атаках «человек посередине» и внедрении сценариев JavaScript, позвольте браузеру имитировать процесс работы человека.
// 删除微信网页的安全策略
delete header [ 'Content-Security-Policy' ] ;
delete header [ 'Content-Security-Policy-Report-Only' ] ;
header [ 'Expires' ] = 0 ;
header [ 'Cache-Control' ] = 'no-cache, no-store, must-revalidate' ;