隨著 Python 技術(shù)的不斷發(fā)展,越來(lái)越多的網(wǎng)站選擇使用驗(yàn)證碼來(lái)防止惡意爬蟲進(jìn)行搶購(gòu)操作。那有沒(méi)有什么方法來(lái)解決這個(gè)問(wèn)題呢?接下來(lái),我們就來(lái)介紹一個(gè) Python 驗(yàn)證碼搶購(gòu)的方法。
# 導(dǎo)入必要的模塊 import requests import time # 模擬請(qǐng)求頭信息 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 模擬請(qǐng)求表單 data = { 'username': '*****', 'password': '*****', 'captcha': '' # 驗(yàn)證碼留空,等待后續(xù)填充 } # URL login_url = 'http://www.*****.com/login' # 循環(huán)執(zhí)行搶購(gòu)任務(wù) while True: try: # 獲取驗(yàn)證碼 code_url = 'http://www.*****.com/captcha' r = requests.get(code_url, headers=headers) # 保存驗(yàn)證碼圖片 with open('captcha.jpg', 'wb') as f: f.write(r.content) # 打開(kāi)驗(yàn)證碼圖片 from PIL import Image im = Image.open("captcha.jpg") im.show() # 填寫驗(yàn)證碼,并提交表單 captcha = input("請(qǐng)輸入驗(yàn)證碼:") data['captcha'] = captcha r = requests.post(login_url, headers=headers, data=data) # 判斷是否登錄成功 if r.json()['code'] == 200: # 搶購(gòu)操作 buy_url = 'http://www.*****.com/buy' buy_data = {'product_id': '****'} r = requests.post(buy_url, headers=headers, data=buy_data) print(r.json()) break # 成功搶購(gòu)后終止循環(huán) else: print('登錄失敗,請(qǐng)檢查賬號(hào)和密碼') time.sleep(1) # 延遲 1 秒,避免被封 IP except Exception as e: print(e) time.sleep(1) # 延遲 1 秒,避免被封 IP
以上就是 Python 驗(yàn)證碼搶購(gòu)的全部?jī)?nèi)容。我們可以通過(guò)上面的代碼,實(shí)現(xiàn)自動(dòng)填寫驗(yàn)證碼,并進(jìn)行商品搶購(gòu)操作。但是需要注意的是,對(duì)于一些有限制的網(wǎng)站,我們需要防止被封 IP,即在請(qǐng)求過(guò)程中適當(dāng)增加延遲時(shí)間。