2012-09-04 6 views
3

urllib로 웹 사이트에 로그인하려고합니다. 이것은 내 회사의 내부 웹 사이트입니다.urllib로 웹 사이트에 로그인

은 로그인 페이지는 다음과 같습니다

내 파이썬은 다음과 같습니다
<form id="login" action="/accounts/login/" method="POST"> 
<label for="username">Username</label> 
<input name="username" type="text" class="text"><br> 
<label for="password">Password</label> 
<input name="password" type="password" class="text"><br> 
<input name="login_submit" type="submit" value="Sign in" class="submit"> 

:

url = 'http://10.188.36.250/accounts/login/' 
values = {'user_name':'xxxx', 'password':'xxxxx'} 
data = urllib.urlencode(values) 
req = urllib2.Request(url,data) 
res = urllib2.urlopen(req) 

내가 돌아 오기 :

urllib2.HTTPError : HTTP 오류 403 :

금지

내가 뭘 잘못하고 있니?

답변

3

"username"대신 "user_name"을 사용하는 것을 제외하면 모든 것을 올바르게하고 있습니다. 양식의 변수를 확인하십시오.

+0

좋은 캐치,하지만 난 여전히 urllib2.HTTPCookieProcessor()와 urllib2.build_opener()를 사용하여 403 –

1

기본 urllib2 open은 쿠키를 잘 지원하지 않습니다.

urllib2를 사용하여 작업을 수행하려면 urllib2.HTTPCookieProcessor()urllib2.build_opener()을 확인하십시오. 전자는 후자로 전달됩니다.이 후자는 ' . 내가 정확히 기억하지 않습니다와 페이지를 열 것이다, 그러나 당신의 코드가 같을 수 :

opener= urllib2.build_opener(urllib2.HTTPCookieProcessor()) 
req = urllib2.Request(url , data) 
res = opener.open(req) 

내가 좋겠 또한 파이썬에서 그렇게 형편없는 인터넷-Y 일을하게 requests 모듈을보고 제안 (http://docs.python-requests.org/en/latest/index.html)

+0

귀하의 제안을 얻고, didn를 어디

req = urllib2.Request(url , data, headers=headers) 

'- 같은 코드는 모양 도와 줘. 나는 여전히 403을 가지고있다. 내가 요청 모듈을 시험해 보았다. 나는 403을 얻지 못했지만, 로그인 할 수 없었다. 단지 로그인 페이지를 다시 만들었다. 고마워요. –

1

연결로 헤더를 사용해야하기 때문입니다. . 가장 인기있는 웹 브라우저 중 하나를 삽입하십시오. 당신의 머리 속에. 모질라 - 적어도. 헤더 = {'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12'}

관련 문제