พื้นที่เก็บข้อมูล GitHub: https://github.com/JSREI/js-cookie-monitor-debugger-hook
จีนตัวย่อ |. อังกฤษ
ในยุคที่ข้อมูลไม่มีค่า การเผชิญหน้ากันระหว่างโปรแกรมรวบรวมข้อมูลและโปรแกรมต่อต้านซอฟต์แวร์รวบรวมข้อมูลนั้นรุนแรงมาก โปรแกรมป้องกันซอฟต์แวร์รวบรวมข้อมูลคุกกี้เป็น最常见之一
เว็บไซต์ตั้งค่าคุกกี้ผ่านโค้ด JS ที่สร้างความสับสนมากจนแม้แต่ผู้เป็นแม่ก็ทำ ไม่รู้จัก (โดยปกติเมื่อเรียกดู) ลายนิ้วมือของเซิร์ฟเวอร์ คุกกี้ที่ต้องนำมาเมื่อทำการร้องขอ ฯลฯ ) คุกกี้ที่ต้องนำมาเมื่อเผชิญกับคำขอ แต่ไม่รู้ว่าถูกสร้างขึ้นที่ไหน คุณกำลังดิ้นรนกับประโยคชวนสับสนของ JS นับหมื่นบรรทัดที่แม่ของคุณไม่รู้จัก โดยหวังว่าจะพบที่ที่มีคุกกี้เกิดขึ้น (หากการคิดย้อนกลับนั้นไม่เป็นไปตามหลักวิทยาศาสตร์ คุณอาจสำลักได้สองสามครั้ง...) และ คุณต้องการจะหาสักครั้งไหม คุณกำลังพยายามหลอกตัวเองให้ยอมแพ้ หรือทำไมไม่ลองใช้วิธีจำลองเบราว์เซอร์อย่าง Selenium ล่ะ? หากคุณเป็นคนขี้ขลาด สคริปต์นี้จะช่วยคุณได้! (คุณและฉันต่างรู้ดีว่าย่อหน้านี้เป็นเพียงเรื่องไร้สาระเพื่อสนับสนุนฉากนี้ คุณสามารถข้ามไปได้ หากคุณไม่โชคร้ายพอที่จะอ่านให้จบ...)
ฟังก์ชั่นของสคริปต์นี้แบ่งออกเป็นสองส่วนคร่าวๆ:
สคริปต์นี้จะแทรกโค้ด JS ของตัวเองลงในเพจและ hooks document.cookie
เพื่อทำหน้าที่ต่างๆ ให้สมบูรณ์ ดังนั้น ก่อนที่จะใช้สคริปต์นี้ คุณต้องยืนยันก่อนว่าคุกกี้ที่จะสร้างนั้นถูกสร้างขึ้นผ่าน JS จริงๆ (จะมีการแนะนำวิธีการพิเศษอย่างมากในภายหลัง เพียงตรวจสอบว่าคุกกี้ถูกสร้างขึ้นโดย JS หรือส่งคืนโดยเซิร์ฟเวอร์)
ในปัจจุบัน สคริปต์ Hook จำนวนมากมีท่าทางการเชื่อมต่อที่ไม่ถูกต้อง สคริปต์นี้ใช้ Hooks เพียงครั้งเดียวและทำซ้ำ ซึ่งไม่มีผลกระทบต่อการจัดการคุกกี้ในตัวของเบราว์เซอร์:
นอกเหนือจากฟังก์ชันเบรกพอยต์คุกกี้แล้ว ยังมีการเพิ่มฟังก์ชันตรวจสอบการแก้ไขคุกกี้ ซึ่งสามารถวิเคราะห์คุกกี้บนเพจจากมุมมองของมาโครมากขึ้น:
(ลืมมันซะ เลิกเขียนโค้ดซะ...)
สีใช้เพื่อแยกแยะประเภทการทำงาน:
การดำเนินการแต่ละครั้งจะตามด้วยตำแหน่งรหัส คลิกเพื่อค้นหาตำแหน่งของรหัส JS ที่ทำการดำเนินการ
เริ่มตั้งแต่เวอร์ชัน 0.6 เป็นต้นไป กฎเบรกพอยต์ที่มีฟังก์ชันที่มีประสิทธิภาพมากขึ้นและการกำหนดค่าที่ยืดหยุ่นมากขึ้นได้ถูกนำมาใช้ และกลไกเหตุการณ์ได้ถูกนำมาใช้เพื่อแบ่งย่อยการแก้ไขคุกกี้ออกเป็นสามเหตุการณ์: เพิ่ม ลบ และอัปเดต ซึ่งสนับสนุนเบรกพอยต์ที่มีรายละเอียดมากขึ้น กิจกรรมคุกกี้ โปรดดูรายละเอียดในส่วนที่ 5 ของบทความนี้
เหตุใดจึงได้รับการออกแบบเช่นนี้? สถานการณ์ที่พบบ่อยคือคุกกี้ป้องกันการรวบรวมข้อมูลบนเว็บไซต์เป้าหมายถูกตั้งค่าโดย JS แต่ตรรกะของโค้ด JS คือการลบออกอย่างเมามันก่อน จากนั้นจึงลบออกหลายครั้งก่อนที่จะเพิ่มมูลค่าจริงในการตั้งค่าคุกกี้ วิธีนี้สามารถต่อต้านการดีบัก General Cookie Hook ได้อย่างแน่นอน
นี่คือตัวอย่างหนึ่ง เช่น การป้องกันคุกกี้ของ F5 มีคุกกี้ TS51c47c46075
ที่ถูกลบหลายครั้งแล้วเพิ่มอีกครั้ง: ในกรณีนี้ คุณสามารถตั้งค่าเบรกพอยต์สำหรับเหตุการณ์คุกกี้ ชื่อ TS51c47c46075
เพื่อหลีกเลี่ยงไม่ให้เหตุการณ์การลบสีแดงเกิดความสับสน
ตามทฤษฎี ตราบใดที่โค้ด JS ของสคริปต์นี้สามารถแทรกลงในเพจได้ ปลั๊กอิน Grease Monkey ก็ใช้เพื่อแทรกโค้ด JS ลงในเพจ
สามารถติดตั้งปลั๊กอิน Grease Monkey ได้จาก Chrome Store:
https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
หากคุณไม่สามารถหลีกเลี่ยงกำแพงได้ คุณสามารถค้นหา "Tampermonkey" บน Baidu เพื่อค้นหาเว็บไซต์บุคคลที่สามที่จะดาวน์โหลด อย่างไรก็ตาม โปรดระวังอย่าติดตั้งปลั๊กอินที่เป็นอันตรายปลอม ขอแนะนำให้ติดตั้งจากเจ้าหน้าที่ เก็บ.
นอกจากนี้ยังมีเครื่องมืออื่นๆ ให้เลือก ตราบใดที่รหัส JS ของสคริปต์นี้สามารถแทรกลงในด้านบนของหน้าเพื่อดำเนินการได้
คุณสามารถติดตั้งสคริปต์ Grease Monkey ได้จากร้านค้าอย่างเป็นทางการ หรือคุณสามารถคัดลอกโค้ดและสร้างมันขึ้นมาในเครื่องได้
แนะนำให้ใช้วิธีนี้ สคริปต์ Oil Monkey ที่ติดตั้งจาก Oil Monkey Store สามารถอัปเดตได้โดยอัตโนมัติเมื่อมีการอัปเดตเวอร์ชันต่อๆ ไปใน Oil Monkey Store:
https://greasyfork.org/zh-CN/scripts/419781-js-cookie-monitor-debugger-hook
หากคุณพบว่าการอัปเดตอัตโนมัติน่ารำคาญเกินไป หรือมีข้อกังวลอื่นๆ คุณสามารถคัดลอกโค้ดของสคริปต์นี้ได้ที่นี่:
https://github.com/CC11001100/js-cookie-monitor-debugger-hook/blob/main/js-cookie-monitor-debugger-hook.js
หลังจากตรวจสอบและยืนยันว่าไม่มีปัญหาแล้ว คุณสามารถเพิ่มลงในแผงการจัดการของ Oil Monkey ได้
โปรดทราบว่าการตรวจสอบจะต้องมีความเข้าใจโดยรวมในระดับมหภาค ไม่ใช่เพื่อค้นหารายละเอียด (โดยปกติแล้วการใช้เครื่องมือที่ถูกต้องสามารถปรับปรุงประสิทธิภาพได้ แน่นอนว่าความรู้ของบุคคลนั้นมีจำกัด และทุกคนก็ยินดีที่จะให้ข้อเสนอแนะเกี่ยวกับวิธีการที่น่าสนใจมากขึ้นในการ เล่น) เช่น เมื่อเปิดเพจ:
จากภาพนี้ เราสามารถมีความเข้าใจโดยทั่วไปว่าคุกกี้ใดบ้างบนเว็บไซต์นี้ที่ดำเนินการโดย JS เวลาและวิธีการดำเนินการ
อีกตัวอย่างหนึ่งคือการใช้จอภาพเพื่อสังเกตรูปแบบการเปลี่ยนแปลงของคุกกี้ ตัวอย่างเช่น ในหน้านี้ คุณสามารถดูตามเวลาที่คุกกี้นี้จะมีการเปลี่ยนแปลงทุกๆ ครึ่งนาที:
(2021-1-7 18:27:49 อัปเดต v0.4 เพื่อเพิ่มฟีเจอร์นี้): หากมีข้อมูลที่คอนโซลพิมพ์มากเกินไป คุณสามารถใช้ตัวกรองที่มาพร้อมกับเบราว์เซอร์ Chrome เพื่อกรองรูปแบบของ บันทึกที่พิมพ์ได้รับการรวมเป็นหนึ่งเดียว เพียงต้องการ cookieName = Cookie名字
ตัวอย่างเช่น:
โปรดทราบว่าเมื่อค้นหา ตรวจสอบให้แน่ใจว่าข้อมูลการค้นหาของคุณถูกถอดรหัส URL มิฉะนั้นอาจไม่ตรงกัน เนื่องจากข้อมูลการพิมพ์คอนโซลจะถูกถอดรหัส URL ก่อนแล้วจึงพิมพ์
หากคุณไม่แน่ใจว่าคุกกี้ที่คุณต้องการตั้งค่านั้นสร้างขึ้นในเครื่องหรือส่งคืนโดยเซิร์ฟเวอร์ที่ร้องขอ set-cookie
คุณสามารถเปิดสคริปต์นี้ รีเฟรชหน้าของเว็บไซต์เป้าหมาย จากนั้นค้นหาชื่อคุกกี้ในคอนโซล วิธีการจะเหมือนกับข้างต้น ส่วนนี้จะคล้ายกัน เมื่อชื่อของคุกกี้สั้นและไม่ซ้ำกัน คุณสามารถเพิ่ม cookieName
เพื่อช่วยวางตำแหน่งได้ เช่น:
cookieName = v
บางครั้งเว็บไซต์เป้าหมายอาจตั้งค่าคุกกี้ซ้ำๆ ด้วยค่าเดียวกัน ตัวแปรนี้ใช้เพื่อละเว้นเหตุการณ์ดังกล่าว:
โดยทั่วไป เพียงแค่คงค่าเริ่มต้นไว้
@since v0.6
เอกสารส่วนนี้ใช้กับเวอร์ชัน v0.6+ หากเวอร์ชันท้องถิ่นของคุณน้อยกว่า 0.6 โปรดอัปเกรดเวอร์ชันก่อนอ่านเอกสาร
เริ่มต้นจากเวอร์ชัน 0.6 จุดแตกหักเมื่อค่าของการเปลี่ยนแปลงคุกกี้มีความซับซ้อนมากและยังกลายเป็นเรื่องง่ายอีกด้วย ความซับซ้อนเกิดจากการนำกลไกเหตุการณ์มาใช้ และความเรียบง่ายเป็นเพราะการกำหนดค่ากฎจุดพักนั้นง่ายขึ้น และมีความยืดหยุ่นมากขึ้น
กฎเบรกพอยต์สามารถแบ่งออกเป็น标准规则
และ简化规则
กฎมาตรฐานมีไว้เพื่อการนำไปใช้งานและการประมวลผลที่ง่ายดายที่ด้านล่างของโปรแกรม เมื่อการกำหนดค่ากฎแบบง่ายไม่สามารถกลับมาตรวจสอบอีกครั้งเพื่อดูวิธีกำหนดค่ากฎมาตรฐานเมื่อตรงตามความต้องการของคุณ
กฎทั้งหมดได้รับการกำหนดค่าในอาร์เรย์ debuggerRules
และมีตัวแปรอยู่ที่ส่วนหัวของสคริปต์: หากคุณไม่พบ คุณสามารถกด Ctrl+F เพื่อค้นหาตามชื่อของตัวแปร:
debuggerRules
ตัวแปรนี้เป็นประเภทอาร์เรย์ซึ่งจัดเก็บเงื่อนไขกฎบางอย่างเพื่อกำหนดว่าเบรกพอยต์จะถูกป้อนภายใต้สถานการณ์ใด
โปรดทราบว่านี่คืออาร์เรย์ และกฎในอาร์เรย์อยู่ในความสัมพันธ์แบบ OR เมื่อมีการทริกเกอร์เหตุการณ์การแก้ไขคุกกี้ แต่ละกฎจะถูกจับคู่ตามลำดับ ตราบใดที่กฎหนึ่งข้อถูกจับคู่สำเร็จ ระบบจะป้อนเบรกพอยต์
ป้อนเบรกพอยต์เมื่อคุกกี้ชื่อ foo
เปลี่ยนแปลง:
const debuggerRules = [ "foo" ] ;
การระบุสตริงในลักษณะข้างต้นจะจับคู่ชื่อคุกกี้หากเท่ากับสตริงที่กำหนด
โปรดทราบว่าหากมีส่วนที่เข้ารหัส URL ของการจับคู่แบบตรงทั้งหมดที่นี่ จะต้องถอดรหัส URL ก่อนแล้วจึงวางที่นี่ ส่วนอื่นๆ ที่เกี่ยวข้องกับสตริงจะเหมือนกันและจะไม่อธิบายอีก
หากชื่อคุกกี้มีส่วนที่เปลี่ยนแปลงตลอดเวลา เช่น การประทับเวลา UUID ฯลฯ ซึ่งไม่สามารถระบุตำแหน่งตามชื่อได้ ระบบจะใช้การจับคู่แบบปกติ:
const debuggerRules = [ / foo.+ / ] ;
ในกรณีส่วนใหญ่ เฉพาะการกำหนดค่าทั้งสองนี้เท่านั้นก็เพียงพอแล้ว
มาฝึกกันเลยเมื่อเปิดหน้านี้
https://www.ishumei.com/trial/captcha.html
คุณจะเห็นว่าสคริปต์ตรวจพบการทำงานของคุกกี้บางอย่าง:
หนึ่งในนั้นคือ smidV2
ที่น่าสงสัย ดังนั้นเราจึงเพิ่มเบรกพอยต์ให้:
หลังจากแก้ไขอาร์เรย์ debuggerRules
แล้ว อย่าลืมกด Ctrl+S เพื่อบันทึกสคริปต์ เนื่องจาก Oil Monkey แทรกโค้ด JS เมื่อโหลดเพจ คุณจึงต้องรีเฟรชเพจและฉีดใหม่อีกครั้ง เมื่อเพจถูกรีเฟรช เบรกพอยต์จะถูกป้อนโดยอัตโนมัติ:
ในกล่องสีแดง A ในภาพด้านบนคือตัวแปรบางตัวที่ส่งผ่านเข้ามาเป็นพิเศษ โดยการเลื่อนเมาส์ไปเหนือตัวแปรเหล่านี้เพื่อดูค่า เราจะสามารถทราบเงื่อนไขบางอย่างของเบรกพอยต์ปัจจุบันโดยประมาณได้:
จากนั้นจะมีกล่องสีแดง B. เราตั้งค่าเบรกพอยต์คุกกี้เพื่อติดตาม call stack และค้นหาตำแหน่งที่สร้างคุกกี้ กล่องสีแดงคือ call stack ของสคริปต์นี้ มีโลโก้ userscript.html
ที่ชัดเจน ส่วนนี้ของ call stack
จากนั้นติดตาม call stack และคุณจะเห็นว่าตั้งค่าคุกกี้ไว้ที่ใด:
แน่นอนว่ามันไม่มีประโยชน์สำหรับเราที่จะดูสแต็กนี้ สิ่งที่เราต้องทำคือค่อยๆ ก้าวไปข้างหน้าจนกว่าเราจะค้นหาตำแหน่งที่สร้างคุกกี้ได้จริง อย่างไรก็ตาม สคริปต์นี้สามารถช่วยคุณกำหนดจุดพักเท่านั้น ของดวงดาวและทะเลจะขึ้นอยู่กับมันในภายหลัง!
ป้อนเบรกพอยต์เมื่อมี添加
คุกกี้ชื่อ foo
:
const debuggerRules = [ { "add" : "foo" } ] ;
ป้อนเบรกพอยต์เมื่อคุกกี้ชื่อ foo
ถูก删除
:
const debuggerRules = [ { "delete" : "foo" } ] ;
ป้อนเบรกพอยต์เมื่อมีคุกกี้ชื่อ foo
อยู่แล้ว แต่มี更新
ค่า :
const debuggerRules = [ { "update" : "foo" } ] ;
สามารถระบุเงื่อนไขได้หลายเงื่อนไขพร้อมกัน และป้อนเบรกพอยท์เมื่อ添加和更新
ซึ่งเทียบเท่ากับการยกเว้นการลบ:
const debuggerRules = [ { "add|update" : "foo" } ] ;
สามารถใช้สตริงหรือนิพจน์ทั่วไปได้ทุกที่ที่เกี่ยวข้องกับการจับคู่ชื่อคุกกี้:
const debuggerRules = [ { "add" : / foo_d+ / } ] ;
กฎแบบง่ายข้างต้นจะถูกแปลงเป็นกฎมาตรฐาน คุณยังสามารถกำหนดค่ากฎมาตรฐานได้โดยตรงในอาร์เรย์ debuggerRules
{
"events": "{add|delete|update}",
"name": {"cookie-name" | /cookie-name-regex/},
"value": {"cookie-value" | /cookie-value-regex/}
}
ประเภทสตริง ซึ่งระบุประเภทกิจกรรมที่ตรงกับกฎนี้ อาจเป็นกิจกรรม |
เช่น add
หรือหลายกิจกรรม คุณยังสามารถเพิ่ม add|update
|
ด้วย เพิ่มช่องว่างทั้งสองด้าน เช่น add | update
เมื่อมีการกำหนดค่าประเภทเหตุการณ์ จะตรงกับประเภทเหตุการณ์ที่กำหนดเท่านั้น เมื่อไม่ได้กำหนดค่าตัวเลือกนี้ ประเภทเหตุการณ์ทั้งหมดจะถูกจับคู่ตามค่าเริ่มต้น
อาจเป็นสตริงหรือรูปแบบปกติได้ ซึ่งจะเป็นจริงเมื่อชื่อคุกกี้ตรงกับสตริงที่กำหนดหรือรูปแบบปกติไม่สามารถละเลยได้และต้องกำหนดค่า
อาจเป็นสตริงหรือรูปแบบปกติได้ กฎนี้เป็นจริงเมื่อค่าคุกกี้ตรงกับสตริงที่กำหนดหรือรูปแบบปกติ ไม่จำเป็นต้องกำหนดค่า ตัวเลือกนี้จะถูกละเว้น
มีการแนะนำการกำหนดค่ากฎเบรกพอยต์ก่อนหน้านี้ และมีการกล่าวถึงประเภทของเหตุการณ์หลายครั้ง เรารู้เพียงสตริงของชื่อที่สอดคล้องกับแต่ละเหตุการณ์ แต่เรายังไม่รู้ว่าแต่ละเหตุการณ์หมายถึงอะไรในระดับล่างสุด เหตุการณ์ กลไกการตระหนักรู้ของเหตุการณ์
การเปลี่ยนแปลงคุกกี้แบ่งออกเป็นการเพิ่มคุกกี้ การลบคุกกี้ และการอัปเดตค่าคุกกี้ที่มีอยู่ แต่ละเหตุการณ์สอดคล้องกับชื่อเหตุการณ์:
คุกกี้นี้ไม่เคยมีอยู่ในเครื่องมาก่อน และนี่เป็นครั้งแรกที่มีการเพิ่มคุกกี้ อาจเป็นครั้งแรกที่คุณเยี่ยมชมเว็บไซต์นี้ หรือคุณอาจล้างคุกกี้แล้วเยี่ยมชมอีกครั้ง หรือคุกกี้ใหม่จะถูกสร้างขึ้นทุกครั้งที่คุณเยี่ยมชมเว็บไซต์ หรืออาจเป็นได้ว่าโค้ดของเว็บไซต์จะลบคุกกี้และเพิ่มใหม่อีกครั้ง ซึ่งจะทำให้เกิดเหตุการณ์การเพิ่มคุกกี้
ตัวอย่างเช่น รันโค้ดต่อไปนี้ เพื่อให้แน่ใจว่าไม่มีคุกกี้นี้มาก่อน ระบบจะเพิ่มการประทับเวลาลงในชื่อของคุกกี้:
document . cookie = "foo_" + new Date ( ) . getTime ( ) + "=bar; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/" ;
เมื่อเรารันโค้ดบรรทัดนี้ในคอนโซล เหตุการณ์ Cookie Add จะถูกทริกเกอร์:
เมื่อมีคุกกี้อยู่แล้วในเครื่องและคุณพยายามตั้งค่าให้กับคุกกี้นั้น กิจกรรมคุกกี้การอัปเดตจะถูกทริกเกอร์
ตัวอย่างเช่น รหัสต่อไปนี้:
document . cookie = "foo_10086=blabla; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/" ;
document . cookie = "foo_10086=wuawua; expires=Fri, 31 Dec 9999 23:59:59 GMT; path=/" ;
คำสั่งแรกในการตั้งค่าคุกกี้จะทริกเกอร์เหตุการณ์คุกกี้ใหม่ และคำสั่งที่สองในการตั้งค่าคุกกี้จะทริกเกอร์เหตุการณ์การอัปเดตคุกกี้เนื่องจากมีคุกกี้ที่จะตั้งค่าอยู่แล้ว
หากนักพัฒนาส่วนหน้าแจ้งการหมดอายุเร็วกว่าเวลาปัจจุบันเมื่อตั้งค่าคุกกี้ แสดงว่าจำเป็นต้องลบคุกกี้ ตัวอย่างเช่น วิธีทั่วไปในการลบคุกกี้คือ:
const expires = new Date ( new Date ( ) . getTime ( ) - 1000 * 30 ) . toGMTString ( ) ;
document . cookie = "foo=; expires=" + expires + "; path=/"
เมื่อเรารันโค้ดนี้ในคอนโซล เหตุการณ์การลบคุกกี้จะถูกทริกเกอร์:
จากที่กล่าวข้างต้น จะเห็นได้ว่าการกระตุ้นให้เกิดเหตุการณ์การลบคุกกี้มีจุดประสงค์เพื่อตรวจจับการหมดอายุเท่านั้น และจะไม่ตรวจสอบว่ามีคุกกี้อยู่ก่อนหน้านี้หรือไม่
ดังที่ได้กล่าวไว้ก่อนหน้านี้ มีประเภทเหตุการณ์เมื่อกำหนดค่ากฎเบรกพอยต์ของคุกกี้ จริงๆ แล้ว ประเภทเหตุการณ์แต่ละประเภทสอดคล้องกับบิตสถานะที่ระบุว่าจุดพักของประเภทเหตุการณ์นี้เปิดอยู่หรือไม่ ลำดับความสำคัญของบิตธงนี้สูงที่สุด หากไม่ใช่ เมื่อเปิดเบรกพอยต์การลบคุกกี้ และเหตุการณ์การลบคุกกี้ถูกทริกเกอร์ ก่อนอื่นจะตรวจสอบว่าเบรกพอยต์การลบคุกกี้เปิดอยู่หรือไม่ หากปิดอยู่ กิจกรรมจะถูกละเว้นและจะไม่มีความพยายามอีกต่อไป ถูกสร้างขึ้นเพื่อให้ตรงกับกฎเบรกพอยต์ (ควบคุมโดยเครื่องมือสำหรับนักพัฒนา) บันทึกของเหตุการณ์การลบนี้จะยังคงพิมพ์อยู่บนแพลตฟอร์ม)
ตอนนี้สถานการณ์มีความซับซ้อนมาก ให้เรามาดูกระบวนการเบรกพอยต์คุกกี้เล็กๆ นี้กัน:
ตามค่าเริ่มต้น เฉพาะเบรกพอยท์สำหรับเหตุการณ์การเพิ่มคุกกี้และเหตุการณ์การแก้ไขคุกกี้เท่านั้นที่เปิดใช้งาน:
เนื่องจากภายใต้สถานการณ์ปกติ การเพิ่มคุกกี้และการอัปเดตคุกกี้อาจทำให้เกิดความสับสนได้ ทั้งสองอย่างนี้กำหนดค่าให้กับคุกกี้ ในกรณีส่วนใหญ่ เราจะไม่ใส่ใจกับเหตุการณ์ที่คุกกี้ถูกลบ ดังนั้นนี่คือวิธีการตั้งค่าที่นี่ หากไม่ตรงตามความต้องการของคุณ หากจำเป็น คุณสามารถแก้ไขค่าที่สอดคล้องกันของ enableEventDebugger
ได้ด้วยตัวเอง
หากคุณพบปัญหาใด ๆ ระหว่างการใช้งาน คุณสามารถให้ข้อเสนอแนะใน Issues
บน GitHub คุณยังสามารถให้ข้อเสนอแนะในพื้นที่แสดงความคิดเห็นของสคริปต์ Grease Monkey หรือคุณสามารถส่งอีเมลถึงฉัน และฉันจะจัดการกับมันโดยเร็วที่สุด เป็นไปได้หลังจากได้เห็นมัน
ตั้งแต่เวอร์ชัน v0.6 เป็นต้นไป มีการเพิ่มตัวแปรเพื่อปรับขนาดแบบอักษรของบันทึกที่พิมพ์โดยสคริปต์นี้บนคอนโซล ในหน่วย px:
เมื่อเวอร์ชันวนซ้ำ เวอร์ชันนั้นอาจไม่อยู่ที่ตำแหน่งนี้อีกต่อไป หากคุณไม่พบในคราวเดียว ให้ค้นหาในโค้ด:
consoleLogFontSize
จากนั้นแก้ไขค่าของตัวแปรนี้
หรืออีกวิธีหนึ่ง คุณสามารถกด Ctrl+ล้อเมาส์ ในคอนโซลเครื่องมือของนักพัฒนาซอฟต์แวร์เพื่อซูมและปรับขนาดโดยรวมได้ นี่คือฟังก์ชันที่มาพร้อมกับเบราว์เซอร์ Chrome
ตามที่อธิบายไว้ตอนต้นของบทความนี้ สคริปต์นี้จะต้องถูกแทรกลงในจุดเริ่มต้นของเพจและดำเนินการก่อนที่ Hook จะสำเร็จ สำหรับทั้งเพจที่คล้ายกับเลเยอร์แรกของ Accelerator จะมีเพียงสคริปต์เดียวเท่านั้นที่จะถูกส่งกลับ นี่คือ ตรรกะภายใน:
< script >
document . cookie = 这里是一些奇奇怪怪的JS用于计算出Cookie ;
location . href = "跳转走了" ;
</ script >
คุกกี้ได้รับการตั้งค่าและเปลี่ยนเส้นทางไปยังหน้าใหม่ทันที สำหรับการดำเนินการนี้ Hook อาจไม่พร้อมใช้งาน นี่เป็นปัญหากับสคริปต์ Grease Monkey หากคุณยืนยันใน Hooking คุณสามารถใช้พร็อกซีที่ค้างเพื่อแทรกสคริปต์นี้ได้ URL นี้ ส่วนหัวการตอบกลับ
ด้านล่างนี้คือบทสรุปของตัวอย่างเชิงปฏิบัติของวิศวกรรมย้อนกลับโดยใช้สคริปต์นี้:
คลิกฉันเพื่อเข้าสู่หน้าการนำทาง
โปรเจ็กต์นี้แยกจาก: https://github.com/CC11001100/crawler-js-hook-framework-public/tree/master/001-cookie-hook#%E7%9B%91%E6%8E%A7%E5 %AE%9A%E4%BD%8Djavascript%E6%93%8D%E4%BD%9คุกกี้
หลังจากเปลี่ยนเนมสเปซแล้ว จำนวนการติดตั้งก็อาจจะถูกล้างออกไป ผมแคปหน้าจอไว้เป็นที่ระลึก ณ ตอนนี้ (2022-7-29 21:40:01) จำนวนการติดตั้งเกิน 300 ครั้งแล้ว รู้สึกเหมือนเป็นอย่างนั้น ใหญ่มากสำหรับเครื่องมือเล็กๆ ในสนามแคบๆ ไม่ใช่เรื่องง่ายอีกต่อไป...
ขอบคุณชาวเน็ตที่ตอบรับคำติชม ขอบคุณที่ให้การสนับสนุน
js-cookie-monitor-debugger-hook ได้เข้าร่วมโครงการ 404 Star Chain แล้ว
สแกนรหัส QR เพื่อเข้าร่วมกลุ่มแลกเปลี่ยนเทคโนโลยีย้อนกลับ:
หากรหัส QR ของกลุ่มหมดอายุ คุณสามารถเพิ่มฉันใน WeChat ส่วนตัวและส่ง [Reverse Group] เพื่อเข้าร่วมกลุ่มของคุณ:
คลิกที่นี่หรือสแกนรหัส QR เพื่อเข้าร่วมกลุ่มแลกเปลี่ยน TG: