
1.BirdNest http://code.google.com/p/birdnest/
推特收购了Tweetie并发布免费版,支持API。被逼自己动手搭,结果却出乎意料地简单。网上教程很多,比如最近在风口浪尖上的月光的教程,遵循这个步骤下去,deploy的过程很顺利,但是却用不了,经由 @ggarlic老湿指点,在项目Google Code的 Issue14里发现了如下修改方法。
自建Google APE出错的解决方案
1、
下载Google APE源码的地址是:
http://birdnest.googlecode.com/svn/branches/gae
而不是:
http://birdnest.googlecode.com/svn/trunk/(不要用这个)2、
如若你的code.py文件中,第82-91行为下列内容,请把这些内容删除:import socket import re ua = web.ctx.environ.get("HTTP_USER_AGENT", 'None') if ua.find('jibjib') >= 0: socket.setdefaulttimeout(60) elif ua.find('zh-CN') >= 0: #raise Exception('unknown error') socket.setdefaulttimeout(2) else: socket.setdefaulttimeout(2)再试,可以了。
2.GAppProxy http://code.google.com/p/gappproxy/
目前使用其Windows客户端,并添加为系统服务,FF下配合AutoProxy使用,基本感觉不到墙的存在了。
问题1:twitter能打开但无法登陆。 – 用此版本替换,问题解决。
问题2:YouTube等视频网站能打开,但连接错误。 – 待搞
问题3:经常弹出提示证书无法识别。 – 待搞
3.虾米自动签到
参照VeryCD自动灌水脚本,改写了个虾米自动签到脚本。
app.yaml:
application: xiami #此处修改为自己的app名称 version: 1 runtime: python api_version: 1 handlers: - url: /sign script: sign.py
cron.yaml
cron: - description: daily sign job url: /sign schedule: every 6 hours timezone: Asia/Chongqing
sign.py
#!/usr/bin/env python
#coding:utf-8
#author:sourbell
#http://sourbell.im
import urllib2,urllib,httplib,cookielib
email = 'i@sourbell.im' #改成自己的用户名
passwd = 'password' #改成自己的密码
def login():
'''这个就是登录脚本'''
print 'try to login...'
#登录需要准备cookie
cookie=cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie), urllib2.HTTPHandler)
urllib2.install_opener(opener)
#现在填表
postdata=urllib.urlencode({'email':email,
'password':passwd,
'submit':'登录',
})
req = urllib2.Request(
url = 'http://www.xiami.com/member/login',
data = postdata
)
#填header,伪装成正常浏览访问,这是一种写法,也可以用我之前那篇文章的写法,更有条理一点
req.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6')
req.add_header('Accept','text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8')
req.add_header('Accept-Encoding','gzip,deflate')
#交登录表,然后就登录成功了
print '...login form submitted'
result = urllib2.urlopen(req).read()
print '...login succeed!'
def sign():
url = 'http://www.xiami.com/task/sign'
request = urllib2.Request(url)
response = urllib2.urlopen(request)
print '...sign succeed!'
if __name__ == '__main__':
login()
sign()
1:没有技术含量的改写,有错误也难免。此签到功能只要打开某网址就可以了,以后应该会改掉吧。因为涉及到密码,所以还是单帐号比较好。
2:SDUpload无法上传cron计划任务配置文件,必须用GAE的 [appcfg.py update 目录名]。
3:原本安装了Python3.1,后来发现不仅print这些函数变了,很多lib比如urllib、urllib2都转到test下去了,嫌麻烦又换回了2.6。
4:原本以为模拟点击按钮需要使用PAM30,结果用了才知道那是实际打开一个IE来模拟点击了。并且使用PAM必须先安装此扩展。
呃,今天砌墙工人封了GAE的https,只留下了http
虾米自动签到是个好东西,我也试试去
还真被咔嚓了,NND
你可以把schedule: every 6 hours 改成schedule: every 1 minutes来测试,如果成功后台Cron Jobs里会有succeed