python discuz_pythonDiscuz發帖器的實現

網絡技術需要大家共同分享,不能閉門造車,下面是bj-dnsCom提示:首先要清楚discuz論壇發帖的流程,簡單地說就是以下流程:進入登錄頁 ->登錄 -> 進入版面 ->發帖

首先要清楚discuz論壇發帖的流程,簡單地說就是以下流程:

進入登錄頁 ->登錄 -> 進入版面 ->發帖

登錄和發帖時要獲取到頁面的formhash值,否則會失敗,如果啟用了驗證碼,還得去分析驗證碼,這就比較復雜了。這里只用python來描述這一系列過程,涉及到驗證碼還請大家自行去實現。

#!/usr/bin/env python#coding=utf-8from urllib import urlencodeimport cookielib, urllib2,urllibimport os,sysimport urllib2,cookielib,urllib,httplib,reimport getpassimport timefrom Queue import Queueimport threadingclass Discuz:def __init__(self,uid,pwd,debug = False,**param):self.username = uidself.password = pwdself.para = param#self.timelimit = timelimitself.regex = {loginreg:,postreg:}self.opener = Noneself.request = Noneself.islogin = Falseself.donecount = 0self.__login()self.threadcount = 10def __login(self):try:loginPage = urllib2.urlopen(self.para[loginurl]).read()formhash = re.search(self.regex[loginreg],loginPage)formhash = formhash.group(1)print start login......cookiejar = cookielib.CookieJar()self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookiejar))values = {formhash:formhash,username:self.username,password:self.password,loginsubmit:true}data = urllib.urlencode(values)self.request = urllib2.Request(self.para[loginsubmiturl], data)rq = self.opener.open(self.request)print login success......self.islogin = Trueexcept Exception ,e:print edef Post(self,subject,wysiwyg,content):threads = []for i in range(self.threadcount):t = threading.Thread(target=self.__postTopic,kwargs={_subject:subject,_wysiwyg:wysiwyg,_body:content})threads.append(t)for i in range(self.threadcount):threads[i].start()for i in range(self.threadcount):threads[i].join()print donedef __postTopic(self,**para):if not self.islogin:print please login......returnwhile True:try:self.request = urllib2.Request(self.para[posturl])rq = self.opener.open(self.request)data = rq.read()formhash = re.search(self.regex[postreg],data)formhash = formhash.group(1)postdata = {addtags:+可用標簽,checkbox:0,formhash:formhash,iconid:,message:para[_body],subject:para[_subject],tags:,updateswfattach : 0,wysiwyg : para[_wysiwyg]}self.request = urllib2.Request(self.para[postsubmiturl],urllib.urlencode(postdata))self.opener.open(self.request)self.donecount+=1print %d done..... % self.donecountexcept Exception,e:print etime.sleep(2)if __name__==__main__:name = raw_input(username:)password = getpass.getpass(password:)dz = Discuz(name,password,loginurl=http://xxx/logging.php?action=login,loginsubmiturl=http://xxx/logging.php?action=login&loginsubmit=yes,posturl=http://xxx/post.php?action=newthread&fid=5,postsubmiturl=http://xxx/post.php?&action=newthread&fid=5&extra=&topicsubmit=yes)content=這是帖子內容dz.Post(這是帖子內容,1,content)

Discuz類中只有一個公開方法

def Post(self,subject,wysiwyg,content)

三個參數,分別是帖子標題、是否是可視化編輯、帖子內容。

類實例化時會進行登錄操作,并同時記錄下cookie以備用,Post方法中會啟用多個線程執行私有方法__postTopic(self,**para)進行真正的發帖操作。

所以,基本上Discuz生成的formhash就是一個雞肋 -_-

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533797.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533797.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533797.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于linux的業設計課題,基于linux下智能手機的設計與制作 畢業設計.doc

本科生畢業論文(設計)題 目: 基于linux下智能手機的設計與制作目錄1. 緒論11.1 嵌入式系統的應用前景11.2linux操作系統21.2.1Linux介紹22.硬件、軟件介紹32.1S3c2440知識32.1.1S3c2440系統結構介紹32.1.2arm實驗儀介紹72.2 GPRS無線模組92.2.1 GPRS概述及工作原理9…

