Closed HermanZzz closed 3 years ago
ykdl -h
usage: ykdl [-h] [-l] [-i] [-J] [-F FORMAT] [-o OUTPUT_DIR] [-O OUTPUT_NAME]
[-p PLAYER] [-k] [--proxy PROXY] [-t TIMEOUT]
[--fail-retry-eta FAIL_RETRY_ETA] [--no-fail-confirm] [--no-merge]
[-s START] [-j JOBS] [--debug]
video_urls [video_urls ...]
YouKuDownLoader(ykdl 1.7.0), a video downloader. Forked form you-get
0.3.34@soimort
positional arguments:
video_urls video urls
ykdl -i https://v.pptv.com/show/0lCsO6MJebcamAA.html
site: PPTV (PP聚力)
title: 十一娘回侯府正面gank乔姨娘,拿回谆哥抚养权
artist: None
streams:
- format: HD
container: mp4
video-profile: 852x480@237kbps
size: 12.1 MiB (12653713 bytes)
# download-with: ykdl --format=HD [URL]
Real urls:
http://aliyun.vod.pptv.com/0/e13c1e23665b8b47653f88d6549ef1d0.mp4?key=
- format: SD
container: mp4
video-profile: 720x404@215kbps
size: 12.1 MiB (12653713 bytes)
# download-with: ykdl --format=SD [URL]
Real urls:
http://aliyun.vod.pptv.com/0/e0e0b8d270f94b4c6fd698206e62f759.mp4?key=
- format: LD
container: mp4
video-profile: 480x270@229kbps
size: 12.1 MiB (12653713 bytes)
# download-with: ykdl --format=LD [URL]
Real urls:
http://aliyun.vod.pptv.com/0/1f45dd8f4cc373dfd3417e26a1850650.mp4?key=
默认 User-Agent 被封杀 。。。you-get 的没有封
怀疑是某个内置 ykdl 的软件引起的,普通用户应该不会造成这种结果。
默认 User-Agent 被封杀 。。。you-get 的没有封
怀疑是某个内置 ykdl 的软件引起的,普通用户应该不会造成这种结果。
@SeaHOH 你确定是在讨论此 issue
ykdl -O 0_test https://v.pptv.com/show/0lCsO6MJebcamAA.html
site: PPTV (PP聚力)
title: 十一娘回侯府正面gank乔姨娘,拿回谆哥抚养权
artist: None
streams:
- format: HD
container: mp4
video-profile: 852x480@237kbps
size: 12.1 MiB (12653713 bytes)
# download-with: ykdl --format=HD [URL]
Start downloading: 0_test
100% [1/1] [00:03]
Current downloaded 5.26 MB, cost 00:03.
Total downloaded 5.26 MB of 5.26 MB, cost 00:03
@SeaHOH 你确定是在讨论此 issue
是的,我也观察到 404 错误,和你不一样。可能分配到的 CDN 不同。
间歇性无法获取,打印了html 无结果输出
随便改一个字符就可以重新获取
是的,我也观察到 404 错误,和你不一样。可能分配到的 CDN 不同。
用你给的 ip 遇到 HTTP Error 404: Not Found
了
试了试,确实与 User-Agent 有关
不过,默认 UA 也有点儿太老了吧?
六年前的 Firefox 38,估计现在就没几个人用
发现有的可以成功, 但是失败的还是大大多数:ykdl -i https://v.pptv.com/show/zpicreOBGtvRX1T0.html --debug DEBUG:common:video_host> v.pptv.com DEBUG:common:short_name> pptv DEBUG:html:get_content> URL: https://v.pptv.com/show/zpicreOBGtvRX1T0.html DEBUG:html:get_content> Charset: utf-8 DEBUG:html:get_content> URL: http://web-play.pptv.com/webplay3-0-None.xml?zone=8&version=4&username=&ppi=302c3333&type=ppbox.launcher&pageUrl=http%3A%2F%2Fv.pptv.com&o=0&referrer=&kk=&scver=1&appplt=flp&appid=pptv.flashplayer.vod&appver=3.4.3.3&nddp=1 Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/3.6/bin/ykdl", line 11, in <module> load_entry_point('ykdl==1.6.2', 'console_scripts', 'ykdl')() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/cykdl/__main__.py", line 173, in main info = parser(u) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ykdl/extractor.py", line 24, in parser info = self.prepare() File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ykdl/extractors/pptv.py", line 206, in prepare xml = get_content('http://web-play.pptv.com/webplay3-0-{}.xml?zone=8&version=4&username=&ppi=302c3333&type=ppbox.launcher&pageUrl=http%3A%2F%2Fv.pptv.com&o=0&referrer=&kk=&scver=1&appplt=flp&appid=pptv.flashplayer.vod&appver=3.4.3.3&nddp=1'.format(self.vid)) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/ykdl/util/html.py", line 67, in get_content response = urlopen(req) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 223, in urlopen return opener.open(url, data, timeout) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 532, in open response = meth(req, response) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 642, in http_response 'http', request, response, code, msg, hdrs) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 570, in error return self._call_chain(*args) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 504, in _call_chain result = func(*args) File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/urllib/request.py", line 650, in http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 404: Not Found
ua更改为Chrome还是失败了. 更改为IE成功了..
发现有的可以成功, 但是失败的还是大大多数
你是不是在频繁大规模扒视频?不要这么做,会触发封杀。
不过,默认 UA 也有点儿太老了吧? 六年前的 Firefox 38,估计现在就没几个人用
跟老旧无关,改成 37 也行,原因如上所述。
不过,默认 UA 也有点儿太老了吧? 六年前的 Firefox 38,估计现在就没几个人用
跟老旧无关,改成 37 也行,原因如上所述。
自然与新旧无关,但用户量少是一个问题 因为这基本等于是告诉服务器你在用的不像是常规的浏览器 而且因为用的人少,封了之后完全不会影响大多数人的使用
另,HermanZzz 用的是 1.6.2 我看 @SeaHOH 你在之后改过 pptv 的解析
自然与新旧无关,但用户量少是一个问题 因为这基本等于是告诉服务器你在用的不像是常规的浏览器 而且因为用的人少,封了之后完全不会影响大多数人的使用
我估计是自动进行的,和用户人数无关,此机制应该涉及到请求 IP 因素。
另,HermanZzz 用的是 1.6.2 我看 @SeaHOH 你在之后改过 pptv 的解析
那个修改对这个 url 没有影响。
没有额 如果要爬取的话也会用ip代理池
我估计是自动进行的,和用户人数无关,此机制应该涉及到请求 IP 因素。
虽然没有太多这方面的经验,但是我遇到的反扒方式都是递增时间封 IP 的 临时封 User-Agent 的方式还是第一次见
虽然没有太多这方面的经验,但是我遇到的反扒方式都是递增时间封 IP 的 封 User-Agent 的方式还是第一次见
可能有多个 IP 频繁触发,已经被临时封杀过,而国内永久的封 IP 不是个好办法,大多数都是动态分配的,封 UA 就一劳永逸。
没有额 如果要爬取的话也会用ip代理池
只能继续观察,如果那些人还不住手,我也没有办法。
不是ip问题吧
没改ua前,ykdl的就是获取不到,用requests.get测试可以
改了ua:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:67.0) Gecko/20100101 Firefox/67.0
刷了几十次能获取到
不是ip问题吧
最初 (这个 issue 提出之前) 可能只是临时封 IP,但现在国外服务器也这样了,肯定是封的 UA。也不知道是哪儿的混蛋,估计是个初学者,居然拿 ykdl 当批量扒取工具。
不是ip问题吧
最初 (这个 issue 提出之前) 可能只是临时封 IP,但现在国外服务器也这样了
目前为止我这儿一切正常
目前为止我这儿一切正常
我们该庆幸那人至少没有足够的能力把这个事情继续搞大。这么看来还是自动防御机制,没有全局黑名单,但估计就算是临时封这个时间也不会短,后续正常请求可能会增加这个时间。等那人折腾够了再说,过段时间我们换个 UA。
过段时间我们换个 UA。
说到 UA 这事儿,个人觉得默认 UA 长期停留在某个浏览器的低版本上并不好 好在本项目的用户并不多,否则一定程度上可能会跟固守 IE 的那批人一样成为技术更新发展的阻碍 就算不想跟着版本帝频繁更换 UA,也可以考虑跟着 Firefox ESR 更新嘛
国内的这些服务器似乎对 UA 并不敏感,旧一点也没有什么实质影响。当然,跟随 ESR 版本也挺好,但不应该是最新的,而是上一个版本,以免出现这种情况影响扩大。
跟随 ESR 版本也挺好,但不应该是最新的,而是上一个版本,以免出现这种情况影响扩大。
https://wiki.mozilla.org/Release_Management/Calendar
就目前而言,这个上一个版本
指的是77
还是68
?
就目前而言,这个
上一个版本
指的是77
还是68
?
大版本,68。事实上按当前日程,60 也行,没必要追得太紧,不然可能影响浏览器用户。
搞个LTS版本就行,现在那个太低
a2c1de69fc84dd1b863b17e90c4e786a4beae6a2 更改为 v60.1
没必要一样,真的,有区别更好。
没必要一样,真的,有区别更好。
这个…… 改为 v60.1 与改为 v68.21 或 v78.11 或 v89.0 是一样的 你想想是不是?
UA 只是一个身份声明,其本身没有强制的格式限制,我们可以随意设置,当前是模拟浏览器。之所以改为不算太旧的 v68,只是考虑到过于老旧的浏览器的请求可能会被服务器拒绝,到目前为止这也仅是个可能性而已。但不能与较新的浏览器版本相同或过于相似,以防 ykdl 激发的 UA 相关问题扩散,影响到无关的浏览器用户。
在提交前,请确保您已经检查了以下内容!
ykdl
下载。ykdl
为最新版。ykdl
,而不是其他项目。请将错误输出粘贴在下面:
如果您有其他附言,例如问题只在某个视频发生,或者是一般性讨论或者提出新功能,请在下面添加: