久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁的實(shí)例代碼

瀏覽:9日期:2022-07-07 14:06:40

相信很多人在瀏覽網(wǎng)頁時(shí),經(jīng)常會(huì)碰到需要輸入驗(yàn)證碼才可以繼續(xù)瀏覽的情況吧,遇到這種問題,大多數(shù)人只能進(jìn)行繁瑣的注冊驗(yàn)證,今天小編教大家只要使用python就可以免驗(yàn)證方法。

以經(jīng)常用到的解答網(wǎng)站——上學(xué)吧為例,在網(wǎng)站里點(diǎn)擊答案頁面,會(huì)顯示驗(yàn)證后才可以查看提示,下面就使用python實(shí)現(xiàn)跳過驗(yàn)證碼。

Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁的實(shí)例代碼

我們需要通過python構(gòu)造隨機(jī)的 X-Forwarded-For 信息來繞過 ASP 網(wǎng)站的 IP 檢測,可以實(shí)現(xiàn)對(duì)輸入的網(wǎng)址正確性進(jìn)行檢查、對(duì)驗(yàn)證碼核驗(yàn)不通過時(shí)的處理等等。

python免驗(yàn)證跳轉(zhuǎn)頁面代碼如下:

# 繞過驗(yàn)證碼無限次獲取上學(xué)吧題目答案# 上學(xué)吧網(wǎng)址:https://www.shangxueba.com/askimport osimport randomimport requestsimport urllib3urllib3.disable_warnings() # 這句和上面一句是為了忽略 https 安全驗(yàn)證警告,參考:https://www.cnblogs.com/ljfight/p/9577783.htmlfrom bs4 import BeautifulSoupfrom PIL import Imagedef get_verifynum(session): # 網(wǎng)址的驗(yàn)證碼邏輯是先去這個(gè)網(wǎng)址獲取驗(yàn)證碼圖片,提交計(jì)算結(jié)果到另外一個(gè)網(wǎng)址進(jìn)行驗(yàn)證。r = session.get('https://www.shangxueba.com/ask/VerifyCode2.aspx', verify=False) # HTTPS 請求進(jìn)行 SSL 驗(yàn)證或忽略 SSL 驗(yàn)證才能請求成功,忽略方式為 verify=False。參考:https://www.cnblogs.com/ljfight/p/9577783.htmlwith open(’temp.png’,’wb+’) as f:f.write(r.content)image = Image.open(’temp.png’)image.show() # 調(diào)用系統(tǒng)的圖片查看軟件打開驗(yàn)證碼圖片,如果不能打開,可以自己找到 temp.png 打開。verifynum = input('n請輸入驗(yàn)證碼圖片中的計(jì)算結(jié)果:')image.close()os.remove('temp.png')return verifynumdef get_question(session):r = session.get(link)soup = BeautifulSoup(r.content, 'html.parser')description = soup.find(attrs={'name':'description'})[’content’] # 抓取題干內(nèi)容return descriptiondef get_answer(session, verifynum, dataid):data1 = {'Verify': verifynum,'action': 'CheckVerify',}session.post('https://www.shangxueba.com/ask/ajax/GetZuiJia.aspx', data=data1) # 核查驗(yàn)證碼正確性data2 = {'phone':'','dataid': dataid,'action': 'submitVerify','siteid': '1001','Verify': verifynum,}r = session.post('https://www.shangxueba.com/ask/ajax/GetZuiJia.aspx', data=data2)soup = BeautifulSoup(r.content, 'html.parser')ans = soup.find(’h6’)print('n' + ’-’*45)if(ans): # 只有驗(yàn)證碼核查通過才會(huì)顯示答案print('n題目:' + get_question(session))print(ans.text)else:print(’n沒有找到答案!請檢查驗(yàn)證碼或網(wǎng)址是否輸入有誤!n’)print(’-’*45)if __name__ == ’__main__’:s = requests.session()while True:s.headers.update({'X-Forwarded-For':'%d.%d.%d.%d'%(random.randint(120,125),random.randint(1,200),random.randint(1,200),random.randint(1,200))}) # 這一句是整個(gè)程序的關(guān)鍵,通過修改 X-Forwarded-For 信息來欺騙 ASP 站點(diǎn)對(duì)于 IP 的驗(yàn)證。link = input('n請輸入上學(xué)吧網(wǎng)站上某道題目的網(wǎng)址,例如:https://www.shangxueba.com/ask/8952241.htmlnn請輸入:').strip() # 過濾首尾的空格if(link[0:31] != 'https://www.shangxueba.com/ask/' or link[-4:] != 'html'):print('n網(wǎng)址輸入有誤!請重新輸入!n')continuedataid = link.split('/')[-1].replace(r'.html','') # 提取網(wǎng)址最后的數(shù)字部分if(dataid.isdigit()): # 根據(jù)格式,dataid 應(yīng)該全部為數(shù)字,判斷字符串是否全部為數(shù)字,返回 True 或者 Falseverifynum = get_verifynum(s)get_answer(s, verifynum, dataid)else:print('n網(wǎng)址輸入有誤!請重新輸入!n')continue

注意:其中 requests 和 beautifulsoup 兩個(gè)庫需要另外安裝,建議使用 pip 方式安裝:

pip install requestspip install beautifulsoup4

Python 腳本運(yùn)行流程:

首先復(fù)制上學(xué)吧某道題目的網(wǎng)址,類似以下格式:

Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁的實(shí)例代碼

然后運(yùn)行python腳本,復(fù)制粘貼網(wǎng)址。

Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁的實(shí)例代碼

按Enter鍵,自動(dòng)下載驗(yàn)證碼圖片存為 temp.png,然后自動(dòng)讀取圖片并展示,也可以手動(dòng)打開同目錄下的 temp.png 圖片。

Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁的實(shí)例代碼

最后在命令行窗口輸入驗(yàn)證碼圖片中的計(jì)算結(jié)果即可獲取題目詳情以及正確答案。

Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁的實(shí)例代碼

到此這篇關(guān)于Python中免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁的實(shí)例代碼的文章就介紹到這了,更多相關(guān)Python如何免驗(yàn)證跳轉(zhuǎn)到內(nèi)容頁內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 张家界市| 南宫市| 禹州市| 青河县| 通辽市| 江口县| 怀集县| 民勤县| 广东省| 涿州市| 裕民县| 兰考县| 阿图什市| 腾冲县| 辽宁省| 竹北市| 会昌县| 板桥市| 颍上县| 吴忠市| 五常市| 连州市| 若尔盖县| 贡山| 祁门县| 金沙县| 封丘县| 汉寿县| 小金县| 德江县| 崇阳县| 济宁市| 安阳县| 时尚| 新闻| 营山县| 栾川县| 叶城县| 正阳县| 兴国县| 陵水|