python模仿登录下载Jenkins包代码更新

上次以我菜鸡的水平拼了一个下载安装包的脚本,能用所学让工作更方便心里爽歪歪。

谁知道环境更新了,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'))
<Response [200]>

于是改为

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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值