VeryCD那个铜光盘才能进候补区的规定很烦人,必须得灌水才能升级,可是又懒得灌,于是写了一个灌水脚本,有人问我要,就干脆发出来共享一下吧。
`
使用方法:
1.把username和passwd改成相应的东东
2.用python解释器执行脚本,自动在首页的所有资源后面跟帖支持楼主
`
想要了解灌水机原理的话:
1.学会python基本原理
2.学会正则表达式,网络脚本必备(也可以学beautifulsoup,写的代码更直观易懂,不过正则通用性强,总要学的)
3.学会html基本格式,理解获取网页的GET/POST机制
4.然后再看代码吧,这个脚本因为很简单,所以注释了一下
要实现每日灌水的话,linux下建个cron job,windows下计划任务,两周以后就升铜可以去那啥候补区闲逛了。
#!/usr/bin/env python #coding:utf-8 #author:observer #http://69.163.35.68/old import urllib,urllib2,cookielib import re,time,random username = 'username' #改成自己的用户名 passwd = 'password' #改成自己的密码 #这个就是发帖内容,任意改,会随机选择一条发帖 msg = [ '多谢楼主', 'Mark', '正在找这个,谢谢', '谢谢分享', ] def login(): '''这个就是登录脚本''' print 'try to login...' #登录需要准备cookie cookie=cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie), urllib2.HTTPHandler) urllib2.install_opener(opener) #先获取verycd的fk串,用于填表 print '...getting login form...' loginform = urllib2.urlopen('http://secure.verycd.com/signin/*/http://www.verycd.com/').read() fk = re.compile(r'id="fk" value="(.*)"').findall(loginform)[0] #好的,现在填表 postdata=urllib.urlencode({'username':username, 'password':passwd, 'continueURI':'http://www.verycd.com/', 'fk':fk, 'login_submit':'登录', }) req = urllib2.Request( url = 'http://secure.verycd.com/signin/*/http://www.verycd.com/', 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 farm(): '''这个就是灌水函数了''' #读取主页,获得主页的所有资源id res = urllib.urlopen('http://www.verycd.com').read() topics = re.compile(r'/topics/(\d+)').findall(res) topics = set(topics) print topics #对每一个获取的资源,回一贴支持楼主:) #语法和刚才交登录表差不多 for topic in topics: url = 'http://www.verycd.com/topics/'+str(topic)+'/reply#fast-replay' print url postData = { 'contents':random.choice(msg), 'use_bbcode':'1', 'tid':str(topic), 'Action':'FolderCommentOperate:doReplyFolder' } postData = urllib.urlencode(postData) req = urllib2.Request(url = url, data = postData ) kk = urllib2.urlopen(req).read() time.sleep(random.randint(1,10)) #随机等待一会再发贴 if __name__ == '__main__': login() farm()
怎么会有这么水的东西……
哈哈,我就是灌水了,做测试写总结实在太累人,最木有时间@@
不错,还挺有意思的。看来有时间,也要看一下Python
我不懂编程,怎么用这个东东?另外建议simplecd.org的rss订阅能分别为每个子类目建立一个feed,订阅整站feed看得很累哈~~~
到www.python.org下载python,最新的是2.6.4好像,然后把脚本存为”vcfarm.py”,修改脚本当中的username和password字段,然后直接双击这个文件就可以了。
分类feed?好吧,有时间搞一下
哈哈,我也去搞个铜光盘去。
脚本最好得加行:
哈哈,我也去搞个铜光盘去。
脚本最好得加行:
for topic in topics:
time.sleep(random.uniform(2, 20))
不然太夸张了,而且很容易出现 HTTP Error 500: Server Error
呵呵,我少截了一段,import了time没用
呵呵,会不会刷屏被k啊。
如果是发帖的话倒有可能;这是回帖而且那么分散应该不会。至少我没有被封过。。
博主是否知道有没有支持正则式,中文图形界面,win或ubuntu下的下载软件
不知道,这应用挺简单的,自己用的话就自己写一个不就完了
高人,低手可望不可及
汗,这个MS没什么必要吧
铜盘除了可以发资源外,和白盘没有区别
而且只要你有资源要发,都可以找版主直接升铜盘的,我当时就是白盘直接铜的
no bronze, no entrance to member section
I need this access to crawl resources from verycd to simplecd
有验证码的 站的话如何解决呢
看我最新的连载啊,处理Discuz验证码的那篇,还在写,尽请期待
哈哈,好。。。。。。。。。。。
simplecd可不可以做成这样.我看了一下verycd的,列表式当然很好,左边标题.而摘要可以做成textbox的,以防框架太长.然后缩略图也需要.作者可以点击作者标题列表排序内容.当然.还有分页的话.可不可以一页10条或者50条.等等链接.我点了一下查找功能.发觉只是查标题中的相关索引,但要查内容中的似乎由于内容太多不太实际.可不可以有两种查法.因为我想查里面也包含的重要内容.还有,我发现升级的话.程序会死掉,只好结束进程..说了这么多.不会觉得烦吧!呵呵
谢谢建议。
缩略图不会做,因为缩略图都是图片,访问量一大服务器会受不了,毕竟我才是一台内存512M的VPS而已,而且上面还要跑其他服务,要求不能太高:)
作者排序是一个好想法,但是也不会做,因为作者实在太多了,按作者排序会慢到一定程度的,相信我。
桌面版升级会死掉?只是很慢而已吧,一口气升级的话花费几个小时都是正常的,而且在更新数据库的时候是不能Cancel的,下次我改一下好了。
http://www.tech-q.cn/thread-5364-1-1.html
有博主文章,是超版?
习惯了,像csdn啊、tech-q啊这种流氓站转载还不注明出处的挺多的。
咨询老大个问题
verycd 这种的还好办
举例说,像 http://house.focus.cn/group/yezhu.php 焦点论坛这种
登录表单里都看不到fk串 以及 submit 提交表单的 name 属性标签的
该如何填表并实现登录呢?
这个不是更简单了吗?没有fk串就不要传fk串就行了啊
我看了一下你是不是被html写法给绕晕了?他这个登录框不在主html里面,是调用javascript显示的
不过即便如此,登录所用的表项还是很简单的,多点耐心就能看到了
这种是有点难找,耐心点看html代码就行了,别偷懒嫌麻烦。
哈哈,不知道能不能适于Discuz灌水?