用Python中request如何實(shí)現(xiàn)自動(dòng)簽到

小編給大家分享一下用Python中request如何實(shí)現(xiàn)自動(dòng)簽到,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討方法吧!

湞江網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),湞江網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為湞江上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的湞江做網(wǎng)站的公司定做!

使用selenium實(shí)現(xiàn)自動(dòng)簽到確實(shí)是一個(gè)方便快捷的方式,但不可否認(rèn)的是這種方式確實(shí)有一個(gè)硬傷,就是太慢了,模擬瀏覽器進(jìn)行加載、點(diǎn)擊操作,即使用上顯性等待這種高端操作也最多只能把整個(gè)運(yùn)行過(guò)程優(yōu)化到5秒以內(nèi)。

作為一個(gè)有性能潔癖的程序猿,5秒顯然是我不能接受的。那還有什么方式比它更快呢,很簡(jiǎn)單,直接發(fā)post請(qǐng)求啊,直接對(duì)網(wǎng)站發(fā)起post或get請(qǐng)求永遠(yuǎn)是最快的方式,網(wǎng)上流傳的各種秒殺腳本用的也是這種方式。

requests庫(kù)的使用

本來(lái)之前用scrapy做了一個(gè)版本,結(jié)果發(fā)現(xiàn)為了實(shí)現(xiàn)這么個(gè)小功能用scrapy太過(guò)笨重,代碼量還多,干脆換成requests。

requests庫(kù)的使用方法非常簡(jiǎn)單,網(wǎng)上有對(duì)應(yīng)的中文文檔可以參考requests文檔。

直接上代碼

response = requests.get("http://www.baidu.com")
print(response.text)

post請(qǐng)求則是要先實(shí)例化一個(gè)session對(duì)象,用session對(duì)象進(jìn)行后續(xù)的post請(qǐng)求和其他操作,session對(duì)象會(huì)為你保存你的登錄狀態(tài),包括cookie等內(nèi)容。

form_data1 = {"mobile": "xxxx",
              "mobileErr": "",
              "password": "xxxx",
              "passwordErr": "",
              "uuid": "0",
              "mid": "0"}
s = requests.Session()
response = s.post(login_url, data=form_data)
# print(response.text)

當(dāng)session攜帶了登錄信息之后就可以進(jìn)行后續(xù)的簽到操作,而簽到操作也很簡(jiǎn)單,直接用gei請(qǐng)求訪問(wèn)一下簽到按鈕對(duì)應(yīng)的鏈接即可。

當(dāng)然無(wú)論是獲取簽到按鈕的鏈接還是獲取登錄所需要的的form表單數(shù)據(jù)都離不開(kāi)抓包。

我用的抓包軟件是Fiddler,抓包這里我就不詳細(xì)講了,網(wǎng)上可以搜到很多教程。

最后把完整代碼放一下。

import requests
import sys
import traceback
login_url = "https://gf2.wmbuluo.com/addons/yun_shop/api.php?i=2&uuid=0&mid=0&type=5&shop_id=null&route=member.login.index"
target_url = 'https://gf2.wmbuluo.com/addons/yun_shop/api.php?i=2&uuid=0&mid=0&type=5&shop_id=null&route=plugin.sign.Frontend.Modules.Sign.Controllers.sign.sign'
form_data1 = {"mobile": "xxxx",
              "mobileErr": "",
              "password": "xxxx",
              "passwordErr": "",
              "uuid": "0",
              "mid": "0"}
def run(form_data):
    s = requests.Session()
    response = s.post(login_url, data=form_data)
    # print(response.text)
    # print(response.status_code)
    if response.status_code == 200:
        resp = s.get(target_url)
        print(resp.status_code)
def main():
    run(form_data1)
    print("run1")
if __name__ == '__main__':
    try:
        sys.exit(main())
    except Exception as e:
        traceback.print_exc()

看完了這篇文章,相信你對(duì)用Python中request如何實(shí)現(xiàn)自動(dòng)簽到有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

網(wǎng)站題目:用Python中request如何實(shí)現(xiàn)自動(dòng)簽到
網(wǎng)頁(yè)網(wǎng)址:http://muchs.cn/article28/jpiecp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、外貿(mào)建站網(wǎng)站策劃、靜態(tài)網(wǎng)站品牌網(wǎng)站制作、網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)