proxyee-down真的很不错,其实原理很简单。python估计也能实现。不过目前有一个需求就是批量下载,但是目前的版本(3.12)不支持。我知道它内部有个server,看了半天源码,不能找到具体的请求参数。于是另辟途径,运行下它的前端代码(vue实现),然后又捣鼓了半天,搞定!

直接上源码吧,不解释。(python 实现,依赖aiohttp)

如果觉得好,麻烦github点个星星(有那么重要吗:)代码地址:https://github.com/woshimanong1990/proxyee-down-batch-create-task

#coding:utf-8
import asyncio
import sys
import time
import os
import cgi
import re
import jsonfrom urllib import parse
from urllib.parse import urlparse, unquote_plusimport aiohttpasync def fectch_config(session):# 获取配置信息,只用到了部分信息url = "http://127.0.0.1:26339/config"header={"Content-Type": "application/json;charset=UTF-8"}async with session.get(url, headers=header) as response:if response.status // 100 != 2:print("fectch_config, status", response.status)return {}config = await response.json()config_keys = ["filePath","connections","timeout","retryCount","autoRename","speedLimit"]new_config = {}# 啰嗦,应该有简单的方法for key in config_keys:new_config[key] = config.get(key,None)return new_configasync def get_head_info(session, url):# 获取 request 和 response 信息# {"request":{"method":"GET","url":"https://nodejs.org/dist/v8.12.0/node-v8.12.0-x64.msi",# "heads":{"Host":"nodejs.org","Connection":"keep-alive","User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36",# "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8","Referer":"nodejs.org"},"body":null},# "response":{"fileName":"node-v8.12.0-x64.msi","totalSize":16445440,"supportRange":true}}request_url = "http://127.0.0.1:26339/util/resolve"data={"method":"GET","url":url,"heads":{},"body":""}header={"Accept":"application/json, text/plain, */*","Content-Type":"application/json;charset=UTF-8","Origin":"http://127.0.0.1:26339","Referer":"http://127.0.0.1:26339/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"}#print("get header data", data)async with session.put(request_url, headers=header, json=data) as response:if response.status // 100 != 2:print("post_data error, status:{} reason{} ".format(response.status, await response.text()))return {}return await response.json()async def post_data(session, data):# 发送一个创建任务的请求到proxyee-downurl = "http://127.0.0.1:26339/tasks"header={"Accept":"application/json, text/plain, */*","Content-Type":"application/json;charset=UTF-8","Origin":"http://127.0.0.1:26339","Referer":"http://127.0.0.1:26339/","User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36"}#print("post data", json.dumps(data))async with session.post(url, headers=header, json=data) as response:if response.status // 100 != 2:print("post_data error,url:{} status:{} reason:{}".format(data.get("request",{}).get("url",""),response.status, await response.text()))#print(response.request_info)return Nonereturn await response.text()        async def create_task(session, url):# 创建任务,需要先发送两个请求,然后post,创建任务config = await fectch_config(session)request_response_data = await get_head_info(session, url)if not config:print("config is empty")returnif not request_response_data:print("request_response_data is empty")returndata={"config":config,}data.update(request_response_data)return await post_data(session, data)async def main(urls):tasks = []async with aiohttp.ClientSession() as session:for url in urls:task = create_task(session,url)tasks.append(task)await asyncio.gather(*tasks)if __name__ == "__main__":url = "https://nodejs.org/dist/v8.12.0/node-v8.12.0-x64.msi"loop = asyncio.get_event_loop()urls = [url] # 添加自己的下载链接# 可以加载json的文件# with open("download_urls.json", "r") as f:#     urls = json.load(f)# loop.run_until_complete(asyncio.gather(*[main(url, 30) for url in urls[0:5]]))loop.run_until_complete(main(urls))

补充:

建了一个qq群:389954854,主要目的是互帮互助,通过交流促进python技术。很多初学者往往不知道如何下手,还等什么,快快加入进来吧!

或者关注微信公众号:python码码有趣的

