使用FreeHttp強制登出微信公眾號登陸狀態(實現~原理)


概述

我們使用的部分網站設計成一旦登錄即不允許用戶手動退出,現實場景中是沒有問題的

但如果是在測試或調試過程中就會有強制登出的需求

如果當前使用的是PC瀏覽器,您或許可以通過調試模式清除保持登錄信息的數據實現手動退出。

但是如果當前使用的手機WEB瀏覽器,或者其他web嵌入的方式(比如微信公眾號)退出是十分困難的

下面以退出微信公眾號下的京東到家為例,說明如何使用FreeHttp實現手動退出登錄功能(FreeHttp 說明 https://www.cnblogs.com/lulianqi/p/10428551.html

准備工作

1:您需要為您的移動設備設置Fiddler代理,並安裝證書(手機代理及證書的安裝您可以通過百度查詢到相關文章)

2:FreeHttp的安裝詳見(https://www.cnblogs.com/lulianqi/p/10428551.html#a00

3:進入微信登錄京東到家(測試中使用iphone6s移動設備)

配置

如上圖配置

  • 1:這里需要選擇一個session,該session包含該站點的登錄信息的cookies,您可以逐個查找,當然如果您正在對該站進行測試或調試,您應該很清楚哪條請求包含這些信息
  • 2:選擇完session后,我們使用Quick Rule中的Remove Session Cookies快速創建規則

 

 當您選擇Remove Session Cookies后會彈出上圖對話框,詢問您是否需要修改Set-Cookie的屬性信息(如果不需要修改直接關閉即可),因為有時候當前URL的域可能不是瀏覽器中Cookie的Domian,這個時候您可能需要添加一個Domian來手動指定

  • 3:填寫過濾規則,因為能不是每次都需要告訴終端讓他清除cookies(事實上只需要一次就可以),這個Url一般都是主頁html等關鍵請求(提示:您可以直接拖動session到輸入框中,完成url的輸入)

 

完成后您會發現『Response Modific』頁Add Head加入了許多Set-Cookie(因為無法確認哪個cookie包含着登錄信息,Remove Session Cookies會默認清除所有發現的cookie)
當然大多數情況作為測試或開發人員您是知道頁面哪個cookie標識的用戶狀態,如果是這樣您不需要使用Remove Session Cookies刪除頁面下所有cookie,而可以直接使用delete cookie手動指定需要刪除的cookie即可
點擊確認並設置規則生效

測試

  • 現在您可以在微信里刷新京東到家當前頁面

  • 在列表中可以看到規則已經被匹配到,查看報表信息可以看到修改已經完成(黃色高亮session表示給請求是一個被FreeHttp修改過的請求)

  • 這個時候再次查看微信公眾號里的頁面,您會發現當前已經處於未登錄狀態。

 原理

  • 因為Http本身是無狀態的,如果要維護登錄狀態就需要應用層面實現。

一般應用會將登錄狀態放在客戶端Cookie中(這樣瀏覽器會幫助管理維護cookie),也有一些服務API會將令牌放在自定義header或查詢字符串等其他參數中(這一般出現在需要跨平台的服務中,因為不是所有應用環境都是在瀏覽器中,有些嵌入式設備根本沒有瀏覽器)。

這一點很好區分,您只需要對比登錄狀態下的請求與不登錄狀態下請求的全部即可

我們這里是要清除微信公眾號應用的登錄狀態(大部分都是通過cookie來做到的)

  • 最后問題變成如何清除指定cookie

我們知道瀏覽器中的cookie是一般由請求返回頭中的Set-Cookie指定的,瀏覽器接收到該返回頭即會為指定站點創建Cookie信息(詳細內容可以看這里 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Set-Cookie

在有調試模式的瀏覽器中我們很容易實現,直接右鍵刪除,或通過js刪除,不過對於沒有調試模式的手機終端前面的方法看起來行不通了。

查看Set-Cookie規則,我們可以發現Max-Age屬性(過期時間),那我們只要把過期時間設置的足夠短不就可以騙過瀏覽器,讓它刪除我們想要刪除的cookie

注意這里Set-Cookie是響應頭,所有必須瀏覽器先發起一個請求然后我們修改該請求的響應頭,把帶有Max-Age=1屬性的Set-Cookie寫入就可以了(Set-Cookie: name=delete by FreeHttp; Max-Age=1;Path=/)

改響應的操作就直接通過Fiddler上的FreeHttp插件實現即可,操作即上文所述

FreeHttp詳細使用方法見(https://www.cnblogs.com/lulianqi/p/10428551.html

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM