Python中免验证跳转到内容页的实例代码


Posted in Python onOctober 23, 2020

相信很多人在浏览网页时,经常会碰到需要输入验证码才可以继续浏览的情况吧,遇到这种问题,大多数人只能进行繁琐的注册验证,今天小编教大家只要使用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 相关文章推荐
利用Python的装饰器解决Bottle框架中用户验证问题
Apr 24 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
python中正则表达式的使用方法
Feb 25 Python
python3.6的venv模块使用详解
Aug 01 Python
python实现诗歌游戏(类继承)
Feb 26 Python
python双端队列原理、实现与使用方法分析
Nov 27 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
Django中使用Json返回数据的实现方法
Jun 03 Python
python else语句在循环中的运用详解
Jul 06 Python
Python+OpenCV图像处理——图像二值化的实现
Oct 24 Python
python asyncio 协程库的使用
Jan 21 Python
python对 MySQL 数据库进行增删改查的脚本
Oct 22 #Python
Python提取视频中图片的示例(按帧、按秒)
Oct 22 #Python
详解python模块pychartdir安装及导入问题
Oct 22 #Python
Python实现自动装机功能案例分析
Oct 22 #Python
Python reversed反转序列并生成可迭代对象
Oct 22 #Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 #Python
Python类的继承super相关原理解析
Oct 22 #Python
You might like
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
javascript中的float运算精度实例分析
2010/08/21 Javascript
jquery动画1.加载指示器
2012/08/24 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
PHP PDO操作总结
2014/11/17 Javascript
javascript表单验证和Window详解
2014/12/11 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
2018/09/02 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
解决vue elementUI中table里数字、字母、中文混合排序问题
2020/01/07 Javascript
js实现踩五彩块游戏
2020/02/08 Javascript
vue中touch和click共存的解决方式
2020/07/28 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
[02:29]完美世界高校联赛上海赛区回顾
2015/12/15 DOTA
[01:43]深扒TI7聊天轮盘语音出处4
2017/05/11 DOTA
浅谈python 导入模块和解决文件句柄找不到问题
2018/12/15 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
python中的协程深入理解
2019/06/10 Python
python可视化爬虫界面之天气查询
2019/07/03 Python
浅谈python3中input输入的使用
2019/08/02 Python
python实现猜数游戏(保存游戏记录)
2020/06/22 Python
Python用来做Web开发的优势有哪些
2020/08/05 Python
python 利用zmail库发送邮件
2020/09/11 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
英国家喻户晓的折扣商场:TK Maxx
2017/05/26 全球购物
美国奢侈品购物平台:Orchard Mile
2018/05/02 全球购物
优秀安全员事迹材料
2014/05/11 职场文书
2015大学生实训报告
2014/11/05 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
2015年元旦文艺晚会总结(学院)
2014/11/28 职场文书
小学生安全保证书
2015/05/09 职场文书