import hashlib
import hmac
from base64 import b64decode,b64encode
import random
import requests
import http.cookiejar as cookielib
from urllib.parse import urlparse
from get_all_article import get_all
import re
def createUuid():
text = ""
char_list = []
for c in range(97,97+6):
char_list.append(chr(c))
for c in range(49,58):
char_list.append(chr(c))
for i in "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx":
if i == "4":
text += "4"
elif i == "-":
text += "-"
else:
text += random.choice(char_list)
return text
def get_sign(uuid,url):
s = urlparse(url)
ekey = "9znpamsyl2c7cdrr9sas0le9vbc3r6ba".encode()
to_enc = f"GET\n*/*\n\n\n\nx-ca-key:203803574\nx-ca-nonce:{uuid}\n{s.path+'?'+s.query[:-1]}".encode()
sign = b64encode(hmac.new(ekey, to_enc, digestmod=hashlib.sha256).digest()).decode()
return sign
def getArticleDetail(url):
uuid = createUuid()
sign = get_sign(uuid,url)
headers = {}
headers['x-ca-key'] = "203803574"
headers['x-ca-nonce'] = uuid
headers['x-ca-signature'] = sign
headers['x-ca-signature-headers'] = "x-ca-key,x-ca-nonce"
session = requests.session()
session.cookies = cookielib.LWPCookieJar(filename='.cookie/csdn.txt')
session.cookies.load()
data = session.get(url,headers=headers).json()
return data
if __name__ == '__main__':
url = "https://wshuo.blog.csdn.net/" # 更改为你自己的csdn博客主页地址
article_list = get_all(url)
for i in article_list[0]:
id_ = re.findall("details/(\d*)",i['url'])[0]
url = "https://bizapi.csdn.net/blog-console-api/v3/editor/getArticle?id=%s&model_type=" % id_
text = getArticleDetail(url)
markdown = text['data']['markdowncontent']
title = text['data']['title']
try:
if markdown:
for i in ["?","、","\\","/","*",'"',":","<",">","|"]:
title = title.replace(i,"-")
print("文章\\%s.md" % title)
with open("文章\\%s.md" % title,'w',encoding='utf8') as f:
f.write(markdown)
except Exception as e:
print("error",title)