前言
之前写的【两万字原创长文】完全零基础入门Fastjson系列漏洞(基础篇),我一开始是写在语雀上面的,然后同步github
之后才发现,图片居然都无法访问,我再仔细一了解,然后发现原来是语雀在2019
年之后就整了个防盗链机制,所以这篇文章我会给出我的解决办法。
解决思路
出问题的地方:
关于这个机制的绕过方面,网络上有且仅有三个思路:
前两个是该博主提到的:
https://yanisyoung.com/2020/10/10/yuque/关于Hexo无法访问语雀图片的解决方案/
第三种则是改造hexo-yuque
这个插件,使其可以绕过cdn
:
https://1874.cool/osar7h
但是我不是很能看懂他这个怎么操作的,于是干脆提出第四种又快又快的解决办法:转移图片到我已有的阿里云oss
上面。
代码实现
实现代码相当简单,直接贴出来:
import requests
import os
import oss2
# Markdown文件路径
markdown_file = '1.md'
# 图片保存目录
image_dir = 'images'
# 阿里云配置
access_key_id = '1234'
access_key_secret = '1234'
bucket = 'w01fh4cker-img-bed'
area = 'oss-cn-hangzhou'
# 创建图片保存目录
if not os.path.exists(image_dir):
os.makedirs(image_dir)
# 读取Markdown文件内容
with open(markdown_file, 'r', encoding='utf-8') as file:
markdown_content = file.read()
# 提取图片链接
image_links = []
start_index = 0
while True:
start_index = markdown_content.find('!(', start_index)
if start_index == -1:
break
start_index += 7
end_index = markdown_content.find(')', start_index)
image_link = markdown_content[start_index:end_index]
image_links.append(image_link)
# 初始化阿里云OSS客户端
auth = oss2.Auth(access_key_id, access_key_secret)
endpoint = f'http://{area}.aliyuncs.com'
bucket_obj = oss2.Bucket(auth, endpoint, bucket)
# 下载图片并上传到阿里云
for image_link in image_links:
image_name = image_link.split('/')[-1]
local_path = os.path.join(image_dir, image_name)
print(local_path)
# 下载图片
response = requests.get(image_link)
with open(local_path, 'wb') as file:
file.write(response.content)
# 上传到阿里云
with open(local_path, 'rb') as file:
bucket_obj.put_object(image_name, file)
# 获取上传后的图片链接
image_url = f'https://{bucket}.{area}.aliyuncs.com/{image_name}'
# 替换Markdown中的图片链接
markdown_content = markdown_content.replace(image_link, image_url)
# 保存修改后的Markdown文件
new_markdown_file = '1_updated.md'
with open(new_markdown_file, 'w', encoding='utf-8') as file:
file.write(markdown_content)
print("图片下载和上传完成,并且Markdown文件已更新。")
你只需要替换你的access_key_id
、access_key_secret
、你的bucket
的名字以及你的area
即可。我默认你需要修改的markdown
文件的名字为1.md
、修改后的markdown
文件名为1_updated.md
,你可以自行修改。
如果你和我一样,之前使用的是picgo
,那么你可以直接到配置文件中找到以上参数;如果你忘记了你的access_key_id
、access_key_secret
,那么你也可以去阿里云oss
控制台去增加一个。
效果展示
只能说,又好又好!
原文始发于微信公众号(追梦信安):语雀403防盗链解决方法:Python批量转移图片至阿里云oss图床
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论