Bagaimana saya bisa menggunakan alat baris perintah seperti Wget untuk masuk ke situs OpenID?

10

Secara khusus, saya ingin dapat mengunduh halaman tertentu dari profil pengguna saya di berbagai situs Stack Exchange. Namun, saya ingin melakukan ini secara otomatis (menggunakan cronpekerjaan), dari baris perintah dan dalam format yang dapat diuraikan. Saya lebih suka menggunakan Linux untuk ini, tetapi saya bisa mendapatkan akses ke mesin Mac atau Windows jika perlu.

Idealnya, saya ingin menggunakan alat seperti Wget atau cURL untuk mengambil halaman. Saya tidak tahu bagaimana cara melewati login. Saya telah melihat saran yang menyebutkan bahwa Anda dapat masuk melalui Firefox, mengekspor cookie yang relevan dan mengimpornya ke Wget melalui --load-cookiesopsinya. Misalnya di sini dan di sini . Meskipun ini berfungsi jika saya baru saja masuk, tidak setelah beberapa saat. Saya kira karena token ID harus di-refresh.

Jadi, tepat setelah masuk ke SU dan mengekspor cookie saya, saya dapat melakukan:

wget --load-cookies cookies.txt \
  https://superuser.com/users/151431/terdon?tab=responses

Namun setelah beberapa menit, saya mendapatkan kesalahan 404:

wget -O ~/stack/$(date +%s) --load-cookies ~/cookies.txt \
   https://superuser.com/users/151431/terdon?tab=responses

--2013-08-06 04:04:14--  https://superuser.com/users/151431/terdon?tab=responses
Resolving superuser.com (superuser.com)... 198.252.206.16
Connecting to superuser.com (superuser.com)|198.252.206.16|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2013-08-06 04:04:15 ERROR 404: Not Found.

Jadi, bagaimana saya bisa masuk secara otomatis ke situs web yang diaktifkan OpenID dari baris perintah?


PS. Saya pikir ini lebih cocok di sini daripada di aplikasi web karena pertanyaan saya benar-benar tentang aspek baris perintah dan bukan rincian sebenarnya dari halaman web yang dimaksud. Saya kira solusi apa pun akan berlaku untuk semua situs OpenID .

terdon
sumber
3
Sudahkah Anda melihat ke dalam API SE ( api.stackexchange.com ) untuk melihat apakah itu memberikan informasi yang Anda cari? Ini adalah cara resmi untuk mendapatkan akses data terprogram dan menggunakan OAuth untuk mengautentikasi.
heavyd
@ heavyd ya, saya agak berharap saya tidak perlu mempelajari API untuk ini. Jika itu satu-satunya cara saya kira saya harus melakukannya. Dari pandangan sekilas, itu tidak muncul seolah-olah saya dapat mengotomatisasi proses login melalui API sekalipun. Apakah Anda tahu jika saya dapat mengautentikasi dengan cara yang tidak memerlukan input aktif dari saya? Jika saya memahami dokumen dengan benar untuk mendapatkan data yang memerlukan otentikasi saya harus login secara manual.
terdon
Saya belum benar-benar menggunakan API SE, tetapi dalam implementasi OAuth lain saya telah menggunakan Anda login sekali dan Anda diberi token yang bagus tanpa batas.
heavyd

Jawaban:

1

Anda tidak bisa, karena Cookie sangat sering disegarkan. Ini untuk tujuan keamanan, satu-satunya cara Anda bisa melakukan ini adalah seperti yang sudah Anda lakukan. minimal, dari pemahaman saya.

Maarten
sumber
Saya hanya melihat ini adalah pertanyaan yang sangat lama .... Ups.
Maarten
-3

(Re-) Baca halaman manual untuk wgetdan lihat deskripsi untuk --userdan --passwordbendera.

Perhatikan bahwa memasukkan kata sandi sebagai argumen baris perintah tidak disarankan, karena siapa pun yang menjalankannya psdapat melihatnya. Praktik terbaik adalah tidak menyimpan kata sandi mentah di mana pun, tetapi cara terbaik berikutnya adalah memasukkannya ke dalam file yang hanya dapat dibaca oleh pemiliknya.

Jeff N
sumber
3
Bendera yang Anda sebutkan adalah untuk otentikasi berbasis HTTP (dasar, intisari, dll.). SE tidak menggunakan semua ini untuk otentikasi. Mereka mengandalkan penyedia OpenID pihak ketiga untuk otentikasi.
heavyd