dedecms文章发布模块制作

  1. WEB发布模块,即采集器把你手动在网站后台发布内容的整个过程包含登录网站后台,选择栏目,以及发布文章,这些步骤写到采集器里面,模拟发布,这就是WEB发布模块。
  2. 然后规则采集到的值就通过标签名传递给在线发布模块,把数据提交到网站里去。

点击开始菜单—新建

图片

网页随机获取:设置post数据内的随机值

内容发布参数:设置发布页面POST数据包

高级功能:文件上传设置以及数据构造

我们以dedecms的文章发布为例做讲解

(1)第二步骤,“WEB发布设置界面”和 “内容发布参数” 设置

我们在发布页面填写好需要发布的字段值(先不要点击发布),然后打开fiddler(注意,如果有乱七八糟的数据流,请先Ctlr+X 清空数据流)

如图,填写标题,来源,选择栏目,内容 :

图片

Ctlr+X 清空数据流后的fiddler

图片

此时点击发布,分析fiddler里的数据包,将fiddler点击 ①➯ ② ,依次点击数据流列表⑤ 找到POST类型的数据流⑥, 然后点击⑦ 以文本的形式查看

图片

数据包贴出如下:

  1. POST http://127.0.0.1:801/dede/dede/article_add.php HTTP/1.1
  2. Host: 127.0.0.1:801
  3. Connection: keep-alive
  4. Content-Length: 3571
  5. Cache-Control: max-age=0
  6. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  7. Origin: http://127.0.0.1:801
  8. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
  9. Content-Type: multipart/form-data; boundary=----WebKitFormBoundary6EWX666GAXOVqWCE
  10. Referer: http://127.0.0.1:801/dede/dede/article_add.php?channelid=1&cid=0
  11. Accept-Encoding: gzip, deflate
  12. Accept-Language: zh-CN,zh;q=0.8
  13. Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=f21a42f70199c81955f3219623343735; DedeUserID=1; DedeUserID__ckMd5=91a12e3e1eae3a4d; DedeLoginTime=1444806848; DedeLoginTime__ckMd5=65d5fa4845a7ec00; ENV_GOBACK_URL=%2Fdede%2Fdede%2Fcontent_list.php%3Fchannelid%3D1
  14. ------WebKitFormBoundary6EWX666GAXOVqWCE
  15. Content-Disposition: form-data; name="channelid"
  16. 1
  17. ------WebKitFormBoundary6EWX666GAXOVqWCE
  18. Content-Disposition: form-data; name="dopost"
  19. save
  20. ------WebKitFormBoundary6EWX666GAXOVqWCE
  21. Content-Disposition: form-data; name="title"
  22. 11111
  23. ------WebKitFormBoundary6EWX666GAXOVqWCE
  24. Content-Disposition: form-data; name="shorttitle"
  25. ------WebKitFormBoundary6EWX666GAXOVqWCE
  26. Content-Disposition: form-data; name="redirecturl"
  27. ------WebKitFormBoundary6EWX666GAXOVqWCE
  28. Content-Disposition: form-data; name="tags"
  29. ------WebKitFormBoundary6EWX666GAXOVqWCE
  30. Content-Disposition: form-data; name="weight"
  31. 99
  32. ------WebKitFormBoundary6EWX666GAXOVqWCE
  33. Content-Disposition: form-data; name="picname"
  34. ------WebKitFormBoundary6EWX666GAXOVqWCE
  35. Content-Disposition: form-data; name="litpic"; filename=""
  36. Content-Type: application/octet-stream
  37. ------WebKitFormBoundary6EWX666GAXOVqWCE
  38. Content-Disposition: form-data; name="source"
  39. 22222
  40. ------WebKitFormBoundary6EWX666GAXOVqWCE
  41. Content-Disposition: form-data; name="writer"
  42. ------WebKitFormBoundary6EWX666GAXOVqWCE
  43. Content-Disposition: form-data; name="typeid"
  44. 2
  45. ------WebKitFormBoundary6EWX666GAXOVqWCE
  46. Content-Disposition: form-data; name="typeid2"
  47. ------WebKitFormBoundary6EWX666GAXOVqWCE
  48. Content-Disposition: form-data; name="keywords"
  49. ------WebKitFormBoundary6EWX666GAXOVqWCE
  50. Content-Disposition: form-data; name="autokey"
  51. 1
  52. ------WebKitFormBoundary6EWX666GAXOVqWCE
  53. Content-Disposition: form-data; name="description"
  54. ------WebKitFormBoundary6EWX666GAXOVqWCE
  55. Content-Disposition: form-data; name="dede_addonfields"
  56. ------WebKitFormBoundary6EWX666GAXOVqWCE
  57. Content-Disposition: form-data; name="remote"
  58. 1
  59. ------WebKitFormBoundary6EWX666GAXOVqWCE
  60. Content-Disposition: form-data; name="autolitpic"
  61. 1
  62. ------WebKitFormBoundary6EWX666GAXOVqWCE
  63. Content-Disposition: form-data; name="needwatermark"
  64. 1
  65. ------WebKitFormBoundary6EWX666GAXOVqWCE
  66. Content-Disposition: form-data; name="sptype"
  67. hand
  68. ------WebKitFormBoundary6EWX666GAXOVqWCE
  69. Content-Disposition: form-data; name="spsize"
  70. 5
  71. ------WebKitFormBoundary6EWX666GAXOVqWCE
  72. Content-Disposition: form-data; name="body"
  73. 222222222222222
  74. ------WebKitFormBoundary6EWX666GAXOVqWCE
  75. Content-Disposition: form-data; name="voteid"
  76. ------WebKitFormBoundary6EWX666GAXOVqWCE
  77. Content-Disposition: form-data; name="notpost"
  78. 0
  79. ------WebKitFormBoundary6EWX666GAXOVqWCE
  80. Content-Disposition: form-data; name="click"
  81. 137
  82. ------WebKitFormBoundary6EWX666GAXOVqWCE
  83. Content-Disposition: form-data; name="sortup"
  84. 0
  85. ------WebKitFormBoundary6EWX666GAXOVqWCE
  86. Content-Disposition: form-data; name="color"
  87. ------WebKitFormBoundary6EWX666GAXOVqWCE
  88. Content-Disposition: form-data; name="arcrank"
  89. 0
  90. ------WebKitFormBoundary6EWX666GAXOVqWCE
  91. Content-Disposition: form-data; name="money"
  92. 0
  93. ------WebKitFormBoundary6EWX666GAXOVqWCE
  94. Content-Disposition: form-data; name="pubdate"
  95. 2015-10-14 15:16:06
  96. ------WebKitFormBoundary6EWX666GAXOVqWCE
  97. Content-Disposition: form-data; name="ishtml"
  98. 1
  99. ------WebKitFormBoundary6EWX666GAXOVqWCE
  100. Content-Disposition: form-data; name="filename"
  101. ------WebKitFormBoundary6EWX666GAXOVqWCE
  102. Content-Disposition: form-data; name="templet"
  103. ------WebKitFormBoundary6EWX666GAXOVqWCE
  104. Content-Disposition: form-data; name="imageField.x"
  105. 37
  106. ------WebKitFormBoundary6EWX666GAXOVqWCE
  107. Content-Disposition: form-data; name="imageField.y"
  108. 18
  109. ------WebKitFormBoundary6EWX666GAXOVqWCE--

先来设置WEB发布配置界面

网站地址是: http://127.0.0.1:801/dede (网站地址可以根据POST 和Referer字段自定义,一般我们用网站域名做网站地址,也可以找其他的2个设置的共同部分做网站地址。 )

cookie是: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=f21a42f70199c81955f3219623343735; DedeUserID=1; DedeUserID__ckMd5=91a12e3e1eae3a4d; DedeLoginTime=1444806848; DedeLoginTime__ckMd5=65d5fa4845a7ec00; ENV_GOBACK_URL=%2Fdede%2Fdede%2Fcontent_list.php%3Fchannelid%3D1

Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36

图片

接下来 我们在设置 “内容发布参数”

网站地址+来源页面后缀:需要正好组合成一个完整的地址,所以不要2者的设置是相辅相成

图片

然后我们把发布POST数据 里的值 替换成标签。

双击选中表单值,然后鼠标悬停在 标签按钮上,对应选择要替换成的标签名即可,可选系统标签,常用标签,时间标签。

如下图我替换的效果

图片

标题,来源,内容,时间 很方便确认识别。

在这里给大家讲解下“[分类ID]” 系统标签。

此标签是用于接下来我们的获取栏目列表设置做铺垫的。

那么如何确定 哪个表单名 就是 [分类ID]呢?

图片

第二步骤,确定“获取栏目列表” 设置

首先要确定我们的选择栏目列表是在哪个页面?

B.特殊的情况,在其它页面下,不在发布内容页面。

放入到“获取栏目列表” 下的 发表地址后缀,和来源页面后缀中。

图片

栏目名称用 [分类名称]替换

不规则出现的代码 用 (*)通配符匹配

设置如图:

图片

现在我们保存发布模块,大概测试下发布效果

图片

可以发布,说明我们的 “内容发布参数” 设置没问题。

图片

第三步骤,完善模块

成功,失败标识码:

图片

高级功能:

可以看到我们此模块有个 LITPIC 表单名 字段,这是我们在“内容发布参数” 的黏贴POST数据时,自动提取的设置。在这里,我们可以自定义修改标签名,如设置为缩略图。

文件上传设置里的标签,文件上传不需要设置FTP,只要下载到本地就可以实现自动上传操作。

图片

网站自动登录:

之前我们做的发布是在登录方式为内置浏览器的原理基础上获取cookie和User-agent 来做发布的。 我们也可以用数据包登录的方式来设置。 他的设置原理和“内容发布参数” 一样的,用fiddler工具抓取登录后台那一瞬间的POST数据包。

  1. POST http://127.0.0.1:801/dede/dede/login.php HTTP/1.1
  2. Host: 127.0.0.1:801
  3. Connection: keep-alive
  4. Content-Length: 112
  5. Cache-Control: max-age=0
  6. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
  7. Origin: http://127.0.0.1:801
  8. User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36
  9. Content-Type: application/x-www-form-urlencoded
  10. Referer: http://127.0.0.1:801/dede/dede/login.php?gotopage=%2Fdede%2Fdede%2Findex.php
  11. Accept-Encoding: gzip, deflate
  12. Accept-Language: zh-CN,zh;q=0.8
  13. Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=f21a42f70199c81955f3219623343735; ENV_GOBACK_URL=%2Fdede%2Fdede%2Fcontent_list.php%3Fchannelid%3D1
  14. gotopage=%2Fdede%2Fdede%2Findex.php&dopost=login&adminstyle=newdedecms&userid=admin&pwd=admin&validate=lcmt&sm1=

设置如下:

图片

测试效果:

图片

OK ,这样模块用 内置浏览器登录 或 数据包登录 都是支持的了。

dede测试模块下载