欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

“我去圖書館”公眾號代碼搶座的實現(xiàn) - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價值,我們在追求其視覺表現(xiàn)的同時,更側(cè)重于功能的便捷,營銷的便利,運營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序為后期升級提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 公眾號相關(guān) >

“我去圖書館”公眾號代碼搶座的實現(xiàn)

發(fā)表時間:2020-10-19

發(fā)布人:葵宇科技

瀏覽次數(shù):364

因為要考研嘛,想去圖書館。我們學(xué)校是早上六點開搶,同學(xué)們太猛,我每天5點50起床搶,都不太搶的到想要的座位,于是我就花了個兩三天琢磨著怎么用代碼來實現(xiàn)這個搶座,目前已經(jīng)完成,雖然因為微信的那個sessid更新的比較頻繁,還是需要早起來拿寫好的安卓軟件傳個cookie的數(shù)據(jù),但至少每天都能搶到固定的座位了,心情就很舒暢。

搶座原理的簡述

“我去圖書館”公眾號實現(xiàn)搶座功能,肯定是通過與服務(wù)器進行交互完成的。通過抓包可以發(fā)現(xiàn),最終完成搶座這一步的,是一個get請求,那么我們通過模擬手機來向服務(wù)器發(fā)送這樣一個get請求,就能實現(xiàn)搶座。這個get請求的url格式為:“http://wechat.v2.traceint.com/index.php/reserve/get/libid={所搶閱覽室的id號}&{一段莫名其妙的編碼}={該閱覽室座位號對應(yīng)的編碼}&yzm=”。這個get請求的請求頭的信息如下所示。

{
            'Accept': 'application/json, text/javascript, */*; q=0.01',
            'X-Requested-With': 'XMLHttpRequest',
            'User-Agent': '{隨便找個手機抓個包扒拉下來放這就行}',
            'Sec-Fetch-Mode': 'cors',
            'Sec-Fetch-Site': 'same-origin',
            'Referer': 'http://wechat.v2.traceint.com/index.php/reserve/layout/libid={所搶閱覽室的id號}.html&{所在學(xué)校的代碼}',
            'Accept-Encoding': 'gzip, deflate,br',
            'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',
            'Cookie': {實時抓包抓到的cookie值}
}

上面用大括號括起來的部分都是在應(yīng)用中需要改變的部分,包括:
1、所搶閱覽室的id號;
2、一段莫名其妙的編碼;
3、該閱覽室座位號對應(yīng)的編碼;
4、所在學(xué)校的代碼;
5、實時抓包抓到的cookie值。
其中,1和4都是可以通過抓包輕而易舉地得到的。關(guān)于抓包,學(xué)習(xí)起來難度很低,如果不會的小伙伴可以通過搜索一些文章輕松地完成學(xué)習(xí)。5是需要每天起早抓包得到并放入程序運行的內(nèi)容,承載著用戶信息,也很容易獲取到。真正需要進行一些操作去獲取的是2和3。將這些內(nèi)容填入到get請求中,通過代碼模擬手機發(fā)送get請求,就能夠完成搶座。

獲取座位號對應(yīng)的編碼

在使用“我去圖書館”公眾號進行搶座的時候,在進行搶座前我們都會進入一個頁面,選定要選的座位之后點擊搶座。通過分析網(wǎng)頁源碼,很容易定位座位元素的代碼,座位元素的模板如下所示。

<div class="grid_cell grid_1" data-key="{該閱覽室座位號對應(yīng)的編碼}" style="left:280px;top:210px;">
    <em>{顯示的座位號}</em>
</div>

知道了座位號和編碼是如何映射的,只要從頁面中爬取數(shù)據(jù)就可以了,代碼如下所示。

from bs4 import BeautifulSoup

bs = BeautifulSoup(html, 'html.parser') #html是爬取到的網(wǎng)頁的文本
zw = dict() #創(chuàng)建一個字典,用來存放座位號和編碼的映射

div_tags = bs.find_all('div', {'class': 'grid_cell'})
for tag in div_tags:
   zwid = tag.contents[1].string
   if zwid != None and zwid != '窗' and zwid != '柱':
        zw[zwid] = tag.get('data-key')

通過這樣一個映射的獲取,我們就可以方便地通過座位號獲取到其對應(yīng)的編碼了。

如何獲取那一段莫名其妙的編碼

在編寫代碼的過程中,我對搶座位這個過程進行的多次的抓包觀察,發(fā)現(xiàn)在座位號前面的那個query字符串是一個看不出什么規(guī)律的編碼。解析這個query是在后端進行解析,但既然發(fā)get請求你要在頁面上發(fā),那這個代碼必然在前端是有跡可循的。這個編碼的答案就在頁面底部的js鏈接中,通過運行那一段js代碼就可以搞定這個編碼,從而拼湊起這最后一塊拼圖。

感謝各位能夠看完這篇文章,如果有什么不理解的地方或者需要我的一些幫助,可以加我的qq:1121174884

相關(guān)案例查看更多