初学Python有了一段时间,寒假里又看了一些Web编程方面的知识,就写了一个实现bbs自动登录和发帖的Python脚本

由于本人学校BBS站首页使用js加载,貌似通过首页登录不大可行,然后就分析表单,发现是通过POST一些data到特定的地址,之后

获取返回的cookie。这样就好办了,废话不多说,上代码。(初学,不够 Pythonic,见谅)

  1. #-*-coding:utf-8-*-
  2. #lilybbs.py
  3. #Author:Sky_Money
  4. #Python实现自动登录BBS并发帖
  5. import urllib,urllib2
  6. #帐号和密码,你懂的
  7. username=''
  8. password=''
  9. baseurl='http://bbs.nju.edu.cn/vd45734/bbslogin?type=2'
  10. postdata=urllib.urlencode({
  11. 'id':username,
  12. 'pw':password,
  13. 'lasturl':''})
  14. req=urllib2.Request(
  15. url=baseurl,
  16. data=postdata)
  17. result=urllib2.urlopen(req).read()
  18. #从返回的Content中抓取Cookie
  19. start=result.find("('")+2
  20. end=result.find("')")
  21. cookie=result[start:end]
  22. split1=cookie.find('N')
  23. split2=cookie.find('+')
  24. u_num=int(cookie[0:split1])
  25. u_id=cookie[split1+1:split2]
  26. u_key=int(cookie[split2+1:])
  27. footkey=217872412
  28. #下面是发帖验证
  29. testUrl='http://bbs.nju.edu.cn/vd78013/bbssnd?board=test'
  30. sendCookie="_U_NUM=%d;_U_UID=%s;_U_KEY=%d;FOOTKEY=%d"%(u_num+2,u_id
  31. ,u_key-2,footkey)
  32. #发送的Headers,必须要有Cookie
  33. sendheaders = {
  34. 'Host': 'bbs.nju.edu.cn',
  35. 'Connection': 'keep-alive',
  36. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML,like Gecko) Chrome/15.0.874.121 Safari/535.2',
  37. 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  38. 'Accept-Encoding': 'gzip,deflate,sdch',
  39. 'Accept-Language': 'zh-CN,zh;q=0.8',
  40. 'Accept-Charset': 'GBK,utf-8;q=0.7,*;q=0.3',
  41. }
  42. sendheaders['Cookie']=sendCookie
  43. #发帖的data主体
  44. body=urllib.urlencode({'title':'test',
  45. 'pid':'0',
  46. 'reid':'0',
  47. 'signature':'1',
  48. 'autocr':'on',
  49. 'text':'oh yeah'})
  50. returnedReq=urllib2.Request(
  51. url=testUrl,
  52. data=body,
  53. headers=sendheaders)
  54. returnedResult=urllib2.urlopen(returnedReq).read()
  55. print returnedResult

代码一路到底,比较丑,就这样看看了

主要使用了urllib和urllib2模块。

先是登录问题,需要POST的数据可以通过FF+httpfox查看,这个比较方便。知道需要的数据之后就依样画葫芦,模拟发送即可。

其中发送的url中 /vd 后面跟的一串数字就是随机指派,这个其实可以通过随机数分配,没有特定的要求.

之后通过抓取发送得到的Cookie获取发帖‘令牌’,其中Cookie分为四部分,_U_NUM,_U_UID,_U_KEY,FOOTKEY,其中 _U_UID是用户名,_U_NUM和_U_KEY是返回的一串数值,需要注意的是,发帖是的Cookie需要将 _U_NUM值加2,_U_KEY值减2,这个比较奇怪,可能是本校bbs设置的问题。FOOTKEY貌似就是随意指派的一串数字。

以上就是自动登录并发帖的简单脚本,现在发现Python写这玩意还是挺好玩,接下来想考虑怎么登录WebQQ,这个貌似需要了解TX的QQ通讯协议了....

