返回信息流我觉得把username,password,imagestring,imagehash四个数据post到takelogin.php就行了。。。
问题是,获取imagestring的时候,我是通过打开图片对应的链接,然后手动输入。这样的话再发request的时候验证码图片就过期了。
有没有什么好办法模拟登录这种需要图片验证码的网站啊?还望各位大牛赐教,拜谢拜谢[ema23]
这是一条镜像帖。来源:北邮人论坛 / python / #3715同步于 2014/10/17
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
[求教]学校bt的模拟登录
HaSep
2014/10/17镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
有cookie啊
【 在 HaSep (HaSep) 的大作中提到: 】
: 我觉得把username,password,imagestring,imagehash四个数据post到takelogin.php就行了。。。
: 问题是,获取imagestring的时候,我是通过打开图片对应的链接,然后手动输入。这样的话再发request的时候验证码图片就过期了。
: 有没有什么好办法模拟登录这种需要图片验证码的网站啊?还望各位大牛赐教,拜谢拜谢[ema23]
: ...................
发送第一次请求的时候会收到服务器的set-cookie,后续请求把cookie带上就行。
【 在 HaSep (HaSep) 的大作中提到: 】
: 不太会用啊,是把cookie跟着header一起get到index.php么?
# -*- coding: utf-8 -*-
import urllib2
import urllib
import cookielib
import sys
import math
import os
from bs4 import BeautifulSoup
import re
#排除编码问题,一身轻松
reload(sys)
sys.setdefaultencoding('utf8')
cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
f = open('img.png','w')
req = urllib2.Request(url='http://bt.byr.cn/login.php')
html_doc = urllib2.urlopen(req).read()
soup = BeautifulSoup(html_doc)
res = soup.find(src=re.compile('image.php'))
img_req = urllib2.Request(url = 'http://bt.byr.cn/'+res['src'])
img = urllib2.urlopen(img_req).read()
f.write(img)
f.close()
imghash = res['src'].rpartition('=')[2]
print imghash
usrname = raw_input('请输入用户名:')
password = raw_input('请输入密码:')
imagestring = raw_input('请输入验证码:')
key = urllib.urlencode({'username':usrname,
'password':password,
'imagestring':imagestring,
'imagehash':imghash})
req = urllib2.Request(url='http://bt.byr.cn/takelogin.php',data=key)
html_doc = opener.open(req).read()
soup = BeautifulSoup(html_doc)
print soup.prettify()
以上是命令行版本的,对于验证码,处理方式是直接下载下来让用户看= =||验证码位于同目录下的img.png
BTW,beautifulsoup其实没用到。。
哈哈,强行用了一波BeautifulSoup,谢啦!
【 在 hansnow (小寒) 的大作中提到: 】
: [code=py]
: # -*- coding: utf-8 -*-
: import urllib2
: ...................
通过『我邮2.0』发布
借楼问一下,为什么
s = requests.Session()
req = s.get('http://bt.byr.cn/login.php')
抓下来的cookies是空的