欢迎大家关注我的微信公众号“IT工匠”获取更多资源(涉及算法、数据结构、java、深度学习、计算机网络、python、Android等互联网技术资料)。
前言
笔者之前的写作习惯一直是在本地(Mac+Typora+Ipac)写好之后将markdown代码粘贴到csdn,图片是Ipac自动上传到微博匿名图床上,用了大概一年多都没有问题,直到前段时间突然发现我csdn文章里面的图片无法加载了,就像下面这样:
本来以为是微博图床挂了,结果发现图片的链接还是可以正常访问的,本地Typora上也是可以正常显示图片的,问了一下csdn的工作人员,说是微博图床加了防盗链,所以现在csdn不能自动加载了,真是又气又无奈,没办法,谁让自己当初贪图小便宜用了免费图床了,既然问题已经出了就要想办法解决,首先是订阅了Ipac,这样可以支持自定义图床(默认的Ipac只能支持微博匿名图床),笔者选择的是阿里云Oss,有免费额度,个人图床够用。但是这样只能保证我之后写的文章不会因为图床的导致图片挂掉,那之前的怎么办….如果可以将之前文章里面的图片从图床上下载下来,然后传到我新的图床上,然后再将原文的图片链接由原来的图床链接替换为现在新的图片链接就可以完美解决了啊,但是由于文章太多,一篇一篇手动操作实在是太慢,既然是程序员,就应该用代码解决,所以有了本文,本文的主要思路如下图所示:
模拟登陆csdn
我们首先打开csdn的登陆页面,这里我们选择账号密码登陆,方便提取信息:
image-20190518200820418
我们随便个账号和密码,看看点击登陆之后该站点会做什么:
我们发现,这里执行了一个doLogin,见名知意,这个应该就是真正的登陆的请求,我们点开看看详情:
重点在于我用红圈圈出来的那里,将我们输入的用户名和密码传进去,然后发起登陆请求,所以,我们只需要模拟这个doLogin就可以了,代码如下:
def doLogin(userId, password): """ 模拟登陆,获取cookie以及username :param userId: :param password: :return: """ url = "https://passport.csdn.net/v1/register/pc/login/doLogin" payload = "{"loginType":"1