python获取,请求验证码

本文介绍了一种自动化处理12306网站验证码的方法,包括下载验证码图片、显示图片、获取用户输入的验证码坐标并进行验证。使用Python的urllib和requests库实现HTTPS请求,通过http.cookiejar处理cookies,以及使用base64进行图片的二进制编码。

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

import urllib.request as r
import requests
import urllib
import urllib.parse
import http.cookiejar
import ssl
#为了防止ssl出现问题,你可以加上下面一行代码
ssl._create_default_https_context = ssl._create_unverified_context
#建立cookie处理,相当于是浏览器设置开启cookies
cjar=http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cjar))
#添加用户代理
opener.addheaders = [(‘User-agent’,‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0’)]
urllib.request.install_opener(opener)
#####开始请求 验证码url
def openimg(): #旧版本的功能没有被删除
u=‘https://kyfw.12306.cn/passport/captcha/captcha-image?login_site=E&module=login&rand=sjrand
r.urlretrieve(u,‘temp.jpg’)
import os
os.system(‘mspaint.exe temp.jpg’)
def openimg64():#新的二进制验证码
import base64
import os
yanzhengma_url=‘https://kyfw.12306.cn/passport/captcha/captcha-image64?login_site=E&module=login&rand=sjrand
imgbase64str=requests.get(yanzhengma_url).json()[‘image’]
with open(‘tmp.jpg’,‘wb’) as f: #保存图片2进制
f.write(base64.b64decode(imgbase64str))
os.system(‘mspaint.exe tmp.jpg’)
获取验证码坐标,我自己写死了
points={
‘1’:[47,44],
‘2’:[125,47],
‘3’:[179,45],
‘4’:[254,46],
‘5’:[50,127],
‘6’:[118,109],
‘7’:[180,109],
‘8’:[254,116]
}
获取验证码图片
openimg()

answer=input(‘点击下图所有的验证码’)
mstr=’’
for i in answer:
mstr =mstr +str(points[i][0])+’,’+str(points[i][1])+’,’
mstr=mstr[:-1]
url=‘https://kyfw.12306.cn/passport/captcha/captcha-check?&answer={}&rand=sjrand&login_site=E
url=url.format(r.quote(mstr))
print(‘url验证码组装成功’,url)

'’‘因为是https请求,所以请求过程中可能存在一些问题,需要添加一些设置’’’
‘’‘否则永远请求失败!!!’’'

r.urlopen(url).read().decode(‘utf-8’,‘ignore’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值