同一段视频 9 种压法:设得越「清楚」,文件反而越大
同一段 63 秒视频 9 种压法实测:设得越清楚,文件越大画质没变好。

服务器上装 Selenium 要配 driver、要装 headless 浏览器,100 多 MB 起步。而机器上本来就有一个开着远程调试的 Chrome:
chrome --remote-debugging-port=9223 --no-sandbox
直接连上去就行。省事,而且它是真的浏览器,带完整 JS 引擎和 cookie。
import json, urllib.request, websocket
# 新建标签页
req = urllib.request.Request("http://127.0.0.1:9223/json/new?about:blank", method="PUT")
tab = json.load(urllib.request.urlopen(req, timeout=10))
ws = websocket.create_connection(tab["webSocketDebuggerUrl"], timeout=60)
_i = 0
def send(method, **params):
global _i
_i += 1
ws.send(json.dumps({"id": _i, "method": method, "params": params}))
while True:
r = json.loads(ws.recv())
if r.get("id") == _i:
return r
send("Page.enable")
send("Page.navigate", url="https://例子.com")
1. 读页面数据
def ev(expr):
r = send("Runtime.evaluate", expression=expr, returnByValue=True)
return r.get("result", {}).get("result", {}).get("value")
print(ev("document.title"))
print(ev("JSON.stringify([...document.querySelectorAll('a')].map(a=>a.href).slice(0,20))"))
2. 模拟手机截图
send("Emulation.setDeviceMetricsOverride", width=390, height=844,
deviceScaleFactor=2, mobile=True)
send("Page.navigate", url=url)
time.sleep(7) # 等首屏渲染,别急着截
shot = send("Page.captureScreenshot", format="png", captureBeyondViewport=True)
open("shot.png", "wb").write(base64.b64decode(shot["result"]["data"]))
captureBeyondViewport=True 才能截到整页,不然只有一屏。
3. 关缓存重载
send("Network.enable")
send("Network.setCacheDisabled", cacheDisabled=True)
改完样式后验证,一定要关缓存,否则你看到的是旧 CSS,会得出错误结论。
真实案例:要扒一个博客联盟的成员名单。成员列表页面上,名字都是普通文字,但链接不是 <a> 标签 ——
是 JS 绑的点击事件,document.querySelectorAll('a') 只能拿到 2 个外链。浏览器里怎么点都拿不全。
换个思路:成员项其实链到站内详情页(href="/blog/600.html"),真实网址在详情页的
「查看TA的网站」上。于是关掉浏览器,纯 HTTP 请求 + 正则,31 个站几秒钟抓完:
m = re.search(r'href="(https?://[^"]+)"[^>]*>\s*(?:<[^>]+>\s*)*查看\s*TA\s*的网站', html)
结论:浏览器是用来「看清结构」的,看清了就该换成 HTTP 直连批量干。一个页面要开 7 秒,
31 个就是 3 分半;HTTP 版几秒钟。别在浏览器里做批量。
pkill -f "关键词" 会杀掉自己:-f 匹配整条命令行,而你的命令行里就含这个关键词。ss -ltnp | grep ':5006' | grep -oP 'pid=\K[0-9]+'ImageStat 算变化度,低于 20 的基本是错误页(Cloudflare 验证页、window.scrollTo(0,300) 再滚回来)同一段 63 秒视频 9 种压法实测:设得越清楚,文件越大画质没变好。
同一张壁纸 674.9 KB 能压到 122.9 KB,站上 15 张配图省到四分之一
三个老推送接口都死了,我用 IndexNow 把新文章推给搜索引擎