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必须先安装此扩展。
#2012年4月10日更新 虾米后来改了一次签到接口,貌似只支持POST请求,抱歉太懒了没仔细研究,总之 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/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 627; .NET CLR 2.0.50727; CIBA; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.0.3705; AskTB5.6')
req.add_header('Accept','*/*')
req.add_header('Accept-Encoding','gzip,deflate')
req.add_header('Referer', 'http://www.xiami.com/')
req.add_header('x-requested-with', 'XMLHttpRequest')
req.add_header('Accept-Language', 'zh-cn')
req.add_header('Cache-Control', 'no-cache')
req.add_header('Content-Length', '0')
#交登录表,然后就登录成功了
print '...login form submitted'
result = urllib2.urlopen(req).read()
print '...login succeed!'
def sign():
postdata=urllib.urlencode({'':'',
})
req = urllib2.Request(
url = 'http://www.xiami.com/task/signin',
data = postdata,
)
#填header,伪装成正常浏览访问,这是一种写法,也可以用我之前那篇文章的写法,更有条理一点
req.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; QQDownload 627; .NET CLR 2.0.50727; CIBA; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.0.3705; AskTB5.6')
req.add_header('Accept','*/*')
req.add_header('Accept-Encoding','gzip,deflate')
req.add_header('Referer', 'http://www.xiami.com/')
req.add_header('x-requested-with', 'XMLHttpRequest')
req.add_header('Accept-Language', 'zh-cn')
req.add_header('Cache-Control', 'no-cache')
req.add_header('Content-Length', '0')
response = urllib2.urlopen(req)
print '...succeed!'
print '...Signed Days:',response.read()
if __name__ == '__main__':
login()
sign()
呃,今天砌墙工人封了GAE的https,只留下了http
虾米自动签到是个好东西,我也试试去
还真被咔嚓了,NND
你可以把schedule: every 6 hours 改成schedule: every 1 minutes来测试,如果成功后台Cron Jobs里会有succeed
博主你好,请问你开发的这个虾米自动签到程序现在仍然能正常运行吗?如果能,我也打算试试看,谢谢
@: 可以用的
虾米自动签到上传到GAE上一直显示错误
class ‘google.appengine.api.urlfetch_errors.DeadlineExceededError’ : ApplicationError: 5
Traceback (most recent call last):
……
后面跟着一大串,以及
class ‘urllib2.HTTPError’ : HTTP Error 404: Not Found
Traceback (most recent call last):
……
我只把你给的app.yaml中的appid以及sign.py中的邮箱密码改成自己的,其他的都没动。能看出是什么问题吗?谢谢。
@lik: 我忘记了后来有些改动了,你再试试新贴的这段呢?
@: 非常感谢,现在已经没有出现错误了。
你好,请问是不是如果成功的话,打开xxx.appspot.com/sign.py也可以就会显示相关信息?
还是打开xxx.appspot.com/sign?
@:
xxx.appspot.com/sign 可以看到代码里的log信息,比如…login succeed!之类的。前提是墙外访问无阻。
@Bell:
无阻,因为同时打开vpn了
我直接打开xxx.appspot.com/sign的话,提示error 500
Error: Server Error
The server encountered an error and could not complete your request.
If the problem persists, please report your problem and mention this error message and the query that caused it.
但是确定上传成功
@: no idea。。。你发布一个新应用试试呢?
@:
我遇到的错误信息和上面那个有点类似,gae log里面提示
: ApplicationError: 5
Traceback (most recent call last):
我重新上传试试看
@: 依然不行
: ApplicationError: 5
Traceback (most recent call last):
以及
This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application.
不知道你那里上传后再打开会否出现此问题
@:
我后来修改了一下代码,你已经是最新的了吗?
是的,我今天才上传的,代码也是用的你这个页面上最新的
@:
我全部重新开始再弄了一次,这次成功了,但是发现一个问题,
…login form submitted …login succeed! …succeed! …Signed Days: xxxxxx
xxxxx表示乱码,能够修正一下吗?还是就是这样的?
@:
http://www.xiami.com/task/checkindex
似乎是不返回内容的,应该是签到成功了。
博主,要是还能开发一个115网盘的自动签到和新浪微盘的自动签到就爽了
为什么查看GAE 的log里面,发现有较多
: ApplicationError: 5
Traceback (most recent call last):
博主你那里也一样?
博主你好,你这个签到程序这两天无效,都是要手动签到的,你能不能看看是不是虾米又做了改动,同时我打开App Engine控制台里面的log,错误信息也是ApplicationError: 5
Traceback (most recent call last)类似这样的
Damn,周末两天没上网,媳妇儿掉到#6了,我掉到#31
今天又能签到了,再看看如果再有问题俺再搭环境调试,最近工作太忙了……
不用更改代码是吗?博主在虾米签到榜上这么威武?