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使用PIL缩放网络图片并保存的方法
Apr 24 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
python中sys.argv函数精简概括
Jul 08 Python
python把数组中的数字每行打印3个并保存在文档中的方法
Jul 17 Python
python 求一个列表中所有元素的乘积实例
Jun 11 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
python编写微信公众号首图思路详解
Dec 13 Python
python使用正则表达式去除中文文本多余空格,保留英文之间空格方法详解
Feb 11 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
Python下载网易云歌单歌曲的示例代码
Aug 12 Python
Django nginx配置实现过程详解
Sep 10 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在字符串中查找指定字符串并删除的代码
2008/10/02 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
2015/10/08 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
php快速导入大量数据的实例方法
2019/09/23 PHP
利用Javascript判断操作系统的类型实现不同操作系统下的兼容性
2013/01/29 Javascript
正负小数点后两位浮点数实现原理及代码
2013/09/06 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
2016/02/02 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
javascript实现label标签跳出循环操作
2016/03/06 Javascript
jquery基本选择器匹配多个元素的实现方法
2016/09/05 Javascript
JS实现的图片预览插件与用法示例【不上传图片】
2016/11/25 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
浅谈angular4 ng-content 中隐藏的内容
2017/08/18 Javascript
Angular2使用vscode断点调试ts文件的方法
2017/12/13 Javascript
JS解惑之Object中的key是有序的么
2019/05/06 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
简单谈谈python的反射机制
2016/06/28 Python
Python 中 Virtualenv 和 pip 的简单用法详解
2017/08/18 Python
python3正则提取字符串里的中文实例
2019/01/31 Python
高考考python编程是真的吗
2020/07/20 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
Python爬虫分析微博热搜关键词的实现代码
2021/02/22 Python
详解使用HTML5的classList属性操作CSS类
2017/10/13 HTML / CSS
深入探究HTML5的History API
2015/07/09 HTML / CSS
Javascript如何发送一个Ajax请求
2015/01/26 面试题
高级护理专业大学生求职信
2013/10/24 职场文书
岗位职责范本
2013/11/23 职场文书
海飞丝的广告词
2014/03/20 职场文书
销售人员工作自我评价
2014/09/21 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
辞职信怎么写?
2019/05/21 职场文书
七年级话题作文之执着
2019/11/19 职场文书
Go语言基础map用法及示例详解
2021/11/17 Golang
linux目录管理方法介绍
2022/06/01 Servers