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

学习模拟登录,发送了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)

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

阿神
阿神

闭关修行中......

membalas semua(4)
Ty80

Anda boleh terus menggunakan konteks Sesi, dan kemudian semua permintaan diselesaikan melalui contoh sesi Objek sesi akan mengendalikan kuki secara automatik untuk anda, kandungan dalam pengepala mesti ditentukan sendiri semasa membuat permintaan pertama . Struktur kod adalah kira-kira seperti berikut:

import requests

url = ""
headers = {}
with requests.Session() as s:
    s.headers.update(headers)
    s.get(url)
    s.post(login_url)
PHPzhong

Mari kita lihat dokumen permintaan sekali lagi, nama pembolehubah a b c d menarik perhatian

Peter_Zhu

Tidak cookie

f = requests.session() // 此时相当于打开了浏览器会话,接下来的操作都应该在这个会话里面执行,就不会有 cookie 问题了

requests.get digantikan dengan f.get

洪涛

Pertama sekali, anda perlu memahami prinsip amanah pelayan selepas anda log masuk

Pelayan akan menyimpan nilai sesi sebagai bukti kelayakan apabila anda log masuk, dan akan mengembalikan anda pengepala respons dengan medan Set-Cookie sebagai bukti kelayakan, jadi anda perlu menghantar permintaan dapatkan dengan kuki seperti yang anda telah log masuk masuk. Baucar

Ia seperti anda membeli tiket elektronik dalam talian Orang ramai tahu bahawa anda telah membelinya, tetapi bagaimana anda membuktikannya apabila anda memasuki tempat tersebut. Anda perlu masuk dengan tiket fizikal yang mereka berikan kepada anda selepas membeli >

Berbalik kepada senario semasa, pelayan mengetahui bahawa anda telah log masuk dan telah menyimpan sesi (bersamaan dengan menyimpan data pesanan untuk membeli tiket Pada masa ini, apabila anda menghantar permintaan dapatkan, anda perlu membuktikannya anda baru sahaja log masuk. Bahawa anda (bersamaan dengan memerlukan tiket fizikal), pada masa ini anda perlu menghantar data dalam medan Set-Cookie yang dikembalikan kepada anda oleh pelayan semasa log masuk (keluarkan tiket fizikal anda untuk membuktikan bahawa anda telah membeli tiket), dan kemudian pelayan boleh mengesahkan Identiti anda akan memberikan anda data yang sepadan (bersamaan dengan kemasukan dengan tiket)

Berbalik kepada pelaksanaan khusus kod, anda perlu menyemak cara perpustakaan permintaan membawa kuki log masuk semasa menghantar permintaan, supaya anda boleh log masuk dengan jayanya

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!