python登陆论坛网站并发帖代码
时间:2009-03-11 来源:niustar
因为没有注意到格式,在http的头部没有添加content-type字段,所以导致服务器不能成功解析报文,加上之后就能顺利发帖了。data部分给出的是原始的数据,也可以用python代码实现,大家参考一下multipartposthandler的实现就明白了。
#!/usr/bin/python
import cookielib, urllib2, urllib, sys, time
cj = cookielib.CookieJar()
cookie = "" opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) exheaders = [("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; MAXTHON 2.0)"),]
opener.addheaders=exheaders url_login = 'http://10.16.62.100/phpwind/login.php' body = (('forward',''), ('jumpurl','http://10.16.62.100/phpwind/'),\
('step','2'),('lgt','0'),('pwuser','haha'),('pwpwd','hahaha'),('cktime','31536000'),\
('hideid','0'))
req1 = opener.open(url_login, urllib.urlencode(body))
t=req1.read() for c in cj:
cookie+=c.name+"="+c.value+";" #cookie = "iscookies=0; f18cc_ol_offset=97; f18cc_threadlog=%2C2%2C; f18cc_readlog=%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C;" + cookie print cookie print(t.decode('gb2312')) #sys.exit() data = '-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="magicname"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="magicid"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="verify"' + '\n' + '\n' + \
'b7eb85be' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_title"' + '\n'+ '\n' + \
'ertyry' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_iconid"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_content"' + '\n' + '\n' + \
'yjuiyikuliu' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_autourl"' + '\n' + '\n' + \
'1' + '\n' + \
'-----------------------------7d91d42da0af0'+ '\n' + \
'Content-Disposition: form-data; name="atc_usesign"' + '\n' + '\n' + \
'1' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_convert"' + '\n' + '\n' + \
'1' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_rvrc"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_enhidetype"' + '\n' + '\n' + \
'rvrc' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_money"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_credittype"' + '\n' + '\n' + \
'money' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_desc1"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="attachment_1"; filename=""' + '\n' + \
'Content-Type: application/octet-stream' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="att_special1"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="att_ctype1"' + '\n' + '\n' + \
'money' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_needrvrc1"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="step"' + '\n' + '\n' + \
'2' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="pid"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="action"' + '\n' + '\n' + \
'new' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="fid"' + '\n' + '\n' + \
'2' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="tid"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="article"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="special"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0--'+ '\n'
import httplib http = httplib.HTTP('10.16.62.100') # write header
http.putrequest("POST", '/phpwind/post.php?')
http.putheader("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; MAXTHON 2.0)")
http.putheader("Referer", 'http://10.16.62.100/phpwind/post.php?fid=2')
http.putheader("Host", '10.16.62.100')
http.putheader("Cookie", cookie)
http.putheader("Content-Type", 'multipart/form-data; boundary=---------------------------7d91d42da0af0')
http.putheader("Content-Length", str(len(data)))
http.endheaders() # write body
http.send(data) # get response
errcode, errmsg, headers = http.getreply() if errcode != 200:
raise Error(errcode, errmsg, headers) file = http.getfile()
print file.read()
cookie = "" opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) exheaders = [("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; MAXTHON 2.0)"),]
opener.addheaders=exheaders url_login = 'http://10.16.62.100/phpwind/login.php' body = (('forward',''), ('jumpurl','http://10.16.62.100/phpwind/'),\
('step','2'),('lgt','0'),('pwuser','haha'),('pwpwd','hahaha'),('cktime','31536000'),\
('hideid','0'))
req1 = opener.open(url_login, urllib.urlencode(body))
t=req1.read() for c in cj:
cookie+=c.name+"="+c.value+";" #cookie = "iscookies=0; f18cc_ol_offset=97; f18cc_threadlog=%2C2%2C; f18cc_readlog=%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C;" + cookie print cookie print(t.decode('gb2312')) #sys.exit() data = '-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="magicname"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="magicid"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="verify"' + '\n' + '\n' + \
'b7eb85be' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_title"' + '\n'+ '\n' + \
'ertyry' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_iconid"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_content"' + '\n' + '\n' + \
'yjuiyikuliu' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_autourl"' + '\n' + '\n' + \
'1' + '\n' + \
'-----------------------------7d91d42da0af0'+ '\n' + \
'Content-Disposition: form-data; name="atc_usesign"' + '\n' + '\n' + \
'1' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_convert"' + '\n' + '\n' + \
'1' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_rvrc"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_enhidetype"' + '\n' + '\n' + \
'rvrc' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_money"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_credittype"' + '\n' + '\n' + \
'money' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_desc1"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="attachment_1"; filename=""' + '\n' + \
'Content-Type: application/octet-stream' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="att_special1"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="att_ctype1"' + '\n' + '\n' + \
'money' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="atc_needrvrc1"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="step"' + '\n' + '\n' + \
'2' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="pid"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="action"' + '\n' + '\n' + \
'new' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="fid"' + '\n' + '\n' + \
'2' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="tid"' + '\n' + '\n'+ '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="article"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0' + '\n' + \
'Content-Disposition: form-data; name="special"' + '\n' + '\n' + \
'0' + '\n' + \
'-----------------------------7d91d42da0af0--'+ '\n'
import httplib http = httplib.HTTP('10.16.62.100') # write header
http.putrequest("POST", '/phpwind/post.php?')
http.putheader("User-Agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; InfoPath.2; MAXTHON 2.0)")
http.putheader("Referer", 'http://10.16.62.100/phpwind/post.php?fid=2')
http.putheader("Host", '10.16.62.100')
http.putheader("Cookie", cookie)
http.putheader("Content-Type", 'multipart/form-data; boundary=---------------------------7d91d42da0af0')
http.putheader("Content-Length", str(len(data)))
http.endheaders() # write body
http.send(data) # get response
errcode, errmsg, headers = http.getreply() if errcode != 200:
raise Error(errcode, errmsg, headers) file = http.getfile()
print file.read()
相关阅读 更多 +