【上学吧】绕过验证码,网站答案获取
在看网页源代码的时候,突然发现里面有一个跳转代码,即遇到移动设备访问的时候,会自动跳转到 https://m.shangxueba.com/ask/ 页面。
模拟移动设备访问之后,在这个移动端页面上点击【查看答案】按钮,居然不需要输入验证码,直接出答案!!!Amazing~(不过亲测仍然有三次查询限制)
下面是完整的 Python 代码:
# 绕过验证码无限次获取上学吧题目答案
# 上学吧网址:https://www.shangxueba.com/ask
# by HeXu 2019.05.09
# 新增模拟浏览器的 header 来避免查询失败
import random
import time
import requests
import urllib3
urllib3.disable_warnings() # 这句和上面一句是为了忽略 https 安全验证警告,参考:https://www.cnblogs.com/ljfight/p/9577783.html
from bs4 import BeautifulSoup
import webbrowser
def get_question(session, dataid):
link = "https://m.shangxueba.com/ask/" + dataid + ".html"
r = session.get(link)
soup = BeautifulSoup(r.content, "html.parser")
try:
description = soup.find(attrs={"name":"description"})['content'] # 抓取题干内容
if(description and description[0:5] != '上学吧提供'): # 页面错误的话,显示的内容是:上学吧提供考研、公务员、司法、会计、金融等各种资格考试认证学习资料,视频课程,真题,模拟试题分享下载服务和培训服务
return description
else:
return "无法获取题目内容!"
except: # 有的时候网址出错会弹JavaScript弹框:该问题不存在或未审核
return "该问题不存在或未审核!"
def get_answer(session, dataid):
millis = int(round(time.time() * 1000))
data = {
"id": dataid,
"action": "showZuiJia",
"t": millis
}
r = session.post("https://m.shangxueba.com/ask/ask_getzuijia.aspx", data=data) # 核查验证码正确性
soup = BeautifulSoup(r.content, "html.parser")
ans = soup.select('.replyCon')
if(ans):
images = ans[0].select('img') # 有的题目答案中有图片,例如:https://www.shangxueba.com/ask/9710781.html
if(images): # 有的答案中图片出错,链接为:http://www.shangxueba.com/exam/images/onErrorImg.jpg
with open('shangxueba_answer.html','w') as f:
f.write(str(ans[0]))
f.close()
webbrowser.open('shangxueba_answer.html')
return "答案中有图片,已自动打开答案网页文件。如没有自动打开网页,可以手动打开 shangxueba_answer.html"
return ans[0].text.strip()
else:
return "答案获取失败!请检查链接是否正确。"
if __name__ == '__main__':
s = requests.session()
print("*"*45 + "\n上学吧答案神器(绕过验证码 + 破解IP限制)\nby HeXu 2019.05.29\n" + "*"*45)
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 的验证。
"user-agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1", # 这一句非常重要,不然获取不了答案,2019.05.09 更新
})
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
print('\n' + '-'*45 + '\n题目:' + get_question(s, dataid) + '\n\n' + get_answer(s, dataid) + '\n' + '-'*45 + '\n\n\n')
else:
print("\n网址输入有误!请重新输入!\n")
continue
-------------------------------------------------------------------------------------------------------------------------------------------------------------
运行脚本之后,直接输入上学吧网站上的题目链接,即可自动出答案:
分享下载链接:
下载链接:https://pan.baidu.com/s/1ysBaExwI2S8iV7h--0dz3g 提取码:ud6t
【上学吧】绕过验证码,网站答案获取相关推荐
- 绕过验证码保护Nifty Gateway上的NFT交易安全
摘要: 本文将详细探讨如何通过绕过验证码的方式获取Nifty Gateway平台上的NFT交易数据.首先,我们将介绍验证码的作用和常见形式,然后深入研究Nifty Gateway平台的特点和安全措施. ...
- atitit 破解 拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结
atitit.破解 拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结 1. 自动获取手机短信方式的原理 1 2. 调用api 1 3. ----核心代码 2 4. ...
- HttpWebRequest自动登录网站并获取网站内容(不包含验证码的网站)
HttpWebRequest自动登录网站并获取网站内容(不包含验证码的网站) 可以使用 Visual Sniffer(百度搜索) 来捕捉提交的数据信息: 1. 访问你需要站外提交的页面,比如 CSDN ...
- 网站注册获取短信验证码步骤
目前短信验证码的应用可以说是相当的广泛,不仅避免了大量重复注册.烂数据,提高了企业工作效率,而且在操作上也相当简单,只需要在企业现有的网站上进行短信接口对接,就可以实现短信验证码的发送. 网站注册获取 ...
- WEB自动化(5)获取网站验证码即从验证码截图中获取图片中的字符串
WEB自动化(1)环境安装及打开浏览器实例 WEB自动化(2)常用的元素定位方法之xpath详解 WEB自动化(3)PO设计模式原理与实现 WEB自动化(4)使用selenium将网站验证码截图保存为 ...
- 寻找阿登高地——爬虫工程师如何绕过验证码
马奇诺防线是二战前法国耗时十余年修建的防御工事,十分坚固,但是由于造价昂贵,仅修建了法德边境部分,绵延数百公里,而法比边界的阿登高地地形崎岖,不易运动作战,且比利时反对在该边界修建防线,固法军再次并没 ...
- 爬虫工程师如何绕过验证码?寻找阿登高地之路
导读:马奇诺防线是二战前法国耗时十余年修建的防御工事,十分坚固,但是由于造价昂贵,仅修建了法德边境部分,绵延数百公里,而法比边界的阿登高地地形崎岖,不易运动作战,且比利时反对在该边界修建防线,固法军再 ...
- python通过cookie绕过验证码_Python Selenium Cookie 绕过验证码实现登录示例代码
之前介绍过通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1.直接看代码,内有详细注释说明 # FileName : Wm_Cookie ...
- python接口自动化(十三)--cookie绕过验证码登录(详解)
简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...
最新文章
- Prim算法生成迷宫
- Tensorflow【实战Google深度学习框架】TFLearn大宝剑
- [零基础学JAVA]Java SE面向对象部分-08.面向对象基础(03)
- ajax处理返回的xml数据,使用AJAX调用WebService返回xml不返回json原因以及解决办法...
- 操作系统学习笔记-02-1.2-什么是操作系统
- 【实物】端到端自动驾驶搭建教程(四)附完整资料
- 中铁总数据中心落户武清 项目总投资22.7亿元
- 微信多开软件(Java版)
- 运维--域服务器--搭建
- MySQL-数据库的索引类型有哪些
- 成了精的太师椅·自由之翼·八
- sql语句 如果为空值显示为0
- 【ZLR-T81 200A漏电继电器】
- 初学oracle-1
- 组建使用“智能卡”进行身份验证的***服务器
- 乐优商城部署配置过程
- 《西瓜书》吃瓜笔记1、2章
- ssh mysql jsp码头船只出行及配套货柜码放管理系统的设计与实现+论文+开题报告+任务书
- 解决电脑不能被局域网内的其它电脑访问的方法
- shELL中的字符串处理(转)