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实现感知器
Dec 19 Python
TensorFlow神经网络优化策略学习
Mar 09 Python
python实现扫描日志关键字的示例
Apr 28 Python
python实现图片文件批量重命名
Mar 23 Python
python获取命令行输入参数列表的实例代码
Jun 23 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
Aug 17 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
Python制作词云图代码实例
Sep 09 Python
sklearn+python:线性回归案例
Feb 24 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
May 27 Python
python3获取控制台输入的数据的具体实例
Aug 16 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
Aug 26 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
destoon实现调用自增数字从1开始的方法
2014/08/21 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
Ctrl+Enter提交内容信息
2006/06/26 Javascript
拖拉表格的JS函数
2008/11/20 Javascript
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
一个可拖拽列宽表格实例演示
2012/11/26 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
js中匿名函数的创建与调用方法分析
2014/12/19 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
javascript垃圾收集机制的原理分析
2016/12/08 Javascript
Bootstarp基本模版学习教程
2017/02/01 Javascript
小程序实现多列选择器
2019/02/15 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
Python基于OpenCV实现人脸检测并保存
2019/07/23 Python
python Tensor和Array对比分析
2020/01/08 Python
opencv python在视屏上截图功能的实现
2020/03/05 Python
Stuart Weitzman美国官网:美国奢华鞋履品牌
2016/08/18 全球购物
美国现代家具购物网站:LexMod
2019/01/09 全球购物
编写一个类体现构造,公有,私有方法,静态,私有变量
2013/08/10 面试题
财务管理个人自荐书范文
2013/11/24 职场文书
心理健康教育心得体会
2013/12/29 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
护士感人事迹
2014/05/01 职场文书
大学新生入学教育方案
2014/05/16 职场文书
师范生自荐信模板
2014/05/28 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
年底个人总结范文
2015/03/10 职场文书
留学推荐信中文范文
2015/03/26 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书