python的http请求应用--每日签到

时间:2023-03-09 19:25:43
python的http请求应用--每日签到

  写点python吧,python其实是个很好用的工具,作为浇水语言,跟其他语言联系也很紧密,想用什么包直接import,导入ctypes调用底层函数库,导入web相关的包可以轻松写爬虫,今天我们写的跟web相关,程序员无所不能,我们创造个小人,这个小人每天定点给我们签到,(这个写出来后还得借助crontab稍后给大家献上C语言版的daemon签到,写C语言就没urllib包了,都是socket,或者说一切皆文件!)

俩文件bbs_login.py,bbs_sign.py,前者获取cookie,保存成本地文件后者借助cookie文件签到(就一post请求 )

 #! /usr/bin/env python
# -*- coding:utf-8 -*- import cookielib
import urllib2
import urllib
import os url = 'http://xxx.xxx.com/asd' #一定是你登入提交的那个url ckjar = cookielib.MozillaCookieJar('cookie.txt')
#ckjar = cookielib.CookieJar()
data = {'password':'我是密码','username':'我是用户名'} postData = urllib.urlencode(data) req = urllib2.Request(url,postData)
#换成你的ua-我们这后台验证登入成功后会把ua,username作为因子DES加密后种到cookie里
req.add_header('User-Agent','Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36') opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(ckjar))
urllib2.install_opener(opener) f =opener.open(req) htm = f.read()
print htm f.close() ckjar.save(ignore_discard=True, ignore_expires=True)

  运行成功后会在当前目录的得到你的cookie.txt文件,然后我就拿这个cookie.txt文件认证了,其实这节可以当作一次XSS随笔:),这个cookie文件是Netscape/Mozilla cookie文件格式,ok,现在来看bbs_sign.py

 #!/usr/bin/env python
#-*- coding=utf-8 -*-
#使用已有的cookie访问网站 import cookielib
import urllib2
import os ckjar = cookielib.MozillaCookieJar()
ckjar.load('/home/liet/code/python/study/web/cookie.txt') url = 'http://xxx.xxx.com/plugin.php?identifier=dps_sign&module=sign&operation=qiandao&infloat=1&inajax=1'
data = 'qdxq=kx&qdmode=1&todaysay=love+is+beautiful.so+beautiful&fastreply=1'
req = urllib2.Request(url, data) req.add_header('User-Agent','Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.66 Safari/537.36')
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(ckjar)) f = opener.open(req)
htm = f.read()
print htm
f.close()

ok,单独运行会看到签到成功的返回。。。。剩下我们把bbs_sign.py加入到crontab里,每天9点吧。。签到信息可以到sign.log里查

#每天签个到 by liet
* * * /usr/bin/python /root/liet/python/bbs_sign.py >> /root/liet/python/sign.log >&