溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python免驗證跳轉(zhuǎn)到內(nèi)容頁的實現(xiàn)方法

發(fā)布時間:2020-10-23 13:50:27 來源:億速云 閱讀:135 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關(guān)Python免驗證跳轉(zhuǎn)到內(nèi)容頁的實現(xiàn)方法的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。

Python免驗證跳轉(zhuǎn)到內(nèi)容頁的實現(xiàn)方法

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

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

# 繞過驗證碼無限次獲取上學吧題目答案
# 上學吧網(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)址獲取驗證碼圖片,提交計算結(jié)果到另外一個網(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() # 調(diào)用系統(tǒng)的圖片查看軟件打開驗證碼圖片,如果不能打開,可以自己找到 temp.png 打開。
verifynum = input("\n請輸入驗證碼圖片中的計算結(jié)果:")
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'] # 抓取題干內(nèi)容
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('h7')
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))}) # 這一句是整個程序的關(guān)鍵,通過修改 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 應(yīng)該全部為數(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 腳本運行流程:

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

Python免驗證跳轉(zhuǎn)到內(nèi)容頁的實現(xiàn)方法

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

Python免驗證跳轉(zhuǎn)到內(nèi)容頁的實現(xiàn)方法

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

Python免驗證跳轉(zhuǎn)到內(nèi)容頁的實現(xiàn)方法

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

Python免驗證跳轉(zhuǎn)到內(nèi)容頁的實現(xiàn)方法

感謝各位的閱讀!關(guān)于Python免驗證跳轉(zhuǎn)到內(nèi)容頁的實現(xiàn)方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI