在看网页源代码的时候,突然发现里面有一个跳转代码,即遇到移动设备访问的时候,会自动跳转到 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

【上学吧】绕过验证码,网站答案获取相关推荐

  1. 绕过验证码保护Nifty Gateway上的NFT交易安全

    摘要: 本文将详细探讨如何通过绕过验证码的方式获取Nifty Gateway平台上的NFT交易数据.首先,我们将介绍验证码的作用和常见形式,然后深入研究Nifty Gateway平台的特点和安全措施. ...

  2. atitit 破解 拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结

    atitit.破解  拦截 绕过 网站 手机 短信 验证码 之自动获取手机短信方式 attilax 总结 1. 自动获取手机短信方式的原理 1 2. 调用api 1 3. ----核心代码 2 4.  ...

  3. HttpWebRequest自动登录网站并获取网站内容(不包含验证码的网站)

    HttpWebRequest自动登录网站并获取网站内容(不包含验证码的网站) 可以使用 Visual Sniffer(百度搜索) 来捕捉提交的数据信息: 1. 访问你需要站外提交的页面,比如 CSDN ...

  4. 网站注册获取短信验证码步骤

    目前短信验证码的应用可以说是相当的广泛,不仅避免了大量重复注册.烂数据,提高了企业工作效率,而且在操作上也相当简单,只需要在企业现有的网站上进行短信接口对接,就可以实现短信验证码的发送. 网站注册获取 ...

  5. WEB自动化(5)获取网站验证码即从验证码截图中获取图片中的字符串

    WEB自动化(1)环境安装及打开浏览器实例 WEB自动化(2)常用的元素定位方法之xpath详解 WEB自动化(3)PO设计模式原理与实现 WEB自动化(4)使用selenium将网站验证码截图保存为 ...

  6. 寻找阿登高地——爬虫工程师如何绕过验证码

    马奇诺防线是二战前法国耗时十余年修建的防御工事,十分坚固,但是由于造价昂贵,仅修建了法德边境部分,绵延数百公里,而法比边界的阿登高地地形崎岖,不易运动作战,且比利时反对在该边界修建防线,固法军再次并没 ...

  7. 爬虫工程师如何绕过验证码?寻找阿登高地之路

    导读:马奇诺防线是二战前法国耗时十余年修建的防御工事,十分坚固,但是由于造价昂贵,仅修建了法德边境部分,绵延数百公里,而法比边界的阿登高地地形崎岖,不易运动作战,且比利时反对在该边界修建防线,固法军再 ...

  8. python通过cookie绕过验证码_Python Selenium Cookie 绕过验证码实现登录示例代码

    之前介绍过通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1.直接看代码,内有详细注释说明 # FileName : Wm_Cookie ...

  9. python接口自动化(十三)--cookie绕过验证码登录(详解)

    简介 有些登录的接口会有验证码:短信验证码,图形验证码等,这种登录的话验证码参数可以从后台获取的(或者查数据库最直接).获取不到也没关系,可以通过添加cookie的方式绕过验证码.(注意:并不是所有的 ...

最新文章

  1. Prim算法生成迷宫
  2. Tensorflow【实战Google深度学习框架】TFLearn大宝剑
  3. [零基础学JAVA]Java SE面向对象部分-08.面向对象基础(03)
  4. ajax处理返回的xml数据,使用AJAX调用WebService返回xml不返回json原因以及解决办法...
  5. 操作系统学习笔记-02-1.2-什么是操作系统
  6. 【实物】端到端自动驾驶搭建教程(四)附完整资料
  7. 中铁总数据中心落户武清 项目总投资22.7亿元
  8. 微信多开软件(Java版)
  9. 运维--域服务器--搭建
  10. MySQL-数据库的索引类型有哪些
  11. 成了精的太师椅·自由之翼·八
  12. sql语句 如果为空值显示为0
  13. 【ZLR-T81 200A漏电继电器】
  14. 初学oracle-1
  15. 组建使用“智能卡”进行身份验证的***服务器
  16. 乐优商城部署配置过程
  17. 《西瓜书》吃瓜笔记1、2章
  18. ssh mysql jsp码头船只出行及配套货柜码放管理系统的设计与实现+论文+开题报告+任务书
  19. 解决电脑不能被局域网内的其它电脑访问的方法
  20. shELL中的字符串处理(转)

热门文章

  1. json-rpc 调用btc、usdt钱包节点 java
  2. MySQL SQL分组查询
  3. vue 文件目录详解
  4. C#求解圆和圆的交点
  5. setProperty Error
  6. 万事考虑周全才能更加容易 ——用《周易》思想指导工作、学习和生活
  7. 九龙证券|整合大年 钢企迎来盈亏平衡新周期
  8. linux服务之lvs
  9. 机器学习概念:最大后验概率估计与最大似然估计 (Maximum posterior probability and maximum likelihood estimation)
  10. python计算三角函数_使用Python三角函数公式计算三角形的夹角案例