Python实现BBS自动登录并发帖的更多相关文章

  1. Python实现京东自动登录

    配置好webdriver,用的是Chrome的 import cv2 import time import numpy as np from selenium import webdriver fro ...

  2. python 实现网页 自动登录

    完整代码: 1 from apscheduler.schedulers.blocking import BlockingScheduler 2 from selenium import webdriv ...

  3. [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍

    前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...

  4. 用Python写个自动ssh登录远程服务器的小工具

    很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...

  5. Python+fiddler(基于Cookie绕过验证码自动登录)

    案例:使用Cookie绕过百度验证码自动登录账户 步骤: 1.浏览器进入百度首页,点击登录按钮,输入相关信息(注意:暂时不要点击登录按钮) 2.进入fiddler,首先获取证书,Tools--> ...

  6. python自动登录代码

    公司有很多管理平台,账号有禁用机制,每个月至少登录一次,否则禁用.导致有时候想登录某个平台的时候,发现账号已经被禁用了,还得走流程解禁.因此用python实现了一下自动登录,每天定时任务运行一次.ps ...

  7. 吴裕雄--天生自然PYTHON学习笔记:python自动登录网站

    打开 www. 5 l eta . com 网站,如果己经通过某用户名进行了登录,那么先退出登录 . 登录该网站 的步骤一般如下 : ( 1 )单击右上角的“登录”按钮. ( 2 )先输入账号. ( ...

  8. python办公自动化系列之金蝶K3自动登录(一)

    做办公自动化的小伙伴都知道,驱动SAP GUI我们有SAP原生提供的[脚本录制与回放]以及SAP Scripting API可参考:驱动Office Excel等,我们有微软提供的[录制宏]功能:驱动 ...

  9. python办公自动化系列之金蝶K3自动登录(二)

    接上一篇博文python办公自动化系列之金蝶K3自动登录(一),我们接着聊聊利用python脚本实现金蝶K3 Wise客户端自动登录这一需求. 如上图所示,自动选择[组织机构]后,我们还需要驱动[当前 ...

随机推荐

  1. 转载ajax

    写在前面的话: 用了很久的Asp.Net Ajax,也看了段时间的jquery中ajax的应用,但到头来,居然想不起xmlHttpRequest的该如何使用了. 以前记的也不怎么清楚,这次就重新完整的 ...

  2. DataSet - DataTable - DataRow 读取 xml 文件 + 搜索

    DataSet ds = XmlHelper.GetDataSetByXml(AppDomain.CurrentDomain.BaseDirectory + "/Config/ConfigN ...

  3. 微信公众号token验证失败的一些总结

    这几天准备弄一个微信公众号,在进行服务器配置的时候出现总是出现token验证失败的报错. 实际上,这个问题很好解决.既然微信平台没有给我们很明确的报错提示,那么我们就可以通过跟踪获取到的请求参数进行分 ...

  4. 我的Python成长之路---第一天---Python基础(4)---2015年12月26日(雾霾)

    五.数据运算与数据运算符 1.算术运算符 算术运算符 运算符 描述 示例 + 加法 >>> 14 - 5 9 - 减法 >>> 14 - 5 9  *  乘法 &g ...

  5. poj 3258 River Hopscotch 二分

    /** 大意:给定n个点,删除其中的m个点,其中两点之间距离最小的最大值 思路: 二分最小值的最大值---〉t,若有距离小于t,则可以将前面的节点删除:若节点大于t,则继续往下查看 若删除的节点大于m ...

  6. c语言(3)--运算符&表达式&语句

    计算机的本职工作是进行一系列的运算,C语言为不同的运算提供了不同的运算符! 1.那些运算符们 .基本运算符 算术运算符:+ - * /  % ++ -- 赋值运算符:= 逗号运算符:, 关系运算符:& ...

  7. (asp.net MVC学习)System.Web.Mvc.UrlHelper的学习与使用

    上一次学习了HtmlHelper帮助类,这次我们学习一下UrlHelper帮 助类,看类名也都知道这个类是用来帮我们生成URL在ASP.NET MVC应用程序中.让我们来看看该类给我们带来了哪些方便的 ...

  8. COM编程之IUnknown接口

    COM组件其实是一种特殊的类,遵循一个统一的标准,使到各个软件都可以通过某种方法访问这个类的函数和方法,也就可以做到组件通用. com就是统一的标准--通过接口来调用com组件.接口是你的com组件能 ...

  9. 第一讲 一个简单的Qt程序分析

    本文概要:通过一个简单的Qt程序来介绍Qt程序编写的基本框架与一些Qt程序中常见的概念 #include <QApplication> #include <QPushButton&g ...

  10. [置顶] c++播放Flash文件

    最近由于需要在程序中使用Flash播放,所以学习了下如何播放Flash,这里使用atl库中的CAxWindow来处理我们要播放的Flash!由于Flash的很多接口我们都不知道,所以可以参考前一篇文章 ...