相信很多人在浏览网页时,经常会碰到需要输入验证码才可以继续浏览的情况吧,遇到这种问题,大多数人只能进行繁琐的注册验证,今天小编教大家只要使用python就可以免验证方法。
以经常用到的解答网站——上学吧为例,在网站里点击答案页面,会显示验证后才可以查看提示,下面就使用python实现跳过验证码。
我们需要通过python构造随机的 X-Forwarded-For 信息来绕过 ASP 网站的 IP 检测,可以实现对输入的网址正确性进行检查、对验证码核验不通过时的处理等等。
python免验证跳转页面代码如下:
# 绕过验证码无限次获取上学吧题目答案 # 上学吧网址: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): # 网址的验证码逻辑是先去这个网址获取验证码图片,提交计算结果到另外一个网址进行验证。 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() # 调用系统的图片查看软件打开验证码图片,如果不能打开,可以自己找到 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没有找到答案!请检查验证码或网址是否输入有误!\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请输入上学吧网站上某道题目的网址,例如: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网址输入有误!请重新输入!\n") continue dataid = link.split("/")[-1].replace(r".html","") # 提取网址最后的数字部分 if(dataid.isdigit()): # 根据格式,dataid 应该全部为数字,判断字符串是否全部为数字,返回 True 或者 False verifynum = get_verifynum(s) get_answer(s, verifynum, dataid) else: print("\n网址输入有误!请重新输入!\n") continue
注意:其中 requests 和 beautifulsoup 两个库需要另外安装,建议使用 pip 方式安装:
pip install requests
pip install beautifulsoup4
Python 脚本运行流程:
首先复制上学吧某道题目的网址,类似以下格式:
然后运行python脚本,复制粘贴网址。
按Enter键,自动下载验证码图片存为 temp.png,然后自动读取图片并展示,也可以手动打开同目录下的 temp.png 图片。
最后在命令行窗口输入验证码图片中的计算结果即可获取题目详情以及正确答案。
Python,验证跳转
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】