环境: python 2.7 + win10

工具:fiddler postman 安卓模拟器

首先,打开fiddler,fiddler作为http/https 抓包神器,这里就不多介绍。

配置允许https

配置允许远程连接 也就是打开http代理

电脑ip: 192.168.1.110

然后 确保手机和电脑是在一个局域网下,可以通信。由于我这边没有安卓手机,就用了安卓模拟器代替,效果一样的。

打开手机浏览器,输入192.168.1.110:8888   也就是设置的代理地址,安装证书之后才能抓包

安装证书之后,在 WiFi设置 修改网络 手动指定http代理

保存后就可以了,fiddler就可以抓到app的数据了,打开快手 刷新,可以 看到有很多http请求进来,一般接口地址之类的很明显的,可以看到 是json类型的

http post请求,返回数据是json ,展开后发现一共是20条视频信息,先确保是否正确,找一个视频链接看下。

ok 是可以播放的 很干净也没有水印。

那么现在打开 postman 来模拟这个post 看看有没有检验参数

一共是这么多参数,我以为 client_key 和 sign 会验证...可是 后面 发现我错了 啥也没验证 就这样提交过去就行...

form-data 方式提交则报错

那换 raw 这种

报错信息不一样了,试试加上 headers

nice 成功返回数据,我又多试几次,发现每次返回结果不一样,都是 20个视频,刚才其中post参数中 有个page=1 可能一直都是第一页 就像一直在手机上不往下翻了 就开始一直刷新那样,反正 也无所谓,只要返回数据 不重复就好。

下面就开始上代码

# -*-coding:utf-8-*-
# author : Corleone
import urllib2,urllib
import json,os,re,socket,time,sys
import Queue
import threading
import logging
# 日志模块
logger = logging.getLogger("AppName")
formatter = logging.Formatter('%(asctime)s %(levelname)-5s: %(message)s')
console_handler = logging.StreamHandler(sys.stdout)
console_handler.formatter = formatter
logger.addHandler(console_handler)
logger.setLevel(logging.INFO)
video_q = Queue.Queue()  # 视频队列
def get_video():url = "http://101.251.217.210/rest/n/feed/hot?app=0&lon=121.372027&c=BOYA_BAIDU_PINZHUAN&sys=ANDROID_4.1.2&mod=HUAWEI(HUAWEI%20C8813Q)&did=ANDROID_e0e0ef947bbbc243&ver=5.4&net=WIFI&country_code=cn&iuid=&appver=5.4.7.5559&max_memory=128&oc=BOYA_BAIDU_PINZHUAN&ftt=&ud=0&language=zh-cn&lat=31.319303 "data = {'type': 7,'page': 2,'coldStart': 'false','count': 20,'pv': 'false','id': 5,'refreshTimes': 4,'pcursor': 1,'os': 'android','client_key': '3c2cd3f3','sig': '22769f2f5c0045381203fc57d1b5ad9b'}req = urllib2.Request(url)req.add_header("User-Agent", "kwai-android")req.add_header("Content-Type", "application/x-www-form-urlencoded")params = urllib.urlencode(data)try:html = urllib2.urlopen(req, params).read()except urllib2.URLError:logger.warning(u"网络不稳定 正在重试访问")html = urllib2.urlopen(req, params).read()result = json.loads(html)reg = re.compile(u"[\u4e00-\u9fa5]+")  # 只匹配中文for x in result['feeds']:try:title = x['caption'].replace("\n","")name = " ".join(reg.findall(title))video_q.put([name, x['photo_id'], x['main_mv_urls'][0]['url']])except KeyError:pass
def download(video_q):path = u"D:\快手"while True:data = video_q.get()name = data[0].replace("\n","")id = data[1]url = data[2]file = os.path.join(path, name + ".mp4")logger.info(u"正在下载:%s" %name)try:urllib.urlretrieve(url,file)except IOError:file = os.path.join(path, u"神经病呀"+ '%s.mp4') %idtry:urllib.urlretrieve(url, file)except (socket.error,urllib.ContentTooShortError):logger.warning(u"请求被断开,休眠2秒")time.sleep(2)urllib.urlretrieve(url, file)logger.info(u"下载完成:%s" % name)video_q.task_done()
def main():# 使用帮助try:threads = int(sys.argv[1])except (IndexError, ValueError):print u"\n用法: " + sys.argv[0] + u" [线程数:10] \n"print u"例如:" + sys.argv[0] + " 10" + u" 爬取视频 开启10个线程 每天爬取一次 一次2000个视频左右(空格隔开)"return False# 判断目录if os.path.exists(u'D:\快手') == False:os.makedirs(u'D:\快手')# 解析网页logger.info(u"正在爬取网页")for x in range(1,100):logger.info(u"第 %s 次请求" % x)get_video()num = video_q.qsize()logger.info(u"共 %s 视频" %num)# 多线程下载for y in range(threads):t = threading.Thread(target=download,args=(video_q,))t.setDaemon(True)t.start()video_q.join()logger.info(u"-----------全部已经爬取完成---------------")
main()

下面测试

