Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> CURL - Wysyłanie danych tak aby skrypt odebrał je jako POST a nie GET., CURL - Wysyłanie danych tak aby skrypt odebrał je jako POST a nie GET.
akurczyk
post
Post #1





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


Witam
Pisze skrypt do darmowego, automatycznego pobierania plików z serwisu RapidShare.
  1. <?php
  2. $hand = curl_init();
  3. curl_setopt($hand, CURLOPT_URL, "http://rapidshare.com/files/180164458/Malcolm_In_The_Middle_-_1x01_-_Pilot.part1.rar");
  4. curl_setopt($hand, CURLOPT_RETURNTRANSFER, true);
  5. $output = curl_exec($hand);
  6. curl_close($hand);
  7. preg_match("/<form id=\"ff\" action=\"(.*)\" method=\"post\">/S", $output, $matches);
  8. $hand2 = curl_init();
  9. curl_setopt($hand2, CURLOPT_URL, $matches[1]);
  10. curl_setopt($hand2, CURLOPT_POST, true);
  11. curl_setopt($hand2, CURLOPT_POSTFILEDS, "dl.start=Free");
  12. curl_setopt($hand2, CURLOPT_RETURNTRANSFER, true);
  13. $output2 = curl_exec($hand2);
  14. curl_close($hand2);
  15. echo $output2;
  16. ?>

Skrypt nie działa, bo docelowy skrypt musi odebrać zmienną "dl.start=Free" jako POST a nie GET. W manualu nie udało mi się znaleźć opcji która umożliwiła by ni to umożliwiła. Co mam zrobić aby wysłać dane GETem a nie POSTem? (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Ten post edytował akurczyk 4.07.2009, 23:21:32
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
R4D3K
post
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

Ostrzeżenie: (0%)
-----


Aby wysłać dane GET poprostu je doklejasz do linka:
  1. <?php
  2. curl_setopt($hand, CURLOPT_URL,"http://example.com?nazwa_zmiennej=wartosc&nazwa_zmienej2=wartosc2");
  3. ?>


Ten post edytował R4D3K 5.07.2009, 00:08:10
Go to the top of the page
+Quote Post
akurczyk
post
Post #3





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


To dlaczego mój skrypt nie działa?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
  1. <form id="ff" action="http://rs286.rapidshare.com/files/180164458/Malcolm_In_The_Middle_-_1x01_-_Pilot.part1.rar" method="post">
  2. <input name="dl.start" value="Free" type="hidden">
  3. <img src="/img2/dl_langsam.gif">
  4. <br>
  5. <input value="Free user" type="submit">
  6. </form>
Go to the top of the page
+Quote Post
R4D3K
post
Post #4





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

Ostrzeżenie: (0%)
-----


No teraz to ostro zamotałeś
Cytat
(...) skrypt musi odebrać zmienną "dl.start=Free" jako POST a nie GET (...)
Co mam zrobić aby wysłać dane GETem a nie POSTem?

Zdecyduj się w końcu czym chcesz wysłać.
Jeśli chodzi o wysyłanie GETem to te dane wysyła się za pomocą URLA index.php?nazwa_zmiennej=wartosc

Cytat
To dlaczego mój skrypt nie działa?

Zazwyczaj każdy zabezpiecza się przed botami, takżę użyj liveHTTPHeaders żeby zobacz czego wymyga rapid
Go to the top of the page
+Quote Post
Pawel_W
post
Post #5





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


ustaw w cURL referer, może to pomoże objeść rapida
Go to the top of the page
+Quote Post
R4D3K
post
Post #6





Grupa: Zarejestrowani
Postów: 144
Pomógł: 12
Dołączył: 16.03.2007

Ostrzeżenie: (0%)
-----


albo : CURLOPT_FOLLOWLOCATION
Tylko zamiast myśleć skorzystaj z mojego sposobu ściągasz livehttpheaders i wchodzisz na rapida odpalasz plugin Narzędzia=>livehttpheaders zaznaczasz Capture i ściągasz dany zasób, czy co tam chcesz zrobić, i widzisz w oknie pluginu co zostało przesłane GETem,POSTem, czy jest przekierowanie jaki user agent, charset,refer i inne rzeczy.
Dalej chyba nie musze tlumaczyzc.

Ten post edytował R4D3K 5.07.2009, 22:38:22
Go to the top of the page
+Quote Post
akurczyk
post
Post #7





Grupa: Zarejestrowani
Postów: 201
Pomógł: 5
Dołączył: 15.07.2008
Skąd: Kłodzko

Ostrzeżenie: (10%)
X----


Już sobie z tym poradziłem. Zrobiłem literówkę, a curl nie wywalił żadnego błędu więc pomyślałem że to problem z rapidem. Mam jeszcze jeden problem, skrypt którego kod jest poniżej, wyświetla link do pliku, jednak jest on aktywny dopiero po 60 sekundach. Jak zrobić aby php odczekało te 60 sekund, zanim pobierze ten plik. Czy nie będzie wtedy jakiegoś problemu z maksymalnym czasem pobierania(przeglądarka,apache)/parsowania(php) strony??? Co do pobierania plików, to chciałem używć wgeta (ten skrypt ma automatycznie pobierać pliki z rapida na Linuksie).
  1. <?php
  2. $hand = curl_init();
  3. curl_setopt($hand, CURLOPT_URL, "http://rapidshare.com/files/180164458/Malcolm_In_The_Middle_-_1x01_-_Pilot.part1.rar");
  4. curl_setopt($hand, CURLOPT_RETURNTRANSFER, true);
  5. $output = curl_exec($hand);
  6. curl_close($hand);
  7. preg_match("/<form id=\"ff\" action=\"(.*)\" method=\"post\">/S", $output, $matches);
  8. $hand2 = curl_init();
  9. curl_setopt($hand2, CURLOPT_URL, $matches[1]);
  10. curl_setopt($hand2, CURLOPT_POST, true);
  11. curl_setopt($hand2, CURLOPT_POSTFIELDS, "dl.start=Free");
  12. curl_setopt($hand2, CURLOPT_RETURNTRANSFER, true);
  13. $output2 = curl_exec($hand2);
  14. curl_close($hand2);
  15. preg_match("/<form name=\"dlf\" action=\"(.*)\" method=\"post\">/S", $output2, $matches2);
  16. echo $matches2[1];
  17. ?>


Ten post edytował akurczyk 6.07.2009, 11:59:00
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Czy nie będzie wtedy jakiegoś problemu z maksymalnym czasem pobierania(przeglądarka,apache)/parsowania(php) strony?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Czas operacji IO nie jest wliczany do czasu wykonywania skryptu. Z tego, co pamiętam, to czas żądań cURL też się do tego nie wlicza.

A jeśli chodzi o to - trzeba by było chyba zwiększyć limit czasu działania skryptu i sleep" title="Zobacz w manualu PHP" target="_manual odczekać.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 14:38