python - 学习模拟登录,卡在发送POST请求之后?
阿神
阿神 2017-04-18 10:21:50
0
4
876

学习模拟登录,发送了post请求之后页面还是登录页面啊,不知道原因

import re
import requests
url='http://cer.imufe.edu.cn/authserver/login?service=http%3A%2F%2Fmy.imufe.edu.cn%2Findex.portal'
html=requests.get(url).text
lt_value=re.compile(r'name="lt" value="(.*?)"').search(html).group(1)
execution_value=re.compile(r'name="execution" value="(.*?)"').search(html).group(1)
dt={}
dt['username']='帐号'
dt['password']='密码'
dt['signIn']=''
dt['lt']=lt_value
dt['execution']=execution_value
dt['_eventId']='submit'
hd={}
hd['User-Agent']='Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'
hd['Referer']=url
url2='http://my.imufe.edu.cn/detach.portal?.pmn=view&action=bulletinBrowser&.ia=false&.pen=pe1253&bulletinId=cf2509cf-9a54-11e6-86e2-7347af9c723b'
se=requests.session()
se.post(url,data=dt,headers=hd)
print(se.get(url2).text)

以下是抓取的数据,是不是我的哪里找错了?

阿神
阿神

闭关修行中......

모든 응답(4)
Ty80

세션 컨텍스트를 직접 사용할 수 있으며 모든 요청은 세션 인스턴스를 통해 완료됩니다. 세션 객체는 자동으로 쿠키를 처리합니다. 물론 첫 번째 요청을 할 때 헤더의 내용을 직접 정의해야 합니다. . 코드 구조는 대략 다음과 같습니다.

으아악
PHPzhong

요청 문서를 다시 살펴보면 a b c d 변수 이름이 눈길을 끕니다.

Peter_Zhu

아니요 cookie

으아악

requests.getf.get

으로 대체
洪涛

우선 로그인 후 서버의 신뢰원칙을 이해해야 합니다

로그인 시 서버는 세션 값을 자격 증명으로 저장하고 자격 증명으로 Set-Cookie 필드가 포함된 응답 헤더를 반환하므로 로그인한 대로 쿠키와 함께 가져오기 요청을 보내야 합니다. 인. 바우처

온라인에서 전자티켓을 구매한 것과 같습니다. 구매한 사실을 사람들이 알고 있는데 입장할 때 구매한 실물 티켓으로 입장해야 하나요?

현재 시나리오로 돌아가서 서버는 귀하가 로그인되어 세션을 저장했다는 것을 알고 있습니다(티켓 구매를 위한 주문 데이터를 저장하는 것과 동일). 이때 get 요청을 보낼 때 이를 증명해야 합니다. 방금 로그인하셨습니다. 이때 귀하(실제 티켓이 필요한 것과 동일)는 로그인 시 서버에서 반환한 Set-Cookie 필드의 데이터를 전송해야 합니다(실제 티켓을 꺼내서 이를 증명하십시오). 티켓을 구매한 경우) 서버에서 확인하면 귀하의 신원이 해당 데이터를 제공합니다(티켓으로 입장하는 것과 동일)

코드의 구체적인 구현으로 돌아가서, 성공적으로 로그인할 수 있도록 요청을 보낼 때 요청 라이브러리가 로그인 쿠키를 어떻게 가져오는지 확인해야 합니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!