Saya mencoba mengirim permintaan untuk masuk ke situs web menggunakan modul Permintaan dengan Python tetapi tidak benar-benar berfungsi. Saya baru dalam hal ini ... jadi saya tidak tahu apakah saya harus membuat cookie Nama Pengguna dan Kata Sandi saya atau semacam otorisasi HTTP yang saya temukan (??).
from pyquery import PyQuery
import requests
url = 'http://www.locationary.com/home/index2.jsp'
Jadi sekarang, saya pikir saya harus menggunakan "pos" dan cookie ....
ck = {'inUserName': 'USERNAME/EMAIL', 'inUserPass': 'PASSWORD'}
r = requests.post(url, cookies=ck)
content = r.text
q = PyQuery(content)
title = q("title").text()
print title
Saya merasa bahwa saya melakukan kesalahan cookie ... Saya tidak tahu.
Jika tidak masuk dengan benar, judul beranda harus keluar ke "Locationary.com" dan jika ya, itu harus menjadi "Halaman Beranda."
Jika Anda mungkin dapat menjelaskan beberapa hal tentang permintaan dan cookie kepada saya dan membantu saya dalam hal ini, saya akan sangat menghargainya. : D
Terima kasih.
... Ini masih belum benar-benar berhasil. Oke ... jadi inilah yang dikatakan halaman beranda HTML sebelum Anda masuk:
</td><td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_email.gif"> </td>
<td><input class="Data_Entry_Field_Login" type="text" name="inUserName" id="inUserName" size="25"></td>
<td><img src="http://www.locationary.com/img/LocationaryImgs/icons/txt_password.gif"> </td>
<td><input class="Data_Entry_Field_Login" type="password" name="inUserPass" id="inUserPass"></td>
Jadi menurut saya saya melakukannya dengan benar, tetapi hasilnya tetap "Locationary.com"
EDIT ke-2:
Saya ingin tetap masuk untuk waktu yang lama dan setiap kali saya meminta laman di bawah domain itu, saya ingin konten muncul seolah-olah saya sedang masuk.
sumber
Saya tahu Anda telah menemukan solusi lain, tetapi bagi mereka yang seperti saya yang menemukan pertanyaan ini, mencari hal yang sama, dapat dicapai dengan permintaan sebagai berikut:
Pertama, seperti yang dilakukan Marcus, periksa sumber formulir login untuk mendapatkan tiga informasi - url tempat formulir dikirim, dan atribut nama bidang nama pengguna dan kata sandi. Dalam contohnya, mereka adalah inUserName dan inUserPass.
Setelah Anda mendapatkannya, Anda dapat menggunakan sebuah
requests.Session()
instance untuk membuat permintaan posting ke url login dengan rincian login Anda sebagai muatan. Membuat permintaan dari instance sesi pada dasarnya sama dengan menggunakan permintaan biasanya, ini hanya menambahkan ketekunan, memungkinkan Anda untuk menyimpan dan menggunakan cookie, dll.Dengan asumsi upaya login Anda berhasil, Anda dapat menggunakan instance sesi untuk membuat permintaan lebih lanjut ke situs. Cookie yang mengidentifikasi Anda akan digunakan untuk mengotorisasi permintaan.
Contoh
sumber
p = s.post('LOGIN_URL.....
dan kemudianp.text
Biarkan saya mencoba membuatnya sederhana, misalkan URL situsnya adalah http://example.com/ dan misalkan Anda perlu mendaftar dengan mengisi nama pengguna dan kata sandi, jadi kita pergi ke halaman login katakan http: // contoh. com / login.php sekarang dan lihat kode sumbernya dan cari URL tindakan itu akan dalam bentuk tag seperti
sekarang ambil userinfo.php untuk membuat URL absolut yang akan menjadi ' http://example.com/userinfo.php ', sekarang jalankan skrip python sederhana
Saya harap ini membantu seseorang di suatu tempat suatu hari nanti.
sumber
webbrowser
modulprint r.content
salah dia harus menggunakanprint(r.content)
Cari tahu nama input yang digunakan pada formulir situs web untuk nama pengguna
<...name=username.../>
dan kata sandi<...name=password../>
dan ganti dalam skrip di bawah ini. Juga ganti URL untuk menunjuk ke situs yang diinginkan untuk masuk.login.py
Penggunaan dari
disable_warnings(InsecureRequestWarning)
akan membungkam keluaran apa pun dari skrip saat mencoba masuk ke situs dengan sertifikat SSL yang belum diverifikasi.Tambahan:
Untuk menjalankan skrip ini dari baris perintah pada sistem berbasis UNIX, letakkan di direktori, yaitu
home/scripts
dan tambahkan direktori ini ke jalur Anda di~/.bash_profile
atau file serupa yang digunakan oleh terminal.Kemudian buat tautan ke skrip python ini di dalamnya
home/scripts/login.py
Tutup terminal Anda, mulai yang baru, jalankan
login
sumber
The
requests.Session()
solusi dibantu dengan logging menjadi bentuk dengan Perlindungan CSRF (seperti yang digunakan dalam bentuk Flask-WTF). Periksa apakahcsrf_token
diperlukan sebagai bidang tersembunyi dan tambahkan ke payload dengan nama pengguna dan kata sandi:sumber