最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python教程:如何免验证跳转到内容页?

    正文概述    2020-05-27   286

    相信很多人在浏览网页时,经常会碰到需要输入验证码才可以继续浏览的情况吧,遇到这种问题,大多数人只能进行繁琐的注册验证,今天小编教大家只要使用python就可以免验证方法。

    以经常用到的解答网站——上学吧为例,在网站里点击答案页面,会显示验证后才可以查看提示,下面就使用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教程:如何免验证跳转到内容页?

    然后运行python脚本,复制粘贴网址。

    Python教程:如何免验证跳转到内容页?

    按Enter键,自动下载验证码图片存为 temp.png,然后自动读取图片并展示,也可以手动打开同目录下的 temp.png 图片。

    Python教程:如何免验证跳转到内容页?

    最后在命令行窗口输入验证码图片中的计算结果即可获取题目详情以及正确答案。

    Python教程:如何免验证跳转到内容页?

    以上就是PyThon免验证跳转内容页的全部内容了,感兴趣的小伙伴可以跟着教程实际操作~如需了解更多python实用知识,点击进入起源地模板网教学中心


    起源地下载网 » Python教程:如何免验证跳转到内容页?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元