casperjs 写签到脚本真是简单直观!!! http://i-ai.org/v2ex-autosign/
|  |      1ColinWei      2016-05-17 20:16:25 +08:00 简单的同时 健壮性为 0 | 
|      2atnoot      2016-05-17 20:23:38 +08:00 我也撸了个签到脚本 | 
|      3atnoot      2016-05-17 20:24:34 +08:00 python 版的 | 
|      5Gua      2016-05-17 20:38:54 +08:00 30 秒了,链接都没打开~ | 
|  |      6wex      2016-05-17 20:47:11 +08:00 @atnoot  你好,问下,为什么我可以登录成功,但是签到的时候提示:<div class="message" onclick="$(this).slideUp('fast');">请重新点击一次以领取每日登录奖励</div> 我是这样弄的: url = re.search(r'/mission/daily/redeem\?once=\d+', login.text).group() url = 'http://v2ex.com' + url login = session.get(url, headers=header).text | 
|  |      8EchoWhale      2016-05-17 23:28:52 +08:00  1 ruby 写了一个,遇到意外签到不成功会发邮件提醒   https://github.com/WunderEye/v2ex_auto_sign | 
|  |      9300      2016-05-17 23:42:14 +08:00 via Android 我都是用 Chrome 的扩展。。。 | 
|  |      10kevinroot      2016-05-17 23:54:56 +08:00 你确定可以登录成功? casper.start('http://v2ex.com/signin', function() { this.fillSelectors('form[action="/signin"]', { 'input[type="text"]': username, 'input[type="password"]': password }, false); }) 我这里显示 v 大登录时候已经加了防 xss , input name 已经变成 64 位的十六进制了 | 
|  |      11nivan OP @kevinroot 这里用到了 casperjs 1.1 的 api fillSelectors 根据 input 的 type 进行 填充 | 
|  |      12zhangyi2099      2016-05-18 06:37:49 +08:00 via iPhone 这是模拟浏览器登录吗?我记得我写的时候还要提取网页中 once 码 | 
|  |      13nivan OP @zhangyi2099 对,casperjs 是基于 phantomjs 或者 SlimerJS,前者使用 WebKit,后者使用 Gecko | 
|  |      15liyvhg      2016-05-18 08:30:48 +08:00 via Android @winterbells 求扩展名 | 
|      16atnoot      2016-05-18 08:41:20 +08:00 @wex  github.com/davisqi/me.git 中 V2EX 可以参考一下 | 
|  |      22wq2016      2016-05-18 14:29:16 +08:00 我是用 CasperJS 写的 | 
|      23inmyfree      2016-05-18 14:55:13 +08:00 前天快 200 天刚断了。。。 | 
|      25bearqq      2016-05-18 16:11:44 +08:00 @gogobody python , 2.7 依赖 mechanize 。 """ def make_br(): br = mechanize.Browser(history=NoHistory()) #cj = cookielib.LWPCookieJar() #br.set_cookiejar(cj) br.set_handle_equiv(True) br.set_handle_gzip(True) br.set_handle_redirect(True) br.set_handle_referer(True) br.set_handle_robots(False) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) br.set_debug_http(False) br.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.0')] #br.set_proxies({"http":"username:[email protected]:8888"}) return br class v2ex(object): def __init__(self,v2expara,useproxy=0,proxyaddr='http://127.0.0.1:8580'): self.name='v2ex' self.br=make_br() self.v2expara=v2expara #('name','pass') def sign(self): br=self.br br.open('https://www.v2ex.com/signin') #for f in br.forms(): br.select_form(nr=1) for i in br.form.__dict__['controls']: #print i.name,i.type if i.type=='text': br.form[i.name]=self.v2expara[0] elif i.type=='password': br.form[i.name]=self.v2expara[1] br.submit() br.open('https://www.v2ex.com/mission/daily') if u'每日登录奖励已领取' in br.response().read(): return 1 else: br.open(re.search(r'/mission/daily/redeem\?once=\d+', br.response().read()).group()) if u'请重新点击一次以领取每日登录' in response: return 0 elif br.response().read(): return 1 return 0 """ | 
|      26bearqq      2016-05-18 16:15:03 +08:00 | 
|  |      27suspended      2016-05-18 16:38:12 +08:00  1 @EchoWhale 不能这么说吧。去年做了个 300K 的小项目(一个数据归档系统),除了直接和磁带机打交道的部分是 C ,其余的执行器,调度,空间管理,管理界面,全部都是用 ruby 写的。 | 
|  |      28EchoWhale      2016-05-18 17:56:38 +08:00 @suspended 个人开发者?那的确可以选任何语言。或者你能影响到公司新项目采用的技术栈。   ruby 的就业范围很窄是个不争的事实,所以我才说 Ruby 不能当饭吃 | 
|      29atnoot      2016-05-18 19:22:07 +08:00 @gogobody  github.com/davisqi/me.git 中 V2EX 可以参考一下 | 
|  |      30audi      2016-05-18 19:22:30 +08:00  1 签到有什么用 | 
|  |      31xiaomayi0323      2016-05-18 23:42:50 +08:00 @atnoot Python 版的来一发 | 
|  |      35suspended      2016-05-19 11:06:18 +08:00 @EchoWhale 国内不流行 Ruby ,哪怕在国外似乎也都局限于 Rails? 蛮可惜的。我个人从没用过 Rails 。 | 
|      36shulen      2016-05-20 08:35:52 +08:00 https://github.com/ForestCho/node-v2ex 之前也弄过一个,现在还挂着签到 | 
|  |      37nivan OP | 
|  |      42moogle      2016-05-25 14:37:52 +08:00 @atnoot  请问 balance 是一个字符串,这里跑出异常,该如何处理? if balance not in result: TypeError: a bytes-like object is required, not 'str' |