proxyee-down批量下载相关推荐

  1. android源码下载方法 批量下载 基于windows os

    安装win版的Gitbash, 在这里 http://msysgit.googlecode.com/files/Git-1.6.0.2-preview20080923.exe. 选择默认安装路径(否则 ...

  2. 批量下载文献中的参考文献

    批量下载文献中的参考文献 这里写目录标题 批量下载文献中的参考文献 一级目录 二级目录 三级目录 一.下载所有你需要文献的引文题录 二.导入到文献管理软件中 **点击导入文献,上一步已经下载的,如果不 ...

  3. Python批量下载XKCD漫画只需20行命令

    XKCD是一个流行的极客漫画网站,其官网首页有一个 Prev 按钮,让用户导航到前面的漫画.如果你希望复制该网站的内容以在离线的时候阅读,那么可以手动导航至每个页面并保存.但手动下载每张漫画要花较长的 ...

  4. python 批量下载 代码_Python + Selenium +Chrome 批量下载网页代码修改

    Python + Selenium +Chrome 批量下载网页代码修改 主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt 来达到在登陆状态下 批量打开并下载网 ...

  5. java批量下载文件为zip包

    批量下载文件为zip包的工具类 package com.meeno.trainsys.util;import javax.servlet.http.HttpServletRequest; import ...

  6. Windows下使用explorer批量下载文件

    背景: 客户的环境是Windows Server 2008 R2,需要每个月安装补丁,但出于安全考虑,将微软的自动更新封掉了,以至于每次安装补丁只能手动下载然后安装. 有时候每次需要下载的补丁均比较多 ...

  7. Linux运维之批量下载指定网站的100个图片文件,并找出大于200KB的文件

    题目为: 有一百个图片文件,它们的地址都是 http://down.fengge.com/img/1.png http://down.fengge.com/img/2.png - 一直到http:// ...

  8. python 批量下载网址_python 遍历oss 实现批量下载

    oss存储有很多批量上传的文  = = 然后现在是由于程序主动删除了oss的文件,阿里是不给恢复的,所以想要把文件备份到本地 . 阿里的oss是key-values形式的存储,没有文件夹的概念,也是就 ...

  9. [python] 溜了,溜了,七牛云图片资源批量下载 自建图床服务器

    故事背景: 七牛云最近一波测试域名操作真是把我坑死了!这简直和百度赠送你2T网盘,之后再限速一样骚操作.于是,痛定思痛自己买个云主机.自己搭图床应用! 1.七牛图片批量下载到本地 1.1 曲折尝试 当 ...

  10. C#实现图标批量下载

    本文略微有些长,花了好几晚时间编辑修改,若在措辞排版上有问题,请谅解.本文共分为四篇,下面是主要内容,也是软件开发基本流程. 阶段 描述 需求分析 主要描述实现本程序的目的及对需求进行分析,即为什么要 ...

最新文章

  1. 云计算技术 — 混合云
  2. Cron 表达式详解
  3. 如何让电脑成为看图说话的高手?计算机视觉顶会ICCV论文解读
  4. python mp4 切片_FFmpeg MP4视频切片成TS m3u8播放 好文收集
  5. 第十九期:HTTPS虐我千百遍,我却待她如初恋!
  6. breakcontinue
  7. 微信公众平台服务器 反馈,微信公众号开发之大坑
  8. php strstr 与 str_replace区别,[PHP]strstr(),substr(),str_replace(),parse_str()
  9. spss与python和sql区别_Python/Excel/SPSS/SQL数据处理方法比较之2 - 数据查看
  10. spring扫描配置文件
  11. matlab中小波工具箱下载,matlab小波工具箱小波分析步骤
  12. vue json对比 进行编辑
  13. 【游戏开发进阶】教你在Windows平台编译tolua runtime的各个平台库(Unity | 热更新 | tolua | 交叉编译)
  14. 神经网络控制与matlab仿真,神经网络matlab代码程序
  15. (附源码)ssm自助游服务系统 毕业设计 250858
  16. 计算机学院志愿公益活动,计算机科学与技术学院志愿者走进“君子残疾人之家”...
  17. C++笔试笔记1(4399 西山居 深信服 剑心互娱 快手)
  18. python在excel中数据画线_python中操作excel数据
  19. BGP协议解析(白话版)
  20. 网站访问量和服务器带宽的关系

热门文章

  1. 使用tld文件自定义jsp标签库
  2. 点击iframe里面嵌入的内容,获取iframe标签外面的元素,获取不到的问题
  3. Python爬虫——抓取贴吧帖子
  4. java排课系统源代码,JSP自动排课系统 - WEB源码|JSP源码/Java|源代码 - 源码中国
  5. linux内核学习1:进程间通信IPC
  6. 淘宝斗地主残局玩法技术方案总结
  7. TH-600电力远动报文规约分析仪
  8. 驾考经历分享——长沙
  9. 数学建模优化模型简单例题_离散型优化问题Ⅱ_数学建模_每日一题(未附代码)附求解规划类问题的建议...
  10. 2022最新!视觉SLAM综述(多传感器/姿态估计/动态环境/视觉里程计)