文章12
标签6
分类2

微博图床进入noreferer防盗链时代

微博图床长期以来都是中国大陆访问线路质量高、图片质量高的存在。

2022年12月29日左右,微博图床图片出现了大规模403的情况。事实上,微博图床早已有防盗链手段,但极易通过html noreferer标签进行规避。

所谓防-盗链,是指通过请求Header中的Referer地址判断访问来源,仅让白名单域名访问资源的一种手段,可以降低流量成本。通常的,网站不会对noreferer防盗链开启防盗链,所以新浪和盗链用户暂且相安无事,而本次对noreferer开启防盗链,才致使出现大规模403。

很不幸,本站的图片API和部分内容都使用了微博图床,因此,一场紧急“救图”行动开始了。

临时措施

如果很不幸没有备份存在图床里的图片,我们可以选择修改referer的方式临时下载。

curl --referer可以伪装来路,从而解决403错误无法下载图片的问题,但这样未免太不方便;

Chrome浏览器安装 Header Editor ( https://chrome.google.com/webstore/detail/eningockdidmgiojffjmkdblpjocbhgh),参考下图添加修改请求头的规则,匹配规则与使用域名相符即可。

待下载图片后重新上传至其他处,替换网页上的链接即可。

掩耳盗铃

经测试,tva1.sinaimg.cn等微博图床域名已开启noreferer防盗链无疑,但tvax1.sinaimg.cn等域名似乎仍可以通过noreferer访问,如果不想将图片迁移,可以将图床域名进行替换(内容不会改变)

有二次压缩——
加前缀:https://i0.wp.com/tvax4.sinaimg.cn/large/ (第三方反向代理,风险自负)
加前缀:
https://image.baidu.com/search/down?url=http://tvax4.sinaimg.cn/large/
(百度搜索,风险自负)

个人非常不推荐这样做

如果你想稳定地提供图片,还是使用其他公共图床/对象储存吧。

一点感慨

从良心云年末促销力度明显削减,到微博图床防盗链,大家的裤腰带似乎勒得越来越紧了。

希望疫情早日过去,经济早日恢复。

Intel DevCloud海量CPU核数内存试用与rootless玩法

Intel DevCloud

官方说法:在一个由最新的英特尔®硬件和软件组成的集群上免费学习、制作原型、测试和运行您的工作负载。

网上的教程大多是对devcloud的线上IDE进行试用,比如wzfou认为英特尔Intel DevCloud是一个限制10小时80H256G的WebIDE。

在经过研究后发现oneAPI具有更多的玩法

警告⚠:Intel DevCloud是一个学习平台,请严格遵守ToS,使用proot和挖矿行为(甚至内网穿透)会导致账号被封禁!

传统玩法

注册账号:https://www.intel.com/content/www/us/en/forms/idz/simple-registration.html?tgt=https%3A%2F%2Fwww.intel.com%2Fcontent%2Fwww%2Fus%2Fen%2Fforms%2Fidz%2Fdevcloud-enrollment%2Fedge-request.html

官网:https://software.intel.com/content/www/us/en/develop/tools/devcloud/edge/overview.html

服务器:https://software.intel.com/content/www/us/en/develop/tools/devcloud/edge/build.html 

注册部分可以参考 英特尔Intel DevCloud免费云服务器和AppOnFly免费试用Windows Server服务器 - 挖站否-挖掘建站的乐趣 (wzfou.com),这里不再赘述。

至此,你获得了一台平平无奇的“小鸡”

重头戏

10小时的单次运行限制和Jupyter环境未免不够极客,我们能否让它更加极客呢?

答案是可以,而且就写在oneAPI的文档里(不知道为什么网上几乎没有相关的介绍,可能rootless和时限减少了滥用)。

首先我们要透过ssh与Intel login-2堡垒机建立连接,在https://devcloud.intel.com/oneapi/documentation/connect-with-ssh-linux-macos/ 页面里,下载包含账号私钥信息的setup-devcloud-access-xxxxxx.txt,然后执行网页上给出的命令,不出意外的话,就可以与login-2的终端进行交互了。

这个堡垒机只有10H16G,完全不符合我们的性能需求,我们要通过qsub来提交任务请求,获得集群中的高性能机器供我们使用。

在login-2终端中输入pbsnodes,我们可以获取到所有的节点状态。这样呈现的数据可能比较乱,我们可以使用pbsnodes | sort | grep properties | uniq,仅展示关键数据properties.

properties呈现了各种关键参数“core/xeon”、“Tiger Lake/Coffee Lake/Comet Lake/Skylake/Ice Lake”、内存大小、GPU等,我们提交任务请求时需要通过它指定机型。

我使用 qsub -I -l nodes=1:ramgb:ppn=2,walltime=24:00:00,cput=100:00:00 -d . 进行演示,其中ramgb可以替换成其他参数,这样我们就得到了100小时CPU时间,24小时单次运行时间的128H256G的节点。除了没有root权限,与其他机器无异。

rootless玩法

Intel DevCloud自带完整的运行库和编译链,而且我们拥有不俗的性能,理论上借助编译安装我们可以运行绝大多数user mode软件。

但是如果不借助包管理软件,这依然是一件头大的事情,而且我们可能要维护不同的工具链和glibc...这里,笔者尝试使用homebrew进行包管理,安装代码如下:

#!/bin/bash
set -ex

export HOMEBREW_PREFIX=~/homebrew
# export HOMEBREW_NO_ANALYTICS=1
mkdir -p "${HOMEBREW_PREFIX}"
curl -fsSLk https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "${HOMEBREW_PREFIX}"

ls -laR "${HOMEBREW_PREFIX}"

export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"
type -a brew

type -a openssl || :
openssl version -a || :

type -a curl || :
curl -V || :

# Fails to lock a .git/config file.
##brew analytics off

# No "brew update" until installing the proper openssl and a curl that uses it.
# brew update

# brew remove openssl || :
brew install openssl
brew link --force openssl

# brew remove curl || :
brew install --with-openssl curl
brew link --force curl || :
curl -V

ls -la "${HOMEBREW_PREFIX}/opt"
ls -la "${HOMEBREW_PREFIX}/bin"
ls -laLR "${HOMEBREW_PREFIX}/opt/curl/"

除此以外,我们还要在.bash_profile中加入

export HOMEBREW_PREFIX=~/homebrew
export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"

以确保下次可以直接使用homebrew,brew install 即可安装(当然是存在很多坑的,自己解决啦)

其他问题

  1. Intel DevCloud 网络带宽配置相当低,网络需求比较大的应用可以不用试了
  2. brew install screen 应该是基本操作,你可以自定义lock的路径到userhome来持久化screen子进程;
  3. 有了homebrew,为什么不试试 Modern Unix 呢?
  4. 请按需使用DevCloud,把资源留给需要的人