VeryCD灌水机-python自动灌水脚本示例

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()
This entry was posted in python, 编程 and tagged , , . Bookmark the permalink.

25 Responses to VeryCD灌水机-python自动灌水脚本示例

  1. upsuper says:

    怎么会有这么水的东西……

  2. JCLee says:

    不错,还挺有意思的。看来有时间,也要看一下Python

  3. pc says:

    我不懂编程,怎么用这个东东?另外建议simplecd.org的rss订阅能分别为每个子类目建立一个feed,订阅整站feed看得很累哈~~~

    • observer says:

      到www.python.org下载python,最新的是2.6.4好像,然后把脚本存为”vcfarm.py”,修改脚本当中的username和password字段,然后直接双击这个文件就可以了。
      分类feed?好吧,有时间搞一下

  4. bones7456 says:

    哈哈,我也去搞个铜光盘去。
    脚本最好得加行:

  5. bones7456 says:

    哈哈,我也去搞个铜光盘去。
    脚本最好得加行:
    for topic in topics:
    time.sleep(random.uniform(2, 20))
    不然太夸张了,而且很容易出现 HTTP Error 500: Server Error

  6. 呵呵,会不会刷屏被k啊。

  7. ai或 says:

    博主是否知道有没有支持正则式,中文图形界面,win或ubuntu下的下载软件

  8. tyz says:

    汗,这个MS没什么必要吧
    铜盘除了可以发资源外,和白盘没有区别
    而且只要你有资源要发,都可以找版主直接升铜盘的,我当时就是白盘直接铜的

  9. python says:

    有验证码的 站的话如何解决呢

  10. A says:

    simplecd可不可以做成这样.我看了一下verycd的,列表式当然很好,左边标题.而摘要可以做成textbox的,以防框架太长.然后缩略图也需要.作者可以点击作者标题列表排序内容.当然.还有分页的话.可不可以一页10条或者50条.等等链接.我点了一下查找功能.发觉只是查标题中的相关索引,但要查内容中的似乎由于内容太多不太实际.可不可以有两种查法.因为我想查里面也包含的重要内容.还有,我发现升级的话.程序会死掉,只好结束进程..说了这么多.不会觉得烦吧!呵呵

    • observer says:

      谢谢建议。
      缩略图不会做,因为缩略图都是图片,访问量一大服务器会受不了,毕竟我才是一台内存512M的VPS而已,而且上面还要跑其他服务,要求不能太高:)
      作者排序是一个好想法,但是也不会做,因为作者实在太多了,按作者排序会慢到一定程度的,相信我。
      桌面版升级会死掉?只是很慢而已吧,一口气升级的话花费几个小时都是正常的,而且在更新数据库的时候是不能Cancel的,下次我改一下好了。

  11. python says:

    咨询老大个问题
    verycd 这种的还好办

    举例说,像 http://house.focus.cn/group/yezhu.php 焦点论坛这种
    登录表单里都看不到fk串 以及 submit 提交表单的 name 属性标签的

    该如何填表并实现登录呢?

    • observer says:

      这个不是更简单了吗?没有fk串就不要传fk串就行了啊

      我看了一下你是不是被html写法给绕晕了?他这个登录框不在主html里面,是调用javascript显示的

      不过即便如此,登录所用的表项还是很简单的,多点耐心就能看到了

      这种是有点难找,耐心点看html代码就行了,别偷懒嫌麻烦。

  12. fens says:

    哈哈,不知道能不能适于Discuz灌水?

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">