初学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. hdu 5040 BFS 多维化处理图

    http://acm.hdu.edu.cn/showproblem.php?pid=5040 跟这一题http://blog.csdn.net/u011026968/article/details/3 ...

  2. c 跟字符串有关的函数

    1.字符串查找 strstr char * strstr(const char *s1, const char *s2); 在s1中查找s2,如果找到返回首个s2的首地址 char * strcase ...

  3. SQL Server索引进阶:第四级,页和区

    原文地址: Stairway to SQL Server Indexes: Level 4, Pages and Extents 本文是SQL Server索引进阶系列(Stairway to SQL ...

  4. Ubuntu_16.04_Lamp

    Ubuntu_16.04安装Lamp开发环境 目录 安装Apache2 安装php5 安装mysql-server 安装php5-mysql(php使用mysql服务,包括mysql,mysqli,m ...

  5. JavaScript使用button提交表单

    <form action="test.html" method="POST"> <input type="button" ...

  6. linux中的fork()函数以及标准I/O缓冲

    1. fork()创建的新进程成为子进程.一次调用,两次返回,子进程的返回值是0,而父进程的返回值是新子进程的进程ID,如果出现错误,fork返回一个负值. 2. 可以通过fork返回的值来判断当前进 ...

  7. [LeetCode]题解(python):084-Largest Rectangle in Histogram

    题目来源: https://leetcode.com/problems/largest-rectangle-in-histogram/ 题意分析: 给定一个数组,数组的数字代表这个位置上的bar的高度 ...

  8. Linux 系统之Sysvinit

    子贡问为仁.子曰:“工欲善其事,必先利其器.居是邦也,事其大夫之贤者,友其士之仁者.”——孔子(春秋)<论语·卫灵公> [工欲善其事,必先利其器] 掌握一门技术,知道其发展历程是非常重要的 ...

  9. (Problem 62)Cubic permutations(待续)

    The cube, 41063625 (3453), can be permuted to produce two other cubes: 56623104 (3843) and 66430125 ...

  10. C 根据行来读取文件 字符串的截取

    // TestCFile.cpp : Defines the entry point for the console application. // #include "stdafx.h&q ...