2010-01-09 6 views
0

InstaMapper는 InstaMapper 웹 페이지에서 기기를 추적하는 동안 기기의 위치를보다 자주 업데이트하는 GPS 추적 서비스입니다. 나는 항상 내 계정에 로그인하고 주기적으로 페이지에 액세스 할 수있는 파이썬 스크립트를 작성할 것이라고 생각하고 싶습니다.Python에서 cookielib 및 폼 인증 문제 발생

import urllib2, urllib, cookielib 

cj = cookielib.LWPCookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
urllib2.install_opener(opener) 

params = urllib.urlencode(dict(username_hb='user', password_hb='hunter2')) 
opener.open('http://www.instamapper.com/fe?action=login', params) 
if not 'id' in [cookie.name for cookie in cj]: 
    raise ValueError, "Login failed" 

# try secured page 
resp = opener.open('http://www.instamapper.com/fe?page=track&device_key=abc') 
print resp.read() 
resp.close() 

ValueError는 매번 발생합니다. 이 링크를 제거하고 응답을 읽으면 페이지에서 쿠키를 비활성화하고 해당 페이지에 대한 액세스를 차단한다고 생각합니다. 왜 InstaMapper 쿠키를 잡아 먹지 않는거야?

내 계정을 계속보고 있다고 생각하는 추적 서비스를 만드는 더 좋은 방법이 있습니까?

+0

그래서 '쿠키의 값은 무엇입니까. 이름이'cj' 안에 있습니까? 'cj : print cookie.name'의 간단한 루프를 수행하십시오 -'id'와 같이 보이는 이름이 아닐지 모르지만 더 이상 데이터가 없으면 우리가 말할 수 없습니다! -) –

+0

Alex, 당신은 정확하고 'id'는 올바른 쿠키 이름이 아닙니다. 그것은 'k'일 것입니다. 그 점을 지적 해 주셔서 감사합니다. – Matt

답변

0

action=login는 매개 변수의 일부이며, 이에 따라 처리해야합니다

params = urllib.urlencode(dict(action='login', username_hb='user', password_hb='hunter2')) 
opener.open('http://www.instamapper.com/fe', params) 

(또한,이 특정 사용자 이름/암호 조합은 당신이 실제로 유효한 사용자 이름과 암호를 사용하는 것이, 나는 가정, 무효 인 당신 실제 코드. 그렇지 않으면 로그인에 오류가 발생합니다.)

+0

조치를 매개 변수로 추가하여 해결했습니다. 감사! – Matt

0

시도를 저지하기 위해 특별히 고안된 쿠키가 있는지 살펴 보셨습니까? Wireshark 나 다른 검사관을 사용하여 수동으로 로그인 할 때 (자바 스크립트 등을 통해) 쿠키가 변경되는지 확인하십시오.

(윤리적 유의 사항 : 서비스 약관에 위배 될 수 있으며 당신이 지불하는 것보다 회사에서. 나는이 같은 서비스를 실행하는 데 사용하고 모든 추가/계획되지 않은 위치 업데이 트가 $ 0.01 - $ 0.05 사이에 있었지만 그 확신 내려.)

+0

oefe의 제안이 수정 된 것처럼 'foiling cookies'가없는 것 같습니다. 흠, 나는 TOS 위반에 대해 궁금해하고 있었다. 그것은 항상 자신의 브라우저에서 열어 놓은 페이지를 유지하는 것과 다르지 않다. – Matt