当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » Python  » 编程基础
小利子

python模拟发送动弹

小利子 发布于 2013年06月05日 22时, 10评/1321阅
分享到: 
收藏 +0
3
没什么实际用处,我只是做一下练习
ps:
@justin_cn写了一个插件,可以用在vim中,直接发送动弹。
不过我的跟他的有点不一样,我的是用的浏览器的cookie.
标签: <无>

代码片段(1) [全屏查看所有代码]

1. [代码][Python]代码     跳至 [1] [全屏预览]

#!/usr/bin/env python2.7
#coding=utf-8
#说明
#linux下chromium浏览器会把cookie存放到$HOME/.config/Default/Cookies数据库文件中
#这份代码会用到这个Cookies文件
#所以需要linux下安装了chrominum,并且还需要浏览器中已经登录到oschina.net
#所以这样看来,这份代码更没什么实际用处鸟
import sqlite3
import requests
import webbrowser
import sys
import json
#为了能写入utf-8编码的文件
reload(sys)
sys.setdefaultencoding('utf-8')
#linux下chromium把Cookies存在了$HOME/.config/chromium/Default/Cookies文件中,不信到chrominum上查
def getcookie():
	#连接数据库
	cx=sqlite3.connect("/home/guang/.config/chromium/Default/Cookies")
	#建立游标
	cu=cx.cursor()
	#找出oschina.net的cookie.注意是.oschina.net
	r=cu.execute("select * from cookies where host_key='.oschina.net'")
	str=r.fetchall()
	return str
#str是一个只包含一个元组的列表,
str=getcookie()
print str
#http头部会显示
#Cookie:oscid=str[0][3]的内容
#cookies=dict(str[0][2]=str[0][3])
cookies={str[0][2]:str[0][3]}
#oschina.net和www.oschina.net的ip是不一样的
url="http://my.oschina.net/action/tweet/pub"
#定制http头部
#headers={'Connection':'keep-alive',"User-Agent":"Mozilla/5.0 (X11; Linux i686) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36","Origin":"http://www.oschina.net",'Referer':'http://www.oschina.net','Accept-Encoding':'gzip,deflate,sdch','Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4','X-Requested-With':'XMLHttpRequest','Accept':'application/json,text/javascript,*/*;q=0.01'}
#和上面的那个头部对比,说明Referer参数不是必须的
headers={'Connection':'keep-alive',"User-Agent":"Mozilla/5.0 (X11; Linux i686) AppleWebkit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36","Origin":"http://www.oschina.net",'Accept-Encoding':'gzip,deflate,sdch','Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4','X-Requested-With':'XMLHttpRequest','Accept':'application/json,text/javascript,*/*;q=0.01'}
#gbk的编码,动弹上会出现乱码
string=u"这条由python发送"
string=string.encode("utf-8")
#这个是填写表单的内容,user和user_code的值都可以查看首页源代码,然后搜索表单内容,可以看到值,自己需要手动修改
#因为user_code的值手动填写的时候,多写了一个a,结果返回的信息一直说msg:非法请求参数。因为这个小错,纠结了很久
#(通过浏览器和这个代码发送相同的内容,content-length会不一样)
#于是就仔细的对比wireshark抓到的包里值,才发现
payload={'user':'209614','user_code':'i00xyiIFFh8K1JoVqkliTH2GNJ4iBK8ultfrnUhR','msg':string}
print payload
s=requests.session()
r=s.post(url,headers=headers,cookies=cookies,data=payload)
print r.text
#将响应写到文件
#with open("results.html","w") as f:
#	f.write(r.text)
#浏览器打开文件
#webbrowser.open('results.html')


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(10)

  • 1楼:toil 发表于 2013-06-05 23:43 回复此评论
    会被和谐不?
  • 2楼:WeirdBIrd 发表于 2013-06-06 00:15 回复此评论
    requests 这个模块?? 
  • 3楼:小利子 发表于 2013-06-06 10:24 回复此评论

    引用来自“钟晓骏”的评论

    requests 这个模块?? 
    恩。很好用
  • 4楼:WeirdBIrd 发表于 2013-06-06 10:26 回复此评论

    引用来自“小利子”的评论

    引用来自“钟晓骏”的评论

    requests 这个模块?? 
    恩。很好用
    我记得 python 2.7 没自带吧
  • 5楼:小利子 发表于 2013-06-06 10:26 回复此评论

    引用来自“无脸程序员”的评论

    会被和谐不?
    这个。。。不用来刷屏还好吧。
  • 6楼:小利子 发表于 2013-06-06 10:27 回复此评论

    引用来自“钟晓骏”的评论

    引用来自“小利子”的评论

    引用来自“钟晓骏”的评论

    requests 这个模块?? 
    恩。很好用
    我记得 python 2.7 没自带吧
    恩。是自己安装的。
  • 7楼:算法与编程之美 发表于 2013-06-14 21:21 回复此评论

    引用来自“钟晓骏”的评论

    引用来自“小利子”的评论

    引用来自“钟晓骏”的评论

    requests 这个模块?? 
    恩。很好用
    我记得 python 2.7 没自带吧
    可以使用easy_install requests这种方式来安装,比较方便
  • 8楼:Si2 发表于 2013-06-28 18:24 回复此评论
     window下chrome浏览器,python 2.6, 出现
    ?r=cu.execute("select * from cookies where host_key='.a o s china.net'")
    sq l i t e 3 . O p erationalError: database is locked”
    ?怎么办呀
  • 9楼:小利子 发表于 2014-04-27 01:08 回复此评论

    引用来自“Si2”的评论

     window下chrome浏览器,python 2.6, 出现
    ?r=cu.execute("select * from cookies where host_key='.a o s china.net'")
    sq l i t e 3 . O p erationalError: database is locked”
    ?怎么办呀
    抱歉,数据库的东西我懂的很少.没遇见过这个错误
  • 10楼:哪谁谁 发表于 2016-05-26 11:41 回复此评论
    思路赞,读取浏览器cookies
开源从代码分享开始 分享代码
小利子的其它代码 全部(8)...