python 实现华安信达论坛自动登录

近期需要从论坛采集一些数据,就使用爬虫专属语言python写了一个小爬虫,实现自动登录,并到指定的板块采集帖子标题、作者等信息。

实现自动登录的关键在于模拟浏览器向服务器发送数据包,用Fiddler抓包看一下,过程非常清晰:

1. 论坛的登录页面链接 http://bbs.cisps.org/ucp.php?mode=login

2. 研究Fiddler捕捉到的数据包,可以看到浏览器以Post方法向服务器发送了包含用户名和口令等字段,如图1所示,

username和password之外,还有一项sid,经过多次抓包分析,sid字段的值是cookie中的一项,如图2所示,

2

cookie中phpbb2mysql的值与之前我们分析的sid值一致,到此,我们就能够完整构造数据包模拟浏览器登录

     3. 完整代码:

		username = 'xxxxxxxx'		# 用户名
		password = xxxxxxxx		# 口令
		url_0 = 'http://bbs.cisps.org/'		# 首先请求主页
		req_0 = urllib2.Request(url_0 ,headers = self.headers)
		self.opener.open(req_0).read()
		phpbb2mysql_sid = ''				
		for cookie in self.cookieHandler:
			if cookie.name=="phpbb2mysql_sid":
				phpbb2mysql_sid = cookie.value		# 关键:将Cookie中的phpbb2mysql_sid值赋给变量
		postdata = {
					'username':	 username,
					'password':	 password,
					'autologin': 'on',
					'sid':       phpbb2mysql_sid,
					'redirect':	 'index.php',
					'login':	 '登录',
					'redirect':	 './ucp.php?mode=login'}		
		postencodedata = urllib.urlencode(postdata)		# 数据包编码
		url_1 = 'http://bbs.cisps.org/ucp.php?mode=login'
		req_1 = urllib2.Request(url_1,postencodedata,headers=self.headers)		# 请求
		data_1  = self.opener.open(req_1).read()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值