「GoCN酷Go推荐」[爱奇艺、B站、腾讯等视频下载] 摸鱼之道高一尺魔高一丈Lux
我们做程序员的,如果不努力学习就会被社会的洪流卷得体无完肤。但是公司偏偏不给这个机会,优酷、爱奇艺、bilibili等你知道或不知道的视频网站均被公司防火墙拦截了,所谓道高一尺,魔高一丈,今儿我就要破了这个门儿,和老板斗,其乐无穷。
前提工作(以下所有内容均以windows为例,linux或者macos下载对应的软件即可)首先写ssh隧道连接1、第一个是无代码版,但是每次启动都要手动输入账号密码。打开cmd命令行,输入下面命令:(基础知识ssh-tunnel)$ssh-D127.0.0.1:本机要代理的端口你服务器的账号@你服务器的地址#比如输入以下指令:ssh -D 127.0.0.1:1080 root@118.195.141.206#之后就会让你输入密码,密码输入成功就会登录到你的服务器,不要关闭这个cmd窗口,要保持ssh隧道一直存在2、第二个是代码版,生成好执行文件,每次只需要双击启动即可:
packagemainimport("context""fmt""log""net""os""os/signal""syscall""github.com/armon/go-socks5""golang.org/x/crypto/ssh")var(username="xxxxxxxxxxxxx"//你服务器登录密码password="xxxxxxxxxxxxx"//你服务器登录账号serverAddrString="xxxxxxxxxxxxx"//你的服务器连接地址如:118.195.141.206serverPortString=":22"//默认ssh端口号,不要改localAddrString="127.0.0.1:1080"//本地需要代理的端口,若要运行本案例,不要改)funcmain(){sshConf:=&ssh.ClientConfig{User:username,Auth:[]ssh.AuthMethod{ssh.Password(password)},HostKeyCallback:func(hostnamestring,remotenet.Addr,keyssh.PublicKey)error{returnnil},}sshConn,err:=ssh.Dial("tcp",serverAddrString+serverPortString,sshConf)iferr!=nil{fmt.Println("errortunneltoserver:",err)return}defersshConn.Close()log.Println("链接ssh成功")gofunc(){conf:=&socks5.Config{Dial:func(ctxcontext.Context,network,addrstring)(net.Conn,error){returnsshConn.Dial(network,addr)},}serverSocks,err:=socks5.New(conf)iferr!=nil{fmt.Println(err)return}iferr:=serverSocks.ListenAndServe("tcp",localAddrString);err!=nil{fmt.Println("本地创建socks5服务失败",err)}}()//用于手动退出ch:=make(chanos.Signal)signal.Notify(ch,syscall.SIGINT,syscall.SIGTERM)<-chreturn}
启动成功后会出现:
2022/02/2210:36:25链接ssh成功
至此,您已经成功通过本地利用ssh通道连接到了你的服务器,并在本地开启了127.0.0.1:1080端口,通过socks5就能实现本地流量从127.0.0.1:1080端口到通道请求到外网。
给浏览器添加socks5代理:以chrome内核为例,微软的edge同样适用,火狐也可以做为程序员,温故而知新是我们学习的重要指标之一,那么把B站的学习资料下载下来,当忘记的时候可以再看一次,这是程序员的必修课。
接下里,Lux终于要登场了。
方才我们已经下载了Lux,并将他放到了咱们的公共环境变量Path中(配置环境变量是程序员的基础),由于Lux下载下来的是流媒体片段,我们还需要ffmpeg来对片段进行合成,所以也需要把ffmpeg放到公共环境变量中。
此时如果网络没有问题,打开B站的某个视频,就可以通过命令行进行下载了:
lux-Chttps://www.bilibili.com/video/BV1D341177ER?spm_id_from=333.999.0.0
下载下来后是流媒体分片,但是因为我们有ffmpeg(记得设置为环境变量),自动会合成Mp4文件。
但是。。。公司不是不让访问视频网站吗,此时我们再请到linux下的选手proxychains为我们代劳。
Windows下也可以使用proxychains了,下载proxychains,我选择的是proxychains_0.6.8_win32_x64.zip,也将其加入到公共环境变量中。
#我是把proxychains_0.6.8_win32_x64中的文件proxychains_win32_x64.exe改名为了proxychains.exe,方便命令行打入#这时,一定要把配置以下,否则会找不到配置文件:#1、在文件管理器中输入%USERPROFILE%会跳转到当前登录用户所在的目录下(如我的是:C:\Users\anyanfei)#2、在当前目录下新建文件夹,名字为:.proxychains (不要忘了前面的英文小数点)#3、把proxychains_0.6.8_win32_x64文件里的proxychains.conf文件复制到刚才创建的文件夹下#4、更改代理配置,找到proxychains.conf最后一行,有个[ProxyList],在下面写入socks5localhost1080,最后保存
现在,什么都挡不住我们了,我们可以尽情的下载我们想要的视频和资料:
#现在我们输入:proxychains lux -C https://www.bilibili.com/video/BV1D341177ER?spm_id_from=333.999.0.0#以下是产生的内容:[PID16432][I]2022/03/0411:21:38Mswsock.dll(FP)ConnectEx(416127.0.0.1:3771216)DIRECT[PID16432][I]2022/03/0411:21:38Mswsock.dll(FP)ConnectEx(524127.0.0.1:3771216)DIRECT[PID16432][I]2022/03/0411:21:38Mswsock.dll(FP)ConnectEx(564127.0.0.1:3771216)DIRECT[PID16432][I]2022/03/0411:21:38<>localhost:1080[PID16432][I]2022/03/0411:21:38Mswsock.dll(FP)ConnectEx(652224.182.190.198:44316)->www.bilibili.com:443PROXY[PID16432][I]2022/03/0411:21:39<>localhost:1080[PID16432][I]2022/03/0411:21:39Mswsock.dll(FP)ConnectEx(768224.31.238.12:44316)->api.bilibili.com:443PROXY[PID16432][I]2022/03/0411:21:40<>localhost:1080[PID16432][I]2022/03/0411:21:40Mswsock.dll(FP)ConnectEx(788224.49.235.86:930516)->1xclc7sd.v1d.szbdyd.com:9305PROXY[PID16432][I]2022/03/0411:21:40<>localhost:1080[PID16432][I]2022/03/0411:21:43Mswsock.dll(FP)ConnectEx(808224.237.207.59:119316)->cl78gzny.v1d.szbdyd.com:1193PROXY[PID16432][I]2022/03/0411:21:43<>localhost:1080[PID16432][I]2022/03/0411:21:43Mswsock.dll(FP)ConnectEx(820224.230.146.165:44316)->cn-zjjh4-dx-v-11.bilivideo.com:443PROXY[PID16432][I]2022/03/0411:21:44<>localhost:1080[PID16432][I]2022/03/0411:21:44Mswsock.dll(FP)ConnectEx(796224.244.177.173:930516)->ozc26csk.v1d.szbdyd.com:9305PROXY[PID16432][I]2022/03/0411:21:44<>localhost:1080[PID16432][I]2022/03/0411:21:44Mswsock.dll(FP)ConnectEx(652224.59.105.205:448316)->xy125x70x163x57xy.mcdn.bilivideo.cn:4483PROXY[PID16432][I]2022/03/0411:21:44<>localhost:1080[PID16432][I]2022/03/0411:21:44Mswsock.dll(FP)ConnectEx(796224.177.44.141:930516)->1znkz71o.v1d.szbdyd.com:9305PROXY[PID16432][I]2022/03/0411:21:44<>localhost:1080[PID16432][I]2022/03/0411:21:44Mswsock.dll(FP)ConnectEx(824224.90.8.7:448316)->xy182x148x15x157xy.mcdn.bilivideo.cn:4483PROXY[PID16432][I]2022/03/0411:21:44<>localhost:1080[PID16432][I]2022/03/0411:21:44Mswsock.dll(FP)ConnectEx(792224.14.168.192:448316)->xy171x222x122x86xy.mcdn.bilivideo.cn:4483PROXY[PID16432][I]2022/03/0411:21:45<>localhost:1080[PID16432][I]2022/03/0411:21:45Mswsock.dll(FP)ConnectEx(652224.82.156.85:930516)->1znkz6wh.v1d.szbdyd.com:9305PROXY[PID16432][I]2022/03/0411:21:45<>localhost:1080[PID16432][I]2022/03/0411:21:45Mswsock.dll(FP)ConnectEx(812224.31.238.12:8016)->api.bilibili.com:80PROXYSite:哔哩哔哩bilibili.comTitle:北京冬奥会,谢谢带给我们惊喜的中国冬奥健儿,都是最棒的!Type:videoStream:[80-7]-------------------Quality:高清1080Pavc1.640032Size:14.58MiB(15288560Bytes)#downloadwith:lux-f80-7...Downloadingcaptions...Downloadingdanmaku...[PID16432][I]2022/03/0411:21:46<>localhost:1080[PID16432][I]2022/03/0411:21:46Mswsock.dll(FP)ConnectEx(652224.248.186.45:44316)->comment.bilibili.com:443PROXY[PID16432][I]2022/03/0411:21:46<>localhost:1080[PID16432][I]2022/03/0411:21:46<>localhost:1080[PID16432][I]2022/03/0411:21:46Mswsock.dll(FP)ConnectEx(824224.49.235.86:930516)->1xclc7sd.v1d.szbdyd.com:9305PROXY[PID16432][I]2022/03/0411:21:46Mswsock.dll(FP)ConnectEx(820224.237.207.59:119316)->cl78gzny.v1d.szbdyd.com:1193PROXY1.12MiB/14.58MiB[=====>-----------------------------------------------------------------]935.44KiBp/s7.70%14s
我建议大家不用去看这玩意儿为啥能够下载B站视频,因为源码中实际上是去请求了B站中的一个API,获取到了m3u8的内容,请求此API需要密钥和签名,至于这个密钥和签名方式Lux的作者为什么会知道,我还真在issues上中找到答案,实际上是通过安卓端反编译找到的。所以这个坑我为大家踩了,不用看源码看是如何找到的了,这个工具拿来用即可。
最后有不清楚的地方,欢迎大家来在咱们GOCN下进行留言互动。参考资料https://github.com/shunf4/proxychains-windowshttps://github.com/iawia002/luxhttps://ffmpeg.org/https://github.com/armon/go-socks5https://golang.org/x/crypto/ssh准备一台公网的服务器,此服务器可以访问外网(我是找运维申请的,理由是说做测试机),开放22端口,也就是sshd服务下载Lux,Lux的前身就是annie,现在annie改名了。在release中下载对应系统的执行文件下载ffmpeg在 release builds下载执行文件编写能够通过ssh隧道的代理。下载SwitchyOmega,并给浏览器安装此插件配置SwitchyOmega,在代理服务器下,选择代理协议:SOCKS5,代理服务器就填写本地127.0.0.1,代理端口就是1080。然后点击应用选项。并在插件栏应用此代理配置。《酷Go推荐》招募:各位Gopher同学,最近我们社区打算推出一个类似GoCN每日新闻的新栏目《酷Go推荐》,主要是每周推荐一个库或者好的项目,然后写一点这个库使用方法或者优点之类的,这样可以真正的帮助到大家能够学习到
新的库,并且知道怎么用。
大概规则和每日新闻类似,如果报名人多的话每个人一个月轮到一次,欢迎大家报名!戳「阅读原文」,即可报名
扫码也可以加入 GoCN 的大家族哟~
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...