2011-08-06 4 views
0

"기계화"일명 urllib2를 사용하여 VBB 보드에서 captcha 이미지를 다운로드하려고합니다. 보안 문자를 찾아서 (어떤 사용자 이름으로 로그인하고 당신이 묻는 메시지가 표시됩니다 보안 문자를 통과) 여기서 이입니다urllib2 download captcha image

<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 이름을 이미지로 바꾸지 만 captcha 이미지가 아닙니다. 도움이 되었습니까? 정체성 \ 연구 \ nHost : www.amaderforum.com 아래

는 & 해시 = c76c6f3c2e0fc3bf32fd99d36555fa04 HTTP/1.1 \ 연구 \ nAccept 인코딩 헤더

GET의 /image.php?type=hv에서 몇 가지 정보입니다 \ r \ n 쿠키 : bbsessionhash = 25e24573ce64dfc95dbb873667f21787; bblastvisit = 1312644421; Gecko/20110420 Firefox/3.6.17 \ r \ n 사용자 에이전트 : Mozilla/5.0 (Windows, U, Windows NT 6.1, en-US, rv : 1.9.2.17) \ 연구 \ n을 ' 응답 :'HTTP/1.1 200 OK \ r에 \ n을 ' 헤더 : 날짜 : 2011년 (토) 8월 6일 그리니치 표준시 15시 30분 48초

헤더 서버 : 아파치

헤더 : X-전원이 저자 : PHP/5.2.9

헤더 : 콘텐츠 전송 인코딩 바이너리

: 헤더 내용 처리 인라인; 파일 이름 = image.jpg를

헤더 : 콘텐츠 길이 : 5745

: 헤더에 연결 : 가까운

: 헤더의 Content-Type : 여기에 이미지/JPEG

+0

다운로드 한 .php 파일을 열 수 있습니까? ASCII 또는 이진 형식입니까? 그것의 적당한 jpg 심상이 그것 마술 수로 시작해야하는 경우에 - ÿØÿà 또는 그런 것. – arunkumar

+0

예 : ÿØÿà, 이미지는 captcha 이미지가 아닙니다. 이미지는 "vBulletin"입니다. – kairyu

+0

captcha 이미지를 볼 때 브라우저가 보내는 헤더를 확인하십시오. 쿠키를 확인하십시오, 내 추측은 스크립트가 당신이 브라우저가 아니라는 것을 알아 내고 당신에게 어떤 종류의 기본 이미지를 보내고 있습니다. – arunkumar

답변

1

짧은 스크립트입니다 잃어버린 암호 페이지로 이동하여 captcha를 찾아 이미지를 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)