Python中免驗證跳轉到內容頁的實例代碼
相信很多人在瀏覽網(wǎng)頁時,經(jīng)常會碰到需要輸入驗證碼才可以繼續(xù)瀏覽的情況吧,遇到這種問題,大多數(shù)人只能進行繁瑣的注冊驗證,今天小編教大家只要使用python就可以免驗證方法。
以經(jīng)常用到的解答網(wǎng)站——上學吧為例,在網(wǎng)站里點擊答案頁面,會顯示驗證后才可以查看提示,下面就使用python實現(xiàn)跳過驗證碼。
我們需要通過python構造隨機的 X-Forwarded-For 信息來繞過 ASP 網(wǎng)站的 IP 檢測,可以實現(xiàn)對輸入的網(wǎng)址正確性進行檢查、對驗證碼核驗不通過時的處理等等。
python免驗證跳轉頁面代碼如下:
# 繞過驗證碼無限次獲取上學吧題目答案 # 上學吧網(wǎng)址:https://www.shangxueba.com/ask import os import random import requests import urllib3 urllib3.disable_warnings() # 這句和上面一句是為了忽略 https 安全驗證警告,參考:https://www.cnblogs.com/ljfight/p/9577783.html from bs4 import BeautifulSoup from PIL import Image def get_verifynum(session): # 網(wǎng)址的驗證碼邏輯是先去這個網(wǎng)址獲取驗證碼圖片,提交計算結果到另外一個網(wǎng)址進行驗證。 r = session.get("https://www.shangxueba.com/ask/VerifyCode2.aspx", verify=False) # HTTPS 請求進行 SSL 驗證或忽略 SSL 驗證才能請求成功,忽略方式為 verify=False。參考:https://www.cnblogs.com/ljfight/p/9577783.html with open('temp.png','wb+') as f: f.write(r.content) image = Image.open('temp.png') image.show() # 調用系統(tǒng)的圖片查看軟件打開驗證碼圖片,如果不能打開,可以自己找到 temp.png 打開。 verifynum = input("\n請輸入驗證碼圖片中的計算結果:") image.close() os.remove("temp.png") return verifynum def get_question(session): r = session.get(link) soup = BeautifulSoup(r.content, "html.parser") description = soup.find(attrs={"name":"description"})['content'] # 抓取題干內容 return description def get_answer(session, verifynum, dataid): data1 = { "Verify": verifynum, "action": "CheckVerify", } session.post("https://www.shangxueba.com/ask/ajax/GetZuiJia.aspx", data=data1) # 核查驗證碼正確性 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): # 只有驗證碼核查通過才會顯示答案 print("\n題目:" + get_question(session)) print(ans.text) else: print('\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))}) # 這一句是整個程序的關鍵,通過修改 X-Forwarded-For 信息來欺騙 ASP 站點對于 IP 的驗證。 link = input("\n請輸入上學吧網(wǎng)站上某道題目的網(wǎng)址,例如:https://www.shangxueba.com/ask/8952241.html\n\n請輸入:").strip() # 過濾首尾的空格 if(link[0:31] != "https://www.shangxueba.com/ask/" or link[-4:] != "html"): print("\n網(wǎng)址輸入有誤!請重新輸入!\n") continue dataid = link.split("/")[-1].replace(r".html","") # 提取網(wǎng)址最后的數(shù)字部分 if(dataid.isdigit()): # 根據(jù)格式,dataid 應該全部為數(shù)字,判斷字符串是否全部為數(shù)字,返回 True 或者 False verifynum = get_verifynum(s) get_answer(s, verifynum, dataid) else: print("\n網(wǎng)址輸入有誤!請重新輸入!\n") continue
注意:其中 requests 和 beautifulsoup 兩個庫需要另外安裝,建議使用 pip 方式安裝:
pip install requests
pip install beautifulsoup4
Python 腳本運行流程:
首先復制上學吧某道題目的網(wǎng)址,類似以下格式:
然后運行python腳本,復制粘貼網(wǎng)址。
按Enter鍵,自動下載驗證碼圖片存為 temp.png,然后自動讀取圖片并展示,也可以手動打開同目錄下的 temp.png 圖片。
最后在命令行窗口輸入驗證碼圖片中的計算結果即可獲取題目詳情以及正確答案。
到此這篇關于Python中免驗證跳轉到內容頁的實例代碼的文章就介紹到這了,更多相關Python如何免驗證跳轉到內容頁內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python爬蟲實例_城市公交網(wǎng)絡站點數(shù)據(jù)的爬取方法
下面小編就為大家分享一篇Python爬蟲實例_城市公交網(wǎng)絡站點數(shù)據(jù)的爬取方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Windows下pycharm安裝第三方庫失敗(通用解決方案)
這篇文章主要介紹了Windows下pycharm安裝第三方庫失敗(通用解決方案),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09使用已經(jīng)得到的keras模型識別自己手寫的數(shù)字方式
這篇文章主要介紹了使用已經(jīng)得到的keras模型識別自己手寫的數(shù)字方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06Python之Django自動實現(xiàn)html代碼(下拉框,數(shù)據(jù)選擇)
這篇文章主要介紹了Python之Django自動實現(xiàn)html代碼(下拉框,數(shù)據(jù)選擇),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03Pandas分組聚合之groupby()、agg()方法的使用教程
今天看到pandas的聚合函數(shù)agg,比較陌生,平時的工作中處理數(shù)據(jù)的時候使用的也比較少,為了加深印象,總結一下使用的方法,下面這篇文章主要給大家介紹了關于Pandas分組聚合之groupby()、agg()方法的使用教程,需要的朋友可以參考下2023-01-01解決django框架model中外鍵不落實到數(shù)據(jù)庫問題
這篇文章主要介紹了解決django框架model中外鍵不落實到數(shù)據(jù)庫問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05python使用requests庫提交multipart/form-data請求的方法詳解
multipart/form-data的基礎是post請求,即基于post請求來實現(xiàn)的 ,下面這篇文章主要給大家介紹了關于python使用requests庫提交multipart/form-data請求的相關資料,需要的朋友可以參考下2023-01-01