多线程下载 每次下载 2000 个视频左右  默认下载到D:\快手

好了 这次就到这结束了,其实也很简单,快手竟然没有加密。。。因为 爬 抖音的时候 就碰到问题了.....

python爬虫爬取快手视频多线程下载功能【fd的使用】相关推荐

  1. python爬取快手视频 多线程下载

    直接开始! 环境: python 2.7 + win10 工具:fiddler postman 安卓模拟器 首先,打开fiddler,fiddler作为http/https 抓包神器,这里就不多介绍. ...

  2. python 爬虫 爬取快手视频 批量解析 建议收藏

    #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/12/8 20:30 # @Author : huni # @File : 快 ...

  3. Python爬虫爬取Twitter视频、文章、图片

    Python爬虫爬取Twitter视频.文章.图片 Twitter的Python爬虫 https://github.com/bisguzar/twitter-scraper 2.2k星标 (2020. ...

  4. python爬虫爬取网易云音乐下载_Python爬虫实践-网易云音乐!没有版权又如何!照样爬取!...

    1.前言 最近,网易的音乐很多听不到了,刚好也看到很多教程,跟进学习了一下,也集大全了吧,本来想优化一下的,但是发现问题还是有点复杂,最后另辟捷径,提供了简单的方法啊! 本文主要参考 python编写 ...

  5. 使用python爬虫爬取bilibili视频

    可以使用 Python 爬虫框架如 Scrapy 来爬取 Bilibili 的视频.首先需要了解 Bilibili 网站的构造,包括数据是如何呈现的,然后构建请求来获取所需的数据.同时需要考虑反爬虫措 ...

  6. Python爬虫-爬取爆米花视频下载至本地

    打开爆米花的网站,然后打开其中一个视频: 打开F12,然后刷新,可以看到: 这个URL为视频的真实地址: http://59.56.28.122/vm48002.baomihua.com/d1b3a2 ...

  7. python 爬虫爬取无损图片 批量下载wallhaven超清壁纸

    Awesome Wallpapers - wallhaven.cc https://wallhaven.cc/wallhaven可以说是世界上最好的壁纸网站之一,其中的壁纸都非常优秀. 废话不多说,直 ...

  8. Python爬虫-爬取wallhaven壁纸

    Python爬虫-爬取wallhaven壁纸 前言 可行性分析 功能介绍 效果展示 基本思路 1.获取每页(1页24张)壁纸的url 2.获取每张壁纸缩略图的url 3.获取壁纸原图下载的url 4. ...

  9. python 爬视频下载_Python爬虫进阶之爬取某视频并下载的实现

    这篇文章我们来讲一下在网站建设中,Python爬虫进阶之爬取某视频并下载的实现.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 这几天在家闲得无聊,意外的挖掘到了一个资源网站 ...

  10. Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中

    Python爬虫:爬取知乎上的视频,并把下载链接保存到md文件中 1.需要的Python模块 主要是requests模块,用于得到的网页的数据 安装命令为:pip install requests 2 ...

最新文章

  1. android游戏画面抖动,抖音游戏主播是怎么直播手机画面的?
  2. 在Json解析过程中,我为什么用object1.optInt ,和 object1.optString
  3. 【题解】【数组】【Prefix Sums】【Codility】Genomic Range Query
  4. 一步一步学Silverlight 2系列(31):图形图像综合实例—实现水中倒影效果
  5. servlet 返回可访问文件_JavaWeb技术(4):Servlet的理解(上)
  6. 运行Jenkins部署任务
  7. 编写Java程序 堆栈的接口_java - 错误:调用实现接口的通用方法时,java.lang.AbstractMethodError - 堆栈内存溢出...
  8. BZOJ 3697: 采药人的路径 [点分治] [我想上化学课]
  9. linux x64下安装oracle 11g
  10. SEO学习步骤--SEO入门第一章
  11. 说服力:从场景化出发的用户价值
  12. 组合与继承c++_组合与继承
  13. java 内存快照怎么看_jvm工具篇-(1)-分析工具MAT使用(内存快照分析)
  14. teablue数据分析_Bluetea蓝茶的品牌该如何分析,你知道吗
  15. svn拉取文件失败_TortoiseSVN常见的错误信息与解决方法
  16. 链家北京二手房交易数据分析
  17. html实现让电脑断网的功能,简单几步,即可实现电脑自动断网
  18. Markdownpad2报错: Html Rendering Error (An error occurred with the Html rendering component.)
  19. 编译gstreamer nvenc插件
  20. BIGEMAP APP导入/导出文件\照片(kml\shp\cad(dxf)\txt\excel)

热门文章

  1. TX2平台cmake安装
  2. Java中String类的常用方法
  3. 如何写好科研论文思维导图分享
  4. 软件行业各职位英文缩写
  5. ISO9001和ISO27001质量管理体系(详解)
  6. assign ur here php,ecshop源码分析01
  7. 民生银行用户画像搭建与应用 / 民生银行客户画像搭建与应用
  8. md快捷键(win)
  9. 数据分享 — 国内外常用夜间灯光数据产品介绍
  10. 从单张图重建三维人体模型综述(二)