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中的引用和拷贝浅析
Nov 22 Python
为Python的web框架编写MVC配置来使其运行的教程
Apr 30 Python
python中for用来遍历range函数的方法
Jun 08 Python
python将一组数分成每3个一组的实例
Nov 14 Python
Python3非对称加密算法RSA实例详解
Dec 06 Python
对python3 Serial 串口助手的接收读取数据方法详解
Jun 12 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
如何实现更换Jupyter Notebook内核Python版本
May 18 Python
基于nexus3配置Python仓库过程详解
Jun 15 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
Jun 17 Python
python爬虫中采集中遇到的问题整理
Nov 27 Python
Python requests库参数提交的注意事项总结
Mar 29 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
采用memcache在web集群中实现session的同步会话
2014/07/05 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
js实现权限树的更新权限时的全选全消功能
2009/02/17 Javascript
Javascript学习笔记2 函数
2010/01/11 Javascript
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
用js动态添加html元素,以及属性的简单实例
2016/07/19 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
vue-auto-focus: 控制自动聚焦行为的 vue 指令方法
2018/08/25 Javascript
layui的表单提交以及验证和修改弹框的实例
2019/09/09 Javascript
Vue如何获取数据列表展示
2019/12/11 Javascript
在Vue中创建可重用的 Transition的方法
2020/06/02 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
Python中%r和%s的详解及区别
2017/03/16 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
python实现抖音点赞功能
2019/04/07 Python
如何通过python画loss曲线的方法
2019/06/26 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
2019/10/11 Python
基于python实现文件加密功能
2020/01/06 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
详解用 python-docx 创建浮动图片
2021/01/24 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
乡镇干部先进事迹材料
2014/02/03 职场文书
洗发水广告词
2014/03/13 职场文书
主持词开场白
2014/03/17 职场文书
工程售后服务承诺书
2014/05/21 职场文书
研究生给导师的自荐信
2015/03/06 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
初一年级组工作总结
2015/08/12 职场文书
Linux下使用C语言代码搭建一个简单的HTTP服务器
2022/04/13 Servers
python和Appium的移动端多设备自动化测试框架
2022/04/26 Python