Python实现BBS自动登录并发帖
初学Python有了一段时间,寒假里又看了一些Web编程方面的知识,就写了一个实现bbs自动登录和发帖的Python脚本
由于本人学校BBS站首页使用js加载,貌似通过首页登录不大可行,然后就分析表单,发现是通过POST一些data到特定的地址,之后
获取返回的cookie。这样就好办了,废话不多说,上代码。(初学,不够 Pythonic,见谅)
- #-*-coding:utf-8-*-
- #lilybbs.py
- #Author:Sky_Money
- #Python实现自动登录BBS并发帖
- import urllib,urllib2
- #帐号和密码,你懂的
- username=''
- password=''
- baseurl='http://bbs.nju.edu.cn/vd45734/bbslogin?type=2'
- postdata=urllib.urlencode({
- 'id':username,
- 'pw':password,
- 'lasturl':''})
- req=urllib2.Request(
- url=baseurl,
- data=postdata)
- result=urllib2.urlopen(req).read()
- #从返回的Content中抓取Cookie
- start=result.find("('")+2
- end=result.find("')")
- cookie=result[start:end]
- split1=cookie.find('N')
- split2=cookie.find('+')
- u_num=int(cookie[0:split1])
- u_id=cookie[split1+1:split2]
- u_key=int(cookie[split2+1:])
- footkey=217872412
- #下面是发帖验证
- testUrl='http://bbs.nju.edu.cn/vd78013/bbssnd?board=test'
- sendCookie="_U_NUM=%d;_U_UID=%s;_U_KEY=%d;FOOTKEY=%d"%(u_num+2,u_id
- ,u_key-2,footkey)
- #发送的Headers,必须要有Cookie
- sendheaders = {
- 'Host': 'bbs.nju.edu.cn',
- 'Connection': 'keep-alive',
- 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/535.2 (KHTML,like Gecko) Chrome/15.0.874.121 Safari/535.2',
- 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
- 'Accept-Encoding': 'gzip,deflate,sdch',
- 'Accept-Language': 'zh-CN,zh;q=0.8',
- 'Accept-Charset': 'GBK,utf-8;q=0.7,*;q=0.3',
- }
- sendheaders['Cookie']=sendCookie
- #发帖的data主体
- body=urllib.urlencode({'title':'test',
- 'pid':'0',
- 'reid':'0',
- 'signature':'1',
- 'autocr':'on',
- 'text':'oh yeah'})
- returnedReq=urllib2.Request(
- url=testUrl,
- data=body,
- headers=sendheaders)
- returnedResult=urllib2.urlopen(returnedReq).read()
- 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自动登录并发帖的更多相关文章
- Python实现京东自动登录
配置好webdriver,用的是Chrome的 import cv2 import time import numpy as np from selenium import webdriver fro ...
- python 实现网页 自动登录
完整代码: 1 from apscheduler.schedulers.blocking import BlockingScheduler 2 from selenium import webdriv ...
- [Python爬虫] Selenium实现自动登录163邮箱和Locating Elements介绍
前三篇文章介绍了安装过程和通过Selenium实现访问Firefox浏览器并自动搜索"Eastmount"关键字及截图的功能.而这篇文章主要简单介绍如何实现自动登录163邮箱,同时 ...
- 用Python写个自动ssh登录远程服务器的小工具
很多时候我们喜欢在自己电脑的终端直接ssh连接Linux服务器,而不喜欢使用那些有UI界面的工具区连接我们的服务器.可是在终端使用ssh我们每次都需要输入账号和密码,这也是一个烦恼,所以我们可以简单的 ...
- Python+fiddler(基于Cookie绕过验证码自动登录)
案例:使用Cookie绕过百度验证码自动登录账户 步骤: 1.浏览器进入百度首页,点击登录按钮,输入相关信息(注意:暂时不要点击登录按钮) 2.进入fiddler,首先获取证书,Tools--> ...
- python自动登录代码
公司有很多管理平台,账号有禁用机制,每个月至少登录一次,否则禁用.导致有时候想登录某个平台的时候,发现账号已经被禁用了,还得走流程解禁.因此用python实现了一下自动登录,每天定时任务运行一次.ps ...
- 吴裕雄--天生自然PYTHON学习笔记:python自动登录网站
打开 www. 5 l eta . com 网站,如果己经通过某用户名进行了登录,那么先退出登录 . 登录该网站 的步骤一般如下 : ( 1 )单击右上角的“登录”按钮. ( 2 )先输入账号. ( ...
- python办公自动化系列之金蝶K3自动登录(一)
做办公自动化的小伙伴都知道,驱动SAP GUI我们有SAP原生提供的[脚本录制与回放]以及SAP Scripting API可参考:驱动Office Excel等,我们有微软提供的[录制宏]功能:驱动 ...
- python办公自动化系列之金蝶K3自动登录(二)
接上一篇博文python办公自动化系列之金蝶K3自动登录(一),我们接着聊聊利用python脚本实现金蝶K3 Wise客户端自动登录这一需求. 如上图所示,自动选择[组织机构]后,我们还需要驱动[当前 ...
随机推荐
- protobuf 中的嵌套消息的使用
protobuf的简单的使用,不过还留下了一个问题,那就是之前主要介绍的都是对简单数据的赋值,简单数据直接采用set_xx()即可,但是如果不是简单变量而是自定义的复合类型变量,就没有简单的set函数 ...
- 2.一步一步学c#(二):核心c#
简单的控制台应用程序. 代码(它有把某条消息写到屏幕上的一个类组成) 编译并运行程序得到结果: 在上面的代码示例中,前几行代码与名称空间有关,名称空间是把相关类组合在一起的方式.namespace关键 ...
- 一步一步学c#(五):泛型
泛型 性能 泛型的一个重要的优点是性能.system.collections和system.collections.generic名称空间的泛型和非泛型集和类.对值类型使用非泛型集合类,在把值类型转换 ...
- 删除Lb重复的数,用La输出(顺序表)
#include<stdio.h> typedef int A; const int LIST_INIT_SIZE=100; const int LISTINCRMENT=10; type ...
- SqlHelp
using System.Configuration;using System.Data; public class SqlHelp { private static string connectio ...
- jbpmAPI-6
第六章流程. 6.1. What is BPMN 2.0 业务流程模型和符号(BPMN)2.0规范是OMG规范,不仅定义了一个标准的业务流程的图形化表述(如BPMN 1. x),但现在还包括执行语义定 ...
- C#通过WebBrowser快速扒站思路积累大量着陆页列表
现在工作方向已经越来越倾向于项目产品运营相关的东西.对线上运营也有了一定程度的了解. 配合一些技术性的操作,能极大的便利工作中的各种高难度任务,快速提升自我,积累丰富的经验和资源. 以近期制作LP为例 ...
- 在raw_input()中使用中文提示,在CMD下中文乱码问题解决。。。
错误的程序及结果: 解决1: guess = int(raw_input('请输入一个整数:'.decode('utf-8').encode('gbk'))) 解决2: guess = int(raw ...
- inline-block 垂直居中
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Qt实战之开发软件数据获取助手(eventFilter处理鼠标按下,event处理鼠标松开)
前段时间,受朋友委托,需要做一个能够获取别人软件文本框中内容的助手.当然这需要调用win api来解决问题.一开始,我想都没想,就用getWindowText()....居然没用,好郁闷.于是查msd ...