python怎么跳转到某一行代码_Python中免验证跳转到内容页的实例代码
在本篇文章里小編給大家整理的是一篇關于Python中免驗證跳轉到內(nèi)容頁的實例代碼,有興趣的朋友們可以學習分享下。
相信很多人在瀏覽網(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
importos
importrandom
importrequests
importurllib3
urllib3.disable_warnings()# 這句和上面一句是為了忽略 https 安全驗證警告,參考:https://www.cnblogs.com/ljfight/p/9577783.html
frombs4importBeautifulSoup
fromPILimportImage
defget_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
withopen('temp.png','wb+')asf:
f.write(r.content)
image=Image.open('temp.png')
image.show()# 調(diào)用系統(tǒng)的圖片查看軟件打開驗證碼圖片,如果不能打開,可以自己找到 temp.png 打開。
verifynum=input("\n請輸入驗證碼圖片中的計算結果:")
image.close()
os.remove("temp.png")
returnverifynum
defget_question(session):
r=session.get(link)
soup=BeautifulSoup(r.content,"html.parser")
description=soup.find(attrs={"name":"description"})['content']# 抓取題干內(nèi)容
returndescription
defget_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()
whileTrue:
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/"orlink[-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 requestspip install beautifulsoup4
Python 腳本運行流程:
首先復制上學吧某道題目的網(wǎng)址,類似以下格式:
然后運行python腳本,復制粘貼網(wǎng)址。
按Enter鍵,自動下載驗證碼圖片存為 temp.png,然后自動讀取圖片并展示,也可以手動打開同目錄下的 temp.png 圖片。
最后在命令行窗口輸入驗證碼圖片中的計算結果即可獲取題目詳情以及正確答案。
到此這篇關于Python中免驗證跳轉到內(nèi)容頁的實例代碼的文章就介紹到這了
掃下方二維碼加老師微信
或是搜索老師微信號:XTUOL1988【切記備注:學習Python】
領取Python web開發(fā),Python爬蟲,Python數(shù)據(jù)分析,人工智能等學習教程。帶你從零基礎系統(tǒng)性的學好Python!
也可以加老師建的Python技術學習教程qq裙:245345507,二者加一個就可以!
歡迎大家點贊,留言,轉發(fā),轉載,感謝大家的相伴與支持
萬水千山總是情,點個【在看】行不行
*聲明:本文于網(wǎng)絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯(lián)系我們刪除或授權事宜
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
以上是生活随笔為你收集整理的python怎么跳转到某一行代码_Python中免验证跳转到内容页的实例代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Surface 内置原生壁纸下载
- 下一篇: Cocos Creator 使用位图工具