知識
不管是網(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)案例查看更多
相關(guān)閱讀
- 報廢車回收
- python開發(fā)小程序
- 云南省建設(shè)廳網(wǎng)站官網(wǎng)
- 旅游網(wǎng)站建設(shè)
- 網(wǎng)站開發(fā)公司哪家好
- 云南網(wǎng)站建設(shè)哪家好
- 網(wǎng)站制作哪家好
- 昆明小程序開發(fā)
- 百度排名
- 昆明軟件公司
- asp網(wǎng)站
- flex
- 云南網(wǎng)站建設(shè)一條龍
- 汽車報廢拆解管理系統(tǒng)
- 昆明做網(wǎng)站建設(shè)的公司排名
- Web開發(fā)框架
- 云南網(wǎng)站建設(shè)優(yōu)化
- 云南電商網(wǎng)站建設(shè)
- 小程序退款
- 云南網(wǎng)站建設(shè)首選
- 重慶網(wǎng)站建設(shè)公司
- 服務(wù)器
- 云南網(wǎng)站建設(shè)外包
- 百度小程序開發(fā)公司
- 分銷系統(tǒng)
- 曲靖小程序開發(fā)
- 保險網(wǎng)站建設(shè)公司
- 網(wǎng)站建設(shè)需要多少錢
- 汽車拆解管理軟件
- 百度快速排名