如何把乌云镜像导入到wordpress

网上公布的基本以2套为主,一套是乌云知识库+4W多篇文章,另一套是没有知识库,但有8W多。

链接:https://pan.baidu.com/s/19r6cpLXKyEGGcnzHRjAMlA 密码:oyz5

对应的github地址:https://github.com/hanc00l/wooyun_public

虚拟机账号密码都是:hancool/qwe123

首先,我在有知识库的那个虚拟机里面把1200多篇文章和图片全部传输到自己本地电脑上,然后去阿里云OSS下载了个官方应用上传了所有图片(不修改文件名)

然后处理下文章中的一些小毛小病,比如替换链接到我自己的OSS上

1
wyun_content = wyun_content.replace('<img src="static/','<img src="https://gxmpic.oss-cn-shanghai.aliyuncs.com/wooyun/')

总的处理python代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2018-04-12 16:32:33
# @Author : gxm (molizxc@gmail.com)
# @Link : https://bugging.com.cn
# @Version : 1.0

import os
import re
import chardet
import HTMLParser
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
html_parser = HTMLParser.HTMLParser()
titlename = 1

def savewfile(filename,content):

file = open(filename,'w')
file.write(content)
file.close()

def resolveWfile(filename):
print filename
file = open(filename,'r')
content = file.read()
content = content.decode('utf-8')
content = html_parser.unescape(content)
file.close()
#保存标题
wyun_title=''
#保存内容
wyun_content=''
#保存评论
wyun_comment = []
res_title = r'<h1 class="entry-title ng-binding">(.*?)</h1>'
m_title = re.findall(res_title,content,re.S|re.M)

for value in m_title:
wyun_title = value;

res_content = r'<section class=".*?" ng-bind-html=".*?">(.*?)</section>'
m_content = re.findall(res_content,content,re.S|re.M)

for value in m_content:
wyun_content = value

#替换颜色
wyun_content = wyun_content.replace('<code>','<span style="color: #ff0000;">')
wyun_content = wyun_content.replace('</code>','</span>')
#替换图片链接
wyun_content = wyun_content.replace('<img src="static/','<img src="https://gxmpic.oss-cn-shanghai.aliyuncs.com/wooyun/')

#增加评论
wyun_content = wyun_content + '<h1>Comment</h1>' + '\n'

res_comment = r'<p><p>(.*?)</p>'
m_comment = re.findall(res_comment,content,re.S|re.M)

for value in m_comment:
wyun_content = wyun_content + '<p>评论:'+value + '</p>\n'

#在文档中保存下title
wyun_content = wyun_content + '[bugging]' + wyun_title + '[/bugging]' + '\n'

#写入内容
savewfile("F:\\tdrops\"+str(titlename)+".txt",wyun_content)

global titlename
titlename += 1

# 遍历指定目录,显示目录下的所有文件名
def eachFile(filepath):
pathDir = os.listdir(filepath)
for allDir in pathDir:
child = os.path.join('%s%s' % (filepath, allDir))
print "正在处理文件:"+child.decode('gbk') # .decode('gbk')是解决中文显示乱码问题
resolveWfile(child)

if __name__ == '__main__':
eachFile('F:\\drops\')

说白了。就是循环目录里的文件。把自己想改的东西全部改掉。把评论全部处理掉。重新追加在后面,让文章排版稍微好看点。

利用wordpress自带的rest api 上传文章

接下来就是把这些弄好修改好的文章全部上传到自己WORDPRESS里面,先上代码后解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2018-04-12 16:32:33
# @Author : gxm (molizxc@gmail.com)
# @Link : https://bugging.com.cn
# @Version : 1.0

import urllib
import urllib2
import re
import base64
import os
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

#上传wp
def uploadwp(title,content):
wp_url = 'https://bugging.com.cn/wp-json/wp/v2/posts'
headers = {"Authorization":"Basic "+base64.b64encode("wordpress账号"+":"+"wordpress密码")}
formate = {
"title":title,
"content":content,
"categories":"72",
"status":"publish"
}
data = urllib.urlencode(formate)
request = urllib2.Request(wp_url, data, headers)
try:
response = urllib2.urlopen(request)
except urllib2.URLError, e:
error_status=e.code
print error_status
else:
print 'Success'
print("-"*30)

#解析文件

def resolvefile(filename):
file = open(filename,'r')
content = file.read()
content = content.decode('utf-8')
file.close()
#content = content.encode("GBK", 'ignore');
res_title = r'\[bugging\](.*?)\[/bugging\]'
m_title = re.findall(res_title,content,re.S|re.M)
wooyun_title = ''
for value in m_title:
wooyun_title = value

#处理掉标题
content = content.replace('[bugging]'+wooyun_title+'[/bugging]','')
uploadwp(wooyun_title,content)

# 遍历指定目录,显示目录下的所有文件名
def eachFile(filepath):
pathDir = os.listdir(filepath)
for allDir in pathDir:
child = os.path.join('%s%s' % (filepath, allDir))
print "正在上传文章:"+child.decode('gbk') # .decode('gbk')是解决中文显示乱码问题
resolvefile(child)

if __name__ == '__main__':
eachFile('F:\\tdrops\')

 

代码很简单,循环刚刚处理好的文章,给https://bugging.com.cn/wp-json/wp/v2/posts这个地址发个POST数据包就可以了,目前的wp版本是自带rest的

在header里加上基础认证,至少发文章总归需要账号密码吧,这个是最简单的认证方式了。

“Authorization”:”Basic “+base64.b64encode(“wordpress账号”+”:”+”wordpress密码”)

最后的最后,你发现这样子还是传不上去,这个是为什么呢?因为WORDPRESS说还需要安装下基础认证插件!我去。地址如下:

https://github.com/WP-API/Basic-Auth

别忘记启用插件后,才可以post发文章。

对了。表单里categories是发到哪个目录下的ID。

简单阐述下,做个记录

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*