Bir OpenID sitesine giriş yapmak için Wget gibi bir komut satırı aracını nasıl kullanabilirim?


10

Özellikle, çeşitli Stack Exchange sitelerinde kullanıcı profilimden belirli sayfaları indirebilmek istiyorum. Ancak bunu cronkomut satırından ve ayrıştırılabilir biçimde otomatik olarak (bir iş kullanarak ) yapmak istiyorum . Bunun için Linux kullanmayı tercih ederim, ancak gerekirse bir Mac veya Windows makinesine erişebilirim.

İdeal olarak, sayfaları getirmek için Wget veya cURL gibi bir araç kullanmak istiyorum . Gerçi günlüğü nasıl geçeceğimi bilmiyorum. Firefox üzerinden giriş yapabileceğiniz, ilgili çerezi dışa aktarabileceğiniz ve --load-cookiesseçeneği ile Wget'e aktarabileceğinizi belirten öneriler gördüm . Örneğin burada ve burada . Ben yeni giriş yaptıysam bu çalışır, ancak bir süre sonra değil. Sanırım kimlik jetonunun yenilenmesi gerekiyor.

Yani, SU'ya giriş yaptıktan ve çerezlerimi dışa aktardıktan hemen sonra şunları yapabilirim:

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

Birkaç dakika sonra 404 hatası alıyorum:

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.

Peki, OpenID etkin bir web sitesine komut satırından nasıl otomatik olarak giriş yapabilirim?


PS. Sorumun söz konusu web sayfasının gerçek ayrıntıları değil, gerçekten komut satırı boyutu hakkında olması nedeniyle, bu web uygulamalarından daha uygun olduğunu düşünüyorum. Herhangi bir çözümün tüm OpenID siteleri için geçerli olacağını tahmin ediyorum .


3
Aradığınız bilgileri sağlayıp sağlamadığını görmek için SE API'ye ( api.stackexchange.com ) baktınız mı? Bu, verilere programlı erişim sağlamanın resmi yoludur ve kimlik doğrulaması için OAuth kullanır.
heavyd

@heavyd evet, bunun için API'yi araştırmak zorunda kalmayacağımı umuyordum. Sanırım tek yol bu olmalıydı. Bir cursory bakışta, ben olsa API üzerinden giriş işlemini otomatikleştirebilir gibi görünmüyor . Benden aktif girdi gerektirmeyen bir şekilde kimlik doğrulaması yapıp yapamayacağımı biliyor musunuz? Kimlik doğrulaması gerektiren verileri elde etmek için dokümanları doğru
anlarsam

Aslında SE API'yi kullanmadım, ancak diğer OAuth uygulamalarında bir kez giriş yaptım ve size süresiz olarak iyi bir jeton verildi.
heavyd

Yanıtlar:


1

Yapamazsınız, çünkü Çerezler sık ​​sık yenilenir. Bu güvenlik amaçlıdır, bunu yapmanın tek yolu zaten yaptığınız yöntemdir. en azından benim anlayışımdan.


Sadece bunun gerçekten eski bir soru olduğunu gördüm .... Hata.
Maarten

-3

(Yeniden-) Man sayfasını wgetokuyun ve --userve --passwordbayraklarının açıklamalarına bakın .

Bir parolayı komut satırı argümanı olarak iletmenin, çalışan herkesin psgörebileceği şekilde önerilmediğini unutmayın . En iyi uygulama, ham şifreleri hiçbir yere kaydetmemek, ancak bir sonraki en iyi yöntem, yalnızca sahibin okuyabileceği bir dosyaya koymaktır.


3
Bahsettiğiniz bayraklar HTTP tabanlı kimlik doğrulaması (temel, özet vb.) İçindir. SE, kimlik doğrulaması için bunlardan hiçbirini kullanmaz. Kimlik doğrulaması için üçüncü taraf bir OpenID sağlayıcısına güveniyorlar .
heavyd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.