上次以我菜鸡的水平拼了一个下载安装包的脚本,能用所学让工作更方便心里爽歪歪。
谁知道环境更新了,Jenkins版本从 2.263.3 更新为 2.303.3脚本不好使了。
报错误代码:403。打印一下内容提示:
r=session.post(login_url,data=user, headers=headers) print(r.text)
#显示一串html主要就是 “Authentication required ”然后跳转到登陆页。
百度之,身份认证 — Requests 2.18.1 文档 (python-requests.org) 官方文档提示,需要加auth参数。
>>> requests.get('https://api.github.com/user', auth=('user', 'pass'))
于是改为
r=session.post(login_url, auth=('xxxx', 'xxxxx'),data=user, headers=headers) print(r.text)
#显示很长的html,看来是可以了。
心得“多查多试”。
后面之前的代码又加了一个进度条。代码贴出来有用的可以拿去。
# -*- coding: utf-8 -*- import requests import time headers={ "Host":"192.168.1.xxx:xxxx", 'Referer':'192.168.1.xxxx:xxxx/login?from=%2F', 'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36', } login_url = "http://192.168.1.xxx:xxxx/j_spring_security_check" user = { "j_username": "xxxx", "j_password": "xxxxxxxxx", "from": "/", "Submit": "登录" } session = requests.session() sss=session.post(login_url,auth=('xxxx', 'xxxxxxxxxx'),data=user, headers=headers) url='http://192.168.1.xxx:xxxx/job/app-xxxxx-v0000/lastSuccessfulBuild/artifact/app/build/outputs/apk/v0000/debug/app-v0000-debug.apk' '''resp = session.get(url, stream = True) with open('app-v0000-debug.apk','wb') as f: f.write(resp.content)''' start = time.time() #下载开始时间 response = session.get(url,auth=('xxxx','xxxxxxxxxx'), stream=True) #stream=True必须写上 size = 0 #初始化已下载大小 chunk_size = 1024 # 每次下载的数据大小 content_size = int(response.headers['content-length']) # 下载文件总大小 try: if response.status_code == 200: #判断是否响应成功 print('开始下载,[文件大小]:{size:.2f} MB'.format(size = content_size / chunk_size /1024)) #开始下载,显示下载文件大小 with open('app-v0000-debug.apk','wb') as file: #显示进度条 filepath = path+'name.extension name' #设置图片name,注:必须加上扩展名 for data in response.iter_content(chunk_size = chunk_size): file.write(data) size +=len(data) print('r'+'[下载进度]:%s%.2f%%' % ('■'*int(size*50/ content_size), float(size / content_size * 100)) ,end=' ') end = time.time() #下载结束时间 print('n下载完成!,用时: %.2f秒' % (end - start)) #输出下载用时时间 else: print(response.status_code) except: print('服务器没响应!!!')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)