الفيديو المسجل: انقر للذهاب
查看历史消息
. انقر لفتح صفحة الويب هذه واستمر في التمرير لعرض جميع المقالات المنشورة. في هذه الخطوة، استنادًا إلى Anyproxy، يتم تعديل HTML الخاص بصفحة الويب، ويتم إدخال برنامج نصي js لجعل الصفحة تنتقل إلى الأسفل بشكل مستمر. عند التمرير إلى الأسفل، يتم الحصول على قائمة بجميع المقالات. في الأساس هجوم رجل في الوسط.كما هو موضح في الصورة:
الحصول على عرض قائمة المقالات:
افتح روابط المقالة واحدة تلو الأخرى:
الخطوة الأولى هي تثبيت Anyproxy بنجاح. بالنسبة لهذه الخطوة، يرجى قراءة البرنامج التعليمي الرسمي لـ Anyproxy بالتفصيل، وهو مكتوب بتفصيل كبير للتأكد من أنه يمكنك بنجاح إنشاء وكيل 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 ) ;
عندما يتم تمرير صفحة الويب إلى النهاية، يتم الحصول على المقالة مرة أخرى، وهو نفس طلب الحصول عليه، ولكن يتم إرجاع التنسيق مع نوع المحتوى 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 ) ;
المبدأ بسيط للغاية، استنادًا إلى برامج الزحف الآلية الحقيقية وهجمات الوسيط وحقن نصوص جافا سكريبت، مما يسمح للمتصفح بمحاكاة عملية التشغيل البشرية.
// 删除微信网页的安全策略
delete header [ 'Content-Security-Policy' ] ;
delete header [ 'Content-Security-Policy-Report-Only' ] ;
header [ 'Expires' ] = 0 ;
header [ 'Cache-Control' ] = 'no-cache, no-store, must-revalidate' ;