excel文件導入hive亂碼_將excel中的數據導入hive

步驟一:將excel另存為txt文檔(文本文件(制表符分割))假設名字為CompanyCode.txt步驟二,將該txt文件導入Linux指定目錄中步驟三,轉換編碼格式,在指定目錄下執行如下命令:piconv -f gb2312 -t UTF-8 CompanyCode.txt &g…

傳統的6d位姿估計fangfa1_李飛飛團隊最新論文:基于anchor關鍵點的類別級物體6D位姿跟蹤...

點擊上方“3D視覺工坊”,選擇“星標”干貨第一時間送達簡介作者提出了一種基于RGB-D的深度學習方法6PACK,能夠實時的跟蹤已知類別物體。通過學習用少量的3D關鍵點來簡潔地表示一個物體,基于這些關鍵點,通過關鍵點匹配來估計物體在…

c語言的程序結構語序,第3章 C語序結構.doc

第3章 C語序結構第三章 基本語句本章要求:1.表達式語句,空語句,復合語句2.數據的輸入與輸出,輸入,輸出函數的調用C語句概述C程序的執行部分是由語句組成的。 程序的功能也是由執行語句實現的。3.1 賦值語句賦值語句: 是由賦值表達式再加上分號構成的表達…

安卓system鏡像分區_玩機愛好者想要的PT分區到底是什么?可以使現有的安卓系統更快!...

小編第一次看見PT分區這個詞。就比較好奇他到底是什么神仙技術。今天,小編給大家科普一下,可能小編理解的也不是特別準確,請各位諒解!! 歡迎關注小編。各位玩機愛好者總是沉浸在各種ROM包、第三發Rec,以及各…

計算器軟件C語言課程設計實驗報告,c簡單計算器實驗報告_相關文章專題_寫寫幫文庫...

時間:2019-05-15 12:55:15 作者:admin計算器實驗報告班級: 07計本(1)班姓名: 王林學號: 20706031047指導老師: 韓靜一、 需求分析(1)制作一個計算器界面工程,有數字運算符等鍵,輸入表…

python求和1到100_python等差數列求和公式前 100 項的和實例

python等差數列求和公式前 100 項的和實例 最近跑去學了下python,一個很簡單的題,結果發現數學公示忘了,在不用for循環的情況下居然有些懵,記錄為下.. 題:等差數列可以定義為每一項與它的前一項的差等于一個常數,可以用…

android mqtt詳解_Android mqtt入門 Android studio(轉)

Android mqtt入門 Android studio2018年04月09日 14:02:30 hbw020 閱讀數:1564分享 mqtt簡單使用介紹:1、as創建工程2、官網下載mqtt支持包放入lib文件,點擊打開鏈接,https://repo.eclipse.org/content/repositories/paho-release…

jupyter kernel_新鄉聯通案例分享:Jupyter開發環境配置的常用技巧

Jupyter開發環境配置的常用技巧新鄉聯通網管中心 邢少華Python開發環境中,大部分人使用的是Jupyter,在Jupyter中有幾個令人困擾的問題:1. Jupyter的默認打開目錄如何修改2. Jupyter默認使用的瀏覽器如何修改3. 好用的Jupyter插件如何安裝4.…

東北大學c語言及程序設計,東大20秋學期《C語言及程序設計》在線平時作業1參考...

20秋學期《C語言及程序設計》在線平時作業1( j- V: Z* f0 i V& k% b, S. ?/ _8 ~1.[單選題] 在C語言中,引用數組元素時,其數組下標的數據類型允許是()。2 6 g, p1 C$ P; B$ _( J附件是答案,核對題目下載4 m1 F; D: R* q; AA.整型常量- _…

mac安裝ipython_Mac下安裝ipython與jupyter

IPython從Python發展而來,更傾向于科學計算。互聯網數據分析更喜歡用。首先切換root用戶:sudo su -pip3自動安裝ipythonMacBook-Pro:~ root# pip3 install ipython自動安裝完成后建立軟連接,方便使用MacBook-Pro:bin root# ln -s /Library/Fr…

二叉樹 中序遍歷 python_LeetCode 105 樹 從前序與中序遍歷序列構造二叉樹(Medium)

17(105) 從前序與中序遍歷序列構造二叉樹(Medium)描述根據一棵樹的前序遍歷與中序遍歷構造二叉樹。注意: 你可以假設樹中沒有重復的元素。示例例如,給出前序遍歷 preorder [3,9,20,15,7] 中序遍歷 inorder [9,3,15,20,7]返回如下的二叉樹:3/ 9 20/ 1…

c語言刪除雙向鏈表重復元素,求一個雙向鏈表的建立,插入刪除的c語言程序完整版的,借鑒一下思想,再多說一下就是能運行的那種...

最佳答案//鏈表的操作編輯//線性表的雙向鏈表存儲結構typedef struct DuLNode{ElemType data;struct DuLNode *prior,*next;}DuLNode,*DuLinkList;////帶頭結點的雙向循環鏈表的基本操作void InitList(DuLinkList L){ /* 產生空的雙向循環鏈表L */L(DuLinkList)malloc(sizeof(D…

華為p10和p10plus區別_華為p10和p10plus哪個好 華為p10與p10plus區別對比【圖文】

華為p10與p10plus是華為在2017年的首發旗艦手機,作為顏值與配置都很亮眼的華為p10與p10plus自然成了大眾的焦點,當然也就避不可免的用來對比。究竟華為p10和p10plus哪個好?下面小編就來給大家講講華為p10與p10plus的區別對比。華為P10與P10 Plus區別對比…

python數學圓周率_Python編程超簡單方法算圓周率

我們都知道,圓周率是3.1415926也就是π,但你有沒有想過,圓周率是怎么算出來的呢? 這個是德國數學家萊布尼茲發明的算圓周率的方法,公式為:π4(1-1/31/51/71/9-1/11……),其中,分母每…

計算payload長度c語言,C語言0長度數組(可變數組/柔性數組)詳解

1 零長度數組概念眾所周知, GNU/GCC 在標準的 C/C 基礎上做了有實用性的擴展, 零長度數組(Arrays of Length Zero) 就是其中一個知名的擴展.多數情況下, 其應用在變長數組中, 其定義如下struct Packet{ int state; int len; char cData[0]; //這里的0長結構體就為變長結構體提供…

iphone主屏幕動態壁紙_iPhone8怎么設置動態壁紙?iPhone8動態壁紙設置教程

iPhone8怎么設置動態壁紙?朋友們平時想把一些拍攝的動態圖片設置iPhone8壁紙,該怎么設置呢?估計有 不少朋友還不知道如何設置, 在這里我就來為大家介紹一下iPhone8設置動態壁紙的教程,一起來看一看吧!iPhone8動態壁紙設置教程首先打開iPhon…

python封裝介紹_談python3的封裝

這章給大家介紹,如何封裝一個簡單的python庫首先創建一個以下型式的文件結構rootFile/setup.pyexample_package/__init__.pyexample_module.pyexample_package2/__init__.pyexample_module.py其中的兩個__init__.py可以是一個空文件,但是它是導入package…

go語言調用c 的頭文件 so,golang 學習(10): 使用go語言調用c語言的so動態庫-Go語言中文社區...

一、前言最近在學習go,因為需要調用c語言打包成的so動態庫里面的方法,避免自己再去造輪子,所以想直接使用golang調用so,但是參考了其他博客大佬寫的,我每一步原封不動的寫下來,結果都是一堆錯誤&#xff0c…

log nginx 客戶端請求大小_Nginx日志分析和參數詳解

本文檔主要介紹Nginx設置日志參數的作用,以及Nginx日志常用分析命令基本大綱:1.Nginx日志記錄格式的介紹2.Nginx日志參數詳解3.Web服務流量名詞介紹4.Nginx日志常用分析命令示范一:Nginx日志記錄格式的介紹log_format用來設置日志的記錄格式&…