일반 고려
쿠키은 아마도 전체 로그인 과정에서 사용됩니다. 그러면 다음 단계가 필요할 수 있습니다.
- 초기 쿠키를 얻으려면 로그인 페이지를로드하십시오.
- 1 단계의 로그인 데이터와 쿠키를 보내고 로그인 페이지를 다시로드하십시오.
- 로그인 성공 후 리디렉션을 따르십시오.
하지만 덕분에 "포함 배터리", 그것은 어려운 일이 아니다에, 난 그냥 호드 그룹웨어 다음과 같은 예를 시도 :
import urllib.request
import http.cookiejar
import urllib.parse
cookiejar = http.cookiejar.CookieJar()
loginpage = "https://example.com/login.php"
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookiejar))
data = {'user': 'username', 'pw': 'password'} # + what else might be required
binData = urllib.parse.urlencode(data).encode('utf-8')
result = opener.open(loginpage) # without credentials, to get cookie
result.read()
for c in cookiejar: # just debugging to see if we got a cookie
print(c)
result = opener.open(loginpage, binData) # now send the crendentials
page = result.read().decode() # read() will read after redirects!
f = open("out.html", "w") # store output in a file
f.write(page) # if everything worked, this should look
f.close() # like the landing page
또한 대부분의 사이트가 자바 스크립트, 파이썬 필요가 있습니다 그걸 감당할 수 없어. 브라우저에서 자바 스크립트를 사용하지 않도록 설정하고 액세스하려는 사이트의 모든 쿠키를 지운 다음 Firebug을 사용하여 프로세스를주의 깊게 살펴보고 어떤 정보 (쿠키, GET/POST 매개 변수, 리디렉션 등)가 전달되는지 확인하는 것이 좋습니다. 로그인 프로세스를 위해. 그럼 당신은 파이썬을 사용하여 이것을 다시 만들려고 할 수 있습니다.
핫메일 특정
Hotmail.com은 로그인 폼 작업 할 차선의 출발점이 될 것으로 보인다. 당신이 소스를 보면, 당신은 "진짜"입력 필드가 사용하려고 보이는 <div>
아니라고 볼 수있다 (내가보기 엔 당신이 파이어 폭스를 사용하는 경우 Firebug 제안)하지만,이 하나
<input type="email" lang="en" name="login" id="i0116" maxlength="113"
class="ltr_override" aria-labelledby="idLbl_PWD_Username">
암호는 입력 필드에서이 일 개
<input type="password" name="passwd" id="i0118" autocomplete="off"
aria-labelledby="idDiv_PWD_PasswordExample">
를 입력하면 더미 (또는 실제) 정보에 포함하고 좀 더 많은 정보가 전송됩니다 방화범의 "네트워크"탭에서 볼 수있는, 로그인을 시도한다 :
LoginOptions 3
NewUser 1
PPFT {very long encoded string}
PPSX Pas
i1 0
i12 1
i13 0
i14 226
i15 2270
i17 0
i18 __Login_Strings|1,__Login_Core|1,
i2 1
i3 92877
i4 0
i7 0
idsbho 1
login [email protected]
passwd password456
sso 0
type 11
login
및 password
이 충분할 수 있지만 Hotmail 계정이 없으므로 추가 테스트를 수행 할 수 없습니다. urllib.request를 사용하는 일반적인 접근 방식은 괜찮은 것 같습니다 (단 geturl
은 URL을 가져 오므로 변수 html의 이름을 더 나은 이름으로 변경해야합니다).
지금까지 도와 줘서 고마워! 나는 그것을 또한 시도했다. 그리고 그것은 아직도 나의 이야기에 도착하지 않고있다. 다른 누군가? 확실히 핫메일이어야합니다. 나는 Gmail에서 똑같은 시도를했고 그 중 하나는 작동하지 않는다. – user3526320
나는 내 대답을 업데이트했다 : 쿠키가 또한 이유 일 수있다. – Jasper
글쎄 이것은 내게 방향을 준다. 나는 내가 알아낼 수있는 것을 보았다. 악천후와 같은 것들을 사용하는 방법에 대한 튜토리얼을 찾으십시오. 모든 도움에 감사드립니다!내가 질문이있는 경우에 대비하여 아프다. – user3526320