Video yang direkam: Klik untuk pergi
查看历史消息
. Klik untuk membuka halaman web ini dan terus gulir untuk melihat semua artikel yang diterbitkan. Pada langkah ini, berdasarkan proxy apa pun, html halaman web diubah, dan skrip js dimasukkan untuk membuat halaman terus bergulir ke bawah. Saat halaman digulir ke bawah, daftar semua artikel diperoleh. Pada dasarnya serangan man-in-the-middle.Seperti yang ditunjukkan pada gambar:
Dapatkan demo daftar artikel:
Buka link artikel satu per satu:
Langkah pertama adalah berhasil menginstal anyproxy. Untuk langkah ini, silakan baca tutorial resmi anyproxy secara detail. Ini ditulis dengan sangat rinci untuk memastikan Anda berhasil melakukan proxy https dan melihat konten isi https.
yarn install
yarn start
Hasil.html akan terbuka secara otomatis untuk melihat konten artikel yang dirayapi secara real time. Klik pada akun resmi WeChat dan klik untuk melihat pesan historis. Setelah itu, halaman riwayat akan terus bergulir hingga akhir artikel akan dibuka satu per satu dan dirayapi isinya.
1. Langkah pertama adalah mendapatkan semua artikel sejarah dari akun publik. Di mesin sebenarnya tempat proksi anyproxy telah disiapkan, periksa pesan historis. Saat ini, WeChat akan membuka halaman web artikel historis. Dapatkan dokumen html: , var msgList
adalah data artikel historis yang kita perlukan, pencocokan reguler sederhana digunakan untuk menggantikan karakter ilegal, dan JSON.parse diubah ke dalam format yang kita perlukan. Berdasarkan proxy apa pun, kami memasukkan skrip ke dalam dokumen HTML ini, dengan tujuan membuat halaman web bergulir ke bawah dengan sendirinya dan memicu browser untuk mendapatkan lebih banyak artikel.
var scrollKey = setInterval ( function ( ) {
window . scrollTo ( 0 , document . body . scrollHeight ) ;
} , 1000 ) ;
Saat halaman web digulir hingga akhir, artikel diperoleh lagi. Saat ini, permintaan getnya sama, tetapi format dengan Content-Type sebagai application/json
dikembalikan. Metode yang sama di sini, pencocokan reguler digunakan temukan dan format ke dalam format yang kita butuhkan.
Sedangkan jika can_msg_continue
bernilai 0 berarti sudah ditarik ke bawah dan semua artikel sudah didapat.
Pada titik ini, semua artikel akun publik telah diperoleh, termasuk judul artikel, penulis, dan URL. Tapi tidak ada bacaan dan suka. Anda perlu membuka link artikel tertentu untuk melihatnya.
socket . on ( 'url' , function ( data ) {
window . location = data . url ;
} ) ;
Jumlah pembacaan dan suka dapat diperiksa terus-menerus di sisi browser untuk melihat apakah elemen DOM dirender dan kemudian dikumpulkan dan dikirim ke server. Anda juga dapat memeriksanya langsung dengan proxy apa pun (saya menggunakan metode sebelumnya di sini).
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 ) ;
Prinsipnya sangat sederhana. Berdasarkan perayap mesin nyata, serangan man-in-the-middle, dan menyuntikkan skrip javascript, biarkan browser mensimulasikan proses operasi manusia.
// 删除微信网页的安全策略
delete header [ 'Content-Security-Policy' ] ;
delete header [ 'Content-Security-Policy-Report-Only' ] ;
header [ 'Expires' ] = 0 ;
header [ 'Cache-Control' ] = 'no-cache, no-store, must-revalidate' ;