urllib2下载验证码图片

时间:2011-08-06 15:42:25

标签: python captcha urllib2 mechanize urllib

我正在尝试使用“mechanize”aka urllib2从VBB板下载验证码图像。 这是验证码所在的位置(使用任何用户名登录并通过您将被要求验证码):

<img id="imagereg" src="image.php?type=hv&amp;hash=c76c6f3c2e0fc3bf32fd99d36555fa04" alt="" width="201" height="61" border="0" />

我尝试检索该图片但是下载了一个.php文件

br.open('http://www.amaderforum.com/image.php?type=hv&amp;hash=c76c6f3c2e0fc3bf32fd99d36555fa04')

我将ext名称更改为图像,但它不是验证码图像。 有什么帮助吗?

以下是标题中的一些信息

  

GET /image.php?type=hv&hash=c76c6f3c2e0fc3bf32fd99d36555fa04 HTTP / 1.1 \ r \ nAccept-Encoding:identity \ r \ nHost:www.amaderforum.com \ r \ nCookie:bbsessionhash = 25e24573ce64dfc95dbb873667f21787; bblastvisit = 1312644421; bblastactivity = 0 \ r \ nConnection:close \ r \ nUser-Agent:Mozilla / 5.0(Windows; U; Windows NT 6.1; en-US; rv:1.9.2.17)Gecko / 20110420 Firefox / 3.6.17 \ r \ n \ r \ N”   回复:'HTTP / 1.1 200 OK \ r \ n'   标题:日期:2011年8月6日星期六15:30:48 GMT

     

标题:服务器:Apache

     

标题:X-Powered-By:PHP / 5.2.9

     

header:Content-transfer-encoding:binary

     

标题:内容处理:内联;文件名= image.jpg的

     

标题:内容长度:5745

     

标题:连接:关闭

     

header:Content-Type:image / jpeg

1 个答案:

答案 0 :(得分:1)

这是一个简短的脚本,转到丢失的密码页面,找到验证码,然后将图像下载到out.jpg。

此脚本需要lxml库。

希望这会有所帮助。干杯!

import urllib2
import lxml.html

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/2010010' \
    '1 Firefox/4.0.1',
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language':'en-us,en;q=0.5',
    'Accept-Charset':'ISO-8859-1,utf-8;q=0.7,*;q=0.7'}

req = urllib2.Request('http://www.amaderforum.com/login.php?do=lostpw', None,
                      headers)
f = urllib2.urlopen(req)
page = f.read()

tree = lxml.html.fromstring(page)
imgurl = "http://www.amaderforum.com/" + \
      tree.xpath(".//img[@id='imagereg']")[0].get('src')

req = urllib2.Request(imgurl, None, headers)
f = urllib2.urlopen(req)
img = f.read()

open('out.jpg', 'wb').write(img)