python用什么软件编程1001python用什么软件编程-Python中免验证跳转到内容页的实例代码...

本文介绍了如何使用Python进行网页模拟登录,并绕过验证码以获取上学吧网站的答案。通过设置X-Forwarded-For欺骗IP检测,结合BeautifulSoup解析网页内容,实现了对验证码图片的下载、用户输入验证结果以及获取问题和答案的功能。需要注意的是,该方法涉及对网站的自动化访问,可能违反网站使用政策。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信很多人在浏览网页时,经常会碰到需要输入验证码才可以继续浏览的情况吧,遇到这种问题,大多数人只能进行繁琐的注册验证,今天小编教大家只要使用python就可以免验证方法。

以经常用到的解答网站――上学吧为例,在网站里点击答案页面,会显示验证后才可以查看提示,下面就使用python实现跳过验证码。

202010230809591.png

我们需要通过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(" 请输入验证码图片中的计算结果:")

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(" " + '-'*45)

if(ans): # 只有验证码核查通过才会显示答案

print(" 题目:" + get_question(session))

print(ans.text)

else:

print(' 没有找到答案!请检查验证码或网址是否输入有误! ')

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(" 请输入上学吧网站上某道题目的网址,例如:https://www.shangxueba.com/ask/8952241.html 请输入:").strip() # 过滤首尾的空格

if(link[0:31] != "https://www.shangxueba.com/ask/" or link[-4:] != "html"):

print(" 网址输入有误!请重新输入! ")

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(" 网址输入有误!请重新输入! ")

continue

注意:其中 requests 和 beautifulsoup 两个库需要另外安装,建议使用 pip 方式安装:

pip install requests

pip install beautifulsoup4

Python 脚本运行流程:

首先复制上学吧某道题目的网址,类似以下格式:

202010230809592.png

然后运行python脚本,复制粘贴网址。

202010230809593.png

按Enter键,自动下载验证码图片存为 temp.png,然后自动读取图片并展示,也可以手动打开同目录下的 temp.png 图片。

202010230809594.png

最后在命令行窗口输入验证码图片中的计算结果即可获取题目详情以及正确答案。

202010230809595.png

到此这篇关于Python中免验证跳转到内容页的实例代码的文章就介绍到这了,更多相关Python如何免验证跳转到内容页内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值