<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>

      ?
      因?yàn)榇蟛糠止娞?hào)web應(yīng)用實(shí)際登錄都是使用用戶微信認(rèn)證登錄,下文主要是提供一種方法使在PC端使用任意瀏覽器繞過(guò)微信認(rèn)證完成登錄,后面就可以在瀏覽器中使用或調(diào)試web應(yīng)用。
      ? ?
      應(yīng)用服務(wù)器(我們自己的第三方應(yīng)用程序)需要知道是誰(shuí)在訪問(wèn)服務(wù)(登錄),而在微信公眾號(hào)應(yīng)用中登錄一般都是使用靜默的oauth2,由微信認(rèn)證用戶的真實(shí)性,并通知應(yīng)用服務(wù)器當(dāng)前用戶是哪位(openid)
      ? 那能不能跳過(guò)微信應(yīng)用程序由第三方來(lái)模擬(模擬微信應(yīng)用程序,騙過(guò)微信oauth2服務(wù)器)完成oauth2授權(quán)?
      當(dāng)然如果您本身就是公眾號(hào)的管理者那可以直接設(shè)置自己的帳號(hào)為該公眾號(hào)開發(fā)者帳號(hào),作為開發(fā)者帳號(hào)其實(shí)這些都不要去關(guān)心,因?yàn)槟憧梢灾苯邮褂梦⑿砰_發(fā)者工具去完成授權(quán),然后在開發(fā)者工具中進(jìn)行調(diào)試
      但是即便擁有公眾號(hào)開發(fā)者權(quán)限,大部分基于UI的自動(dòng)化測(cè)試工具無(wú)法控制微信開發(fā)者工具,基本上都是控制瀏覽器本身,最終也還是需要在瀏覽器中提供驗(yàn)證。 ? ? ? ?
      ? 上圖是展示的一個(gè)一般情況下的微信授權(quán)過(guò)程。(
      https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842
      <https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140842>) ? 請(qǐng)求1
      :一般就是一個(gè)對(duì)公眾號(hào)網(wǎng)頁(yè)的范圍,一旦我們自己的應(yīng)用服務(wù)器發(fā)現(xiàn)這個(gè)用戶授權(quán)失效(沒有相應(yīng)cookie,或cookie對(duì)不上),那服務(wù)器返回302,要求用戶(微信APP內(nèi)置
      瀏覽器)跳轉(zhuǎn)至微信授權(quán)服務(wù)器
      『https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect』
      這里有個(gè)關(guān)鍵信息appid,應(yīng)用服務(wù)器會(huì)把a(bǔ)ppid帶上,以便微信授權(quán)服務(wù)器識(shí)別是那個(gè)公眾號(hào)來(lái)授權(quán)了 ? 請(qǐng)求2,3
      :用戶按302的指示向微信服務(wù)器進(jìn)行授權(quán),在2,3中微信用戶不僅把之前的appid帶上,還帶上了uni(user information
      正常也只在微信跟微信服務(wù)通訊中用),跟一個(gè)關(guān)鍵的key。(這個(gè)key值每次授權(quán)不不一樣,所以保存下來(lái)重放也無(wú)效),猜測(cè)key是由微信應(yīng)用程序根據(jù)用戶信息,公眾號(hào)信息加密合成的,外部應(yīng)用程序也是很難仿照。第2步
      的 appid與uin向微信服務(wù)器換取了uuid,第3步,微信返回了關(guān)鍵的code參數(shù),并通知微信應(yīng)用程序301到 我們的應(yīng)用服務(wù)的地址。
      (實(shí)際上一旦應(yīng)用服務(wù)器拿到code,后面的步驟就可以不一定一定需要微信APP參與了) ? 請(qǐng)求4
      :用戶帶著微信返回的code請(qǐng)求我們的應(yīng)用服務(wù)器,我們自己的應(yīng)用服務(wù)器拿到code后向微信授權(quán)服務(wù)器換取網(wǎng)頁(yè)授權(quán)access_token
      『https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code』
      注意這個(gè)請(qǐng)求需要帶上secret,即表示這個(gè)請(qǐng)求只能由我們的應(yīng)用服務(wù)器來(lái)完成(secret不能公開)
      完成請(qǐng)求5后我們的應(yīng)用服務(wù)器已經(jīng)拿到openid,access_token
      ,簡(jiǎn)單的應(yīng)用取得openid后即已經(jīng)能確定用戶的身份了。如果需要用戶的詳細(xì)信息可以使openid,access_token用進(jìn)一步向微信服務(wù)器請(qǐng)求 ? 結(jié)束
      :一般應(yīng)用服務(wù)器使用用戶的openid標(biāo)識(shí)用戶,所以得到通過(guò)用戶請(qǐng)求中的code獲取到openid后即表示用戶已經(jīng)被認(rèn)證,應(yīng)用服務(wù)器此時(shí)通常在這個(gè)請(qǐng)求的response中加入Set-Cookie將登錄信息寫入微信瀏覽器(或者對(duì)之前的cookie的認(rèn)證信息標(biāo)記為有效)
      ? ?
      通過(guò)上面簡(jiǎn)單的步驟可以看出來(lái)無(wú)論是客戶端(微信)還是應(yīng)用服務(wù)器都有私有的類似secret的數(shù)據(jù),來(lái)保證各自的不可偽造性。所以無(wú)論是想要偽造誰(shuí)都不是那么簡(jiǎn)單 ?
      但是一旦微信oauth2完成后的安全性就會(huì)變成一般瀏覽器的一樣,應(yīng)用服務(wù)器驗(yàn)證用戶基本上都憑借請(qǐng)求中帶的含有十分信息的cookie。也就是說(shuō)我們只要能在微信公眾號(hào)(服務(wù)號(hào))應(yīng)用完成認(rèn)證后將相應(yīng)的cookie取出并寫入瀏覽器(或者其他調(diào)試工具),那瀏覽器就可以通過(guò)后面應(yīng)用服務(wù)器的身份驗(yàn)證(無(wú)論當(dāng)前網(wǎng)頁(yè)使用怎樣的域名甚至是前端人員的本地頁(yè)面)
      ? 那現(xiàn)在就是2個(gè)步驟:
      *
      獲取網(wǎng)站授權(quán)完成后的cookie(cookie可能會(huì)有很多,而我們其實(shí)不用關(guān)注哪個(gè)是認(rèn)證用戶信息用的,全部拿過(guò)來(lái)就行了)。對(duì)于cookie的獲取其實(shí)還是比較方便的,如果被設(shè)置為微信公眾號(hào)的開發(fā)者可以直接使用微信web開發(fā)者工具,調(diào)試信息包括cookies也都會(huì)有,如果不是開發(fā)者無(wú)法進(jìn)入調(diào)試模式也沒有關(guān)系,任何針對(duì)http協(xié)議及更底層協(xié)議的抓包工具都可以查看request所攜帶的cookie信息。
      *
      然后就是將cookies信息寫入瀏覽器,如果是瀏覽器可以在Console中修改cookies,不過(guò)要求必須必須帶有js執(zhí)行能力的控制臺(tái)的瀏覽器。還是一個(gè)就是通過(guò)response的head頭
      Set-Cookie來(lái)完成cookie的寫入及修改。 ? 下面接受一種更簡(jiǎn)單的步驟完上面2個(gè)步驟 使用Fiddler插件freeCookies
      完成cookies的操作 (下載及使用說(shuō)明:https://www.cnblogs.com/lulianqi/p/9481203.html
      <https://www.cnblogs.com/lulianqi/p/9481203.html>) ?
      直接在手機(jī)微信上打開公眾號(hào)(訂閱號(hào))頁(yè)面,使用fiddler抓取指定網(wǎng)站任意頁(yè)面請(qǐng)求(也可以使用PC版微信打開公眾號(hào)頁(yè)面) 進(jìn)入free cookies
      標(biāo)簽頁(yè)(free cookies 插件下載地址 使用說(shuō)明) 選擇目標(biāo)域名網(wǎng)址的任意頁(yè)面請(qǐng)求(注意圖片及js資源可能不含有cookies信息)點(diǎn)擊Get
      Cookies獲取cookie (如下圖) ? ? 打開本地調(diào)試頁(yè)面(也可以是其他域名或是同一域名) ? ?
      填寫目標(biāo)地址到UrlFilter,勾選Injeck Cookies,在瀏覽器中對(duì)該站點(diǎn)任意請(qǐng)求進(jìn)行刷新操作(cookie
      寫入完成后建議取消勾選,或者不要勾選Inject Always) 寫入cookies后就可以看到頁(yè)面再與服務(wù)器的交互就已經(jīng)完成了“登錄” ? ?
      最后下圖展示一張京東到家公眾號(hào)應(yīng)用直接在chrome,并完成了微信的認(rèn)證登錄。(實(shí)際是手機(jī)微信的登錄后將cookie再寫到Chrome里,這里jd需要在瀏覽器中修改UA,chrome本身就可以直接修改UA)
      ?
      ?

      以上使用到的?Fiddler插件freeCookies 說(shuō)明見?https://www.cnblogs.com/lulianqi/p/9481203.html
      <https://www.cnblogs.com/lulianqi/p/9481203.html>

      源代碼見github:?https://github.com/lulianqi/FreeCookies
      <https://github.com/lulianqi/FreeCookies>

      ?

      ?




      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問(wèn)題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          久久久精品一品道久久 | 一级黄色录像播放 | A理论片 成人毛片免费看 | 总裁掀开她的内衣揉她的柔软视频 | 国产一级婬片aaa毛片 | 91啦丨九色丨蝌蚪丨中文 | 精品激情视频乱区区区 | 一边亲嘴一边做好爽视频 | 五月香网站 | 成人激情国产上床视频 |