帝国cms 脚本批量发文章
http post直接发文章
脚本分两部分:web服务器和线下控制端
线上部分抄别人的:
在/e/admin中新建jiekou.php
<?php /********密码验证***********/ $password='aaabbb'; //这个密码是登陆验证用的.您需要在模块里设置和这里一样的密码....注意一定需要修改. if($password!=$_GET['pw']) exit('验证密码错误'); //安全检测,密码不符则退出 /****以下代码非专业人员不建议修改***************/ define('EmpireCMSAdmin','1'); require("../class/connect.php"); require("../class/db_sql.php"); require("../class/functions.php"); require LoadLang("pub/fun.php"); require("../class/delpath.php"); require("../class/copypath.php"); require("../class/t_functions.php"); require("../data/dbcache/class.php"); require("../data/dbcache/MemberLevel.php"); //获取分类列表 foreach($class_r as $kv) { if($kv['modid']=='2')//这个是分类所在的系统模型id,记得修改 { $cates[]=array('cname'=>$kv['classname'],'cid'=>$kv['classid'],'pid'=>$kv['bclassid']); } } if(empty($_POST)) { //这里刷新列表 echo "<select name='list'>"; echo maketree($cates,0,''); echo '</select>'; exit(); } $link=db_connect(); $empire=new mysqlquery(); //验证用户 $loginin=$_POST['username']; $lur=$empire->fetch1("select * from {$dbtbpre}enewsuser where `username`='$loginin'"); if(!$lur) exit('不存在的用户名'.$loginin); $logininid=$lur['userid']; $loginrnd=$lur['rnd']; $loginlevel=$lur['groupid']; $loginadminstyleid=$lur['adminstyleid']; $incftp=0; if($public_r['phpmode']) { include("../class/ftp.php"); $incftp=1; } require("../class/hinfofun.php"); $navtheid=(int)$_POST['filepass']; AddNews($_POST,$logininid,$loginin); db_close(); $empire=null; /***生成目录的一个遍历算法***/ function maketree($ar,$id,$pre) { $ids=''; foreach($ar as $k=>$v){ $pid=$v['pid']; $cname=$v['cname']; $cid=$v['cid']; if($pid==$id) { $ids.="<option value='$cid'>{$pre}{$cname}</option>"; foreach($ar as $kk=>$vv) { $pp=$vv['pid']; if($pp==$cid) { $ids.=maketree($ar,$cid,$pre." "); break; } } } } return $ids; } ?> |
线下部分我用的python:
实现功能就是post文章信息到上面的接口文件地址.
文章信息是一个字典,一共有40多项,大部分是str,少部分数值类型例如栏目id,文章id,你发int或者str都可以.
只要post几项重要的信息就能成功发布,其他信息系统会自动生成默认值.
发布结果会有返回,可以通过截取response.text中的关键字来判断结果
import json import random import time import openpyxl import requests from bs4 import BeautifulSoup from config import * data_form = { "enews": "AddNews", # 动作1 "classid": '', # 栏目id,字典value "username": '', # 发帖人,真实存在的管理员账号 "title": '', # 标题 "keyboard": '', # 关键字 "checked": 1, # 审核 "filesize": '', # 大小 "softsay": '', # 简介 "newstext": '', # 正文 "downname[0]": '', # 下载1 "downpath[0]": '', # 下载1地址 "titlepic": '', "addnews": "提 交", # 动作2 } print(f'发布中--{s_name}') try: # jk_url 在 congfig 中 格式: jk_url = "https://www.sandoge.com/e/admin/jiekou.php?pw=aaabbb" response = requests.post(jk_url, data=data_form) time.sleep(random.randint(0, 1)) except Exception as e: print("出现错误: \n", e) print("出现错误,3秒后重试一次") time.sleep(3) try: response = requests.post(jk_url, data=data_form) time.sleep(random.randint(0, 1)) except Exception as e: print("出现错误: \n", e) print("终止") try: if response.text.find('增加信息成功') != -1: print(f'发布成功--{s_name}') except Exception as e: print("出现错误: \n", e) while True: print(response.text) time.sleep(10) |
Recent
Popular
- [工作] 无法建立计算机与VPN服务器之间的
- [Windows] Windows Server 2016
- [运维开发] 桃乐豆 - 中文WOW插件加速源
- [艺术] 至高强者十三阶
- [Windows] Windows Server 2019
- [WindowsPE] Sergei Strelec WinPE
- [学习] NovelAI模型大全分享
- [Windows] Windows 7
- [Windows] Windows 10
- [游戏] Realm Grinder - 放置游戏个人攻略
- [Windows] Windows Server 2008
- [工作] 此平台不支持虚拟化的Intel VT-x/E
- [Windows] Windows Server 2012
- [Windows] Windows 8.1