Giriş yaptığım bir siteden indirmek için wget / curl nasıl kullanırım?


46

Giriş yaptığınızda wikipedia'nın bazı bölümleri farklı görünüyor. Giriş yapmış gibi görünecek şekilde kullanıcı sayfalarını silmek istiyorum.

Bu şekilde kullanıcı sayfalarını yazabilmemin bir yolu var mı?

http://en.wikipedia.org/wiki/User:A

bu giriş sayfasıdır:

http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3


Bkz stackoverflow.com/a/21919431/1136018 Google Chrome + cURL kullanarak kolay bir çözüm için
pterojacktyl

Yanıtlar:


50

Kolay yol: Tarayıcınızla giriş yapın ve çerezleri yazması için verin.

En kolay yöntem: genel olarak, belirli bir web sitesinden (giriş yapmış olduğunuz çerezleri) giriş yapmış gibi sayfalar getirmeleri için wget veya curl sağlamanız gerekir .

Firefox kullanıyorsanız, Çerezleri Dışa Aktar eklentisi aracılığıyla yapmanız kolaydır . Eklentiyi yükleyin ve:

  1. Araçlar ... Çerezleri Dışa Aktar'a gidin ve cookies.txtdosyayı kaydedin (dosya adını / hedefini değiştirebilirsiniz).
  2. Bir terminal açın ve kullanmak wgetile --load-cookies=FILENAMEseçeneği, örneğin

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    • İçin kıvrılma , bu kadarcurl --cookie cookies.txt ...

(Bu yanıtı Chrome / Chromium kullanıcıları için güncellemeye çalışacağım)

Zor yol: kullanım bukle (tercihen) veya wget tüm oturumu yönetmek için

  • Bir ayrıntılı nasıl yapılır bu yanıt kapsamı dışındadır, ancak kullandığınız curl ile --cookie-jarveya wget ile --save-cookies --keep-session-cookiesbunları kullanmak sonra giriş çerezler tasarruf, bir siteye giriş yapmak için HTTP / S PUT yöntemi ile birlikte, seçenekler ve bir tarayıcıyı benzetin.
  • Söylemeye gerek yok, bu giriş sayfası için HTML kaynağından geçmeyi gerektirir (giriş alanı adlarını vb. Alın) ve genellikle basit giriş / parola doğrulamanın ötesinde bir şey kullanarak siteler için çalışmak genellikle zordur.
  • İpucu: Bu rotaya giderseniz , en azından kimlik doğrulama adımı için bir web sitesinin mobil versiyonuyla (varsa) başa çıkmak genellikle daha kolaydır .

1
Güzel ipucu. Mobil sitenin kodu genellikle yol temizleyicidir.
Kuzen Kokain

4
Böyle bir cookies.txt nasıl görünüyor?
Frederick Nord

Bu "Çerezleri Dışa Aktar" eklentisi, Firefox’ta eriştiğim her site için bir çerez dosyası oluşturdu. Dolayısıyla, bu cevabı takip ederseniz, tüm çerezlerinizi, hangi siteye isabet edeceğinize sunacaksınız. Bu cevabın güvenlik açığı olduğunu düşünüyorum. Bu sorunu kolayca çözebilirsiniz: grep mydomain cookies.txt > mydomain-cookies.txt
erik.weathers


Yalnızca seçilen çerezleri dışa aktarmak için Firefox'ta Çerez Yöneticisi eklentisini kullanabilirsiniz .
Hans Ginzel

7

Başka bir şey yüklemeden benim için çalışan başka bir kolay çözüm

Bu size doğrudan kabuğunuza yapıştırabileceğiniz, tüm çerez kimlik bilgilerinizi içeren bir komut verecektir.

curl 'https://mysite.test/my-secure-dir/picture1.jpg' \ 
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'

İstediğinizi almak için komuttaki URL'yi değiştirebilirsiniz.


4

CURL ile çerezleri her iki yönde de kullanmak gerçekten kolaydır.

curl www.target-url.com -c cookie.txtdaha sonra cookie.txt adlı bir dosyayı kaydedecektir. Ancak giriş yapmalısınız, bu nedenle --data'yı aşağıdaki gibi argümanlarla kullanmanız gerekir curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt. Kaydedilmiş bir çerez aldığınızda, şunu gönderebilirsiniz: curl www.target-url.com/?user-page.php -b cookie.txt

Kaydetmek ve göndermek için -c (--cookie) veya -b (--cookie-jar) kullanın.

Not1: cURL CLI'yı kullanmak PHP'den çok daha kolay ve belki daha hızlıdır;)

Son içeriği kaydetmek > filename.htmliçin cURL komutunuza kolayca ekleyebilirsiniz , ardından tam html kodunu kaydedin.

"Full" hakkında Not2: cURL ile javascript'i oluşturamazsınız, sadece kaynak kodunu alın.


1
-Xparametresi "post post" anlamına gelir, ancak --data=xxx -Xkullanımı kesindir, bu nedenle kesinlikle kaldırabilirsiniz.
erm3nda

-b,read cookie
Timo

3

Bu sorulara hala ilgi duyanlar için, CurlWGet adında , tek bir tıklamayla kimlik doğrulama önlemleri ile bir istek wget/ curlistek oluşturmanıza izin veren çok kullanışlı bir Chrome uzantısı var . Bu uzantıyı yüklemek için aşağıdaki adımları izleyin:

  1. Uzantıyı Chrome Web Mağazasından yükleyin .
  2. İndirmek istediğiniz web sayfasına gidin.
  3. İndirmeye başla.
  4. Uzantı sizin için bir link oluşturacaktır.

Keyfini çıkarın!


2

Wget’li Firefox Çerezleri adlı blog yazısı , Firefox’un çerezlerini sakladığı sqlite veri dosyasına nasıl erişileceğini gösterir. Bu şekilde, çerezleri wget ile kullanmak üzere manuel olarak dışa aktarmaya gerek kalmaz. Yorum, oturum çerezleriyle çalışmadığını gösteriyor, ancak denediğim siteler için iyi çalıştı.


2

Firefox için cliget bir göz atın .

İndirmek üzereyken, son indirme iletişim kutusunda, indirme işlemini curl komut satırı olarak panoya kopyalama seçeneğini elde edebilirsiniz.


1

Bunu denedin mi?

wget --user=username --password=password http://en.wikipedia.org/wiki/User:A

evet - maalesef işe yaramadı = (
user784637

6
Not: Bu sözdizimi, web sayfası tabanlı kimlik doğrulaması için değil, yalnızca temel HTTP kimlik doğrulaması için çalışır (tarayıcınız özel bir Kullanıcı Adı / Şifre iletişim kutusu açar).
ish

Temel HTTP kimlik doğrulaması URL'si admin: admin@www.url.com, ancak @izx'in dediği gibi, temel HTTP tarayıcı özelliğidir, PHP programlama ya da kod değildir.
Htaccess

Oy vermedi, ancak bu kimliğini doğrulamak için iyi bir yol değil: Kazara böyle bir betiği herkese açık hale getirirseniz, insanlar şifrenizi kullanabilir.
Willem Van Onsem

1
Düşüşlerin nesi var? Tüm cevaplar bir cevap olmayabilir ama yine de bir cevap olabilir.
15’te

1

Gibi bir şey deneyin:

wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/

Ayrıca bu bağlantıya bakınız:

Bu web sayfasını wget ile nasıl indirebilirim?


Tıpkı herhangi bir çıktı gibi. > filename.htmlÇıktıyı geçerli dizine kaydetmek veya tam bir dosya yolu koymak için kullanın . Bu hem Linux hem de Windows sistemleri için geçerlidir.
erm3nda

Yani, wget cURL veya viceversa gibi birçok özelliğe sahip olduğunu görüyorum. POST yapabilir, böylece web sitelerine giriş yapabilir. İlginç.
erm3nda

1

Daha karmaşık web sitesi tabanlı girişler için bir Python betiği veya bir tarayıcıyı taklit eden bir modül kullanmayı düşünmelisiniz, yerine veya yerine http://wwwsearch.sourceforge.net/mechanize/ .curlwget

Bu şekilde oturum çerezleri otomatik olarak işlenir, bağlantıları izleyebilir ve oturum açma formlarını doldurabilir ve böylece web tarayıcınızı kullanıyormuş gibi oturum açma işleminde kendiniz "komut dosyası" yazabilirsiniz.


Evet, makineleştirmeyi kullanmak gerçekten güzel olabilir. Ayrıca (ve asıl olarak) Perl'de mevcut, eğer daha fazla çay içiyorsanız.
andol
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.