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中的Django框架中进行字符串翻译
Jul 27 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
Feb 21 Python
pandas表连接 索引上的合并方法
Jun 08 Python
python 借助numpy保存数据为csv格式的实现方法
Jul 04 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
python爬虫获取小区经纬度以及结构化地址
Dec 30 Python
Python 使用 prettytable 库打印表格美化输出功能
Dec 26 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
Pytest如何使用skip跳过执行测试
Aug 13 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
python 中的@运算符使用
May 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
workerman结合laravel开发在线聊天应用的示例代码
2018/10/30 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
js实现的仿新浪微博完美的时间组件升级版
2011/12/20 Javascript
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
javascript定义变量时加var与不加var的区别
2014/12/22 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
详解JavaScript 中的 replace 方法
2016/01/01 Javascript
快速掌握Node.js之Window下配置NodeJs环境
2016/03/21 NodeJs
js 定位到某个锚点的方法
2016/11/19 Javascript
cocos creator Touch事件应用(触控选择多个子节点的实例)
2017/09/10 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
JavaScript链式调用实例浅析
2018/12/19 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
微信小程序入门之绘制时钟
2020/10/22 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
2018/01/09 Python
对pandas中时间窗函数rolling的使用详解
2018/11/28 Python
Python玩转Excel的读写改实例
2019/02/22 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
通过selenium抓取某东的TT购买记录并分析趋势过程解析
2019/08/15 Python
python实现LRU热点缓存及原理
2019/10/29 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
使用keras2.0 将Merge层改为函数式
2020/05/23 Python
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
工商管理本科生求职信
2014/07/13 职场文书
商场租赁意向书
2014/07/30 职场文书
导游词之凤凰古城
2019/10/22 职场文书
用golang如何替换某个文件中的字符串
2021/04/25 Golang
Java移除无效括号的方法实现
2021/08/07 Java/Android
十大好看的穿越动漫排名:《瑞克和莫蒂》第一,国漫《有药》在榜
2022/03/18 日漫