发表于: 2021-12-30 23:13:24
0 869
今天完成的事:通过使用 python 图片从七牛云转移到金山云,并修改数据库中的 imgurl
import uuid
from ks3.connection import Connection
import pymysql
import requests
# 下载图片
def download_img(imgurl):
r=requests.get(imgurl)
print(r.status_code)
if r.status_code==200:
file_name=str(uuid.uuid1())
target_file='/opt/image/'+file_name+'.jpg'
print(target_file)
open(target_file,'wb').write(r.content)
# 抓取网络资源上传到金山云
def upload_img(file_name,url):
c = Connection('AKLTolNOQShFQW6n9bRD_07usQ', 'OD5N2IV4s+efIcIBpIspuly+JW79U86DaQB4P/u0iYHhADL7kp86D7ap5C+yBf1i3A==', host='ks3-cn-guangzhou.ksyuncs.com')
# 获取存储空间实例。
b = c.get_bucket('task7dataimg')
# 从第三方URL拉取文件,并上传至KS3某个 bucket 中存储成名为 object 的文件。
b.fetch_object(file_name, source_url=url)
#更新 img
def update_img(id,imgurl):
db=pymysql.connect(host='127.0.0.1',
user='root',
password='deng796443',
database='tiles')
cursor = db.cursor()
sql="update tiles_user set img='%s' where tiles_user_id='%s'" % (imgurl,id)
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
# 打开数据连接
db=pymysql.connect(host='127.0.0.1',
user='root',
password='deng796443',
database='tiles')
cursor = db.cursor()
# sql 查询语句
sql='select tiles_user_id,img from tiles_user'
# 更新数据库
try:
# 执行 sql 语句
cursor.execute(sql)
# 获取全部列表
user_list=cursor.fetchall()
for user in user_list:
id=user[0]
img=user[1]
print('userId=%s,imgurl=%s'% (id,img))
# 生成图片名
file_name=str(uuid.uuid1())+'.jpg'
target_img='https://ks3-cn-guangzhou.ksyuncs.com/task7dataimg/'+file_name
print(target_img)
# 图片上传到金山云
upload_img(file_name,img)
# 更新tiles 数据库 imgurl
update_img(id,target_img)
except:
print('Error:unable to fetch data')
db.close()
任务 7 深度思考:怎么实现图片防盗链,缩略图,水印等功能?
通常防盗链是为了防止图片,视频被盗用。
简单介绍几种防盗链的机制:
1. 利用HTTP Referer字段
HTTP请求中会包含来自哪个url的点击来源,通过这个referer字段可以检测是否别的网站发送的请求。
2.利用登录验证信息
有些需要登录的可以通过登录的信息来检车。
3.使用cookie中的动态验证信息
由服务器端产生动态cookie,每次请求检车cookie的动态信息跟服务器端保存的动态信息进行比对监测。
4.使用POST请求
post请求能够增加盗链的难度。
5. 使用图形验证码
图片验证码很常用的一种技术。
6. 使用动态密钥
为资源url动态加密生成新的url,密钥可以临时生成,根据url的id文件名等信息进行自己的加密算法加密,访问的时候再用同样的加密算法进行验证
7. 在内容中插入数据
可以在内容中加入哈希校验,在url中加入动态hash值
明天的计划:在项目中添加防盗链技术
评论