Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> CURL i Basic Auth
Gaths
post 16.04.2016, 11:08:22
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 16.04.2016

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


Witam, chce zalogować się za pomocą php na Serwer OSCam, po wpisaniu adresu w przeglądarce wyskakuje mi owe okno:


Wujek google powiedział mi że to Basic Auth czy jakoś tak, więc znalazłem sposób na zalogowanie się przy pomocy prostego Get Request poprzez wpisanie w pasku adresowym przeglądarki http://login:password@host i to działa, nie wyskakuje mi okienko logowania wchodzę na serwer . Zatem prosta sprawa
Kod
<?php
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,'http://login:password@host');
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
    $output=curl_exec($ch);
    curl_close($ch);
    echo $output;
?>


Niestety nie zadziałało, serwer odpowiedział "Access denied." nie wiem o co chodzi, testowałem chyba wszystkie możliwe zapytania za pomocą CURL które znalazłem w google, takie i tym podobne:
Kod
<?php
    $login = 'login';
    $password = 'password';
    $url = 'host';
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
    $result = curl_exec($ch);
    curl_close($ch);  
    echo($result);
?>


Nie wiedziałem co robię źle więc napisałem sobie prosty skrypt, aby sprawdzić czy w tym przypadku zadziała:
Kod
<?php

if($_SERVER['PHP_AUTH_USER'] !== 'root'  ||  $_SERVER['PHP_AUTH_PW'] !== 'root')
{
    header("WWW-Authenticate: Basic realm=\"thetutlage\"");
    header("HTTP\ 1.0 401 Unauthorized");
    echo  "error";
    exit;
}

?>

<html>
<head></head>
<body> ok </body>
</html>


I problem jest następujący, bo przy autoryzacji z testowym skryptem CURL dział i serwer daje odpowiedz "ok".
Czy ktos mi może pomuc zalogować się przez php do tego SOCam'a o bo mi się już wyczerpały pomysły
Go to the top of the page
+Quote Post
redeemer
post 16.04.2016, 11:18:47
Post #2





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Prawdopodobnie auth to nie "basic" ale np "digest".

Spróbój ustawić CURLOPT_HTTPAUTH na CURLAUTH_DIGEST (albo CURLAUTH_ANY)
https://secure.php.net/manual/pl/function.curl-setopt.php

Ten post edytował redeemer 16.04.2016, 11:19:45


--------------------
Go to the top of the page
+Quote Post
Gaths
post 16.04.2016, 11:32:10
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 16.04.2016

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


Cytat(redeemer @ 16.04.2016, 12:18:47 ) *
Prawdopodobnie auth to nie "basic" ale np "digest".

Spróbój ustawić CURLOPT_HTTPAUTH na CURLAUTH_DIGEST (albo CURLAUTH_ANY)
https://secure.php.net/manual/pl/function.curl-setopt.php



Jak pisałem wcześniej sprawdzałem chyba wszystkie możliwe metody:
CURLAUTH_ANY
CURLAUTH_ANYSAFE
CURLAUTH_BASIC
CURLAUTH_DIGEST
CURLAUTH_DIGEST_IE
CURLAUTH_GSSNEGOTIATE
CURLAUTH_NONE
CURLAUTH_NTLM
CURLAUTH_ONLY
Go to the top of the page
+Quote Post
redeemer
post 16.04.2016, 11:38:06
Post #4





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Cytat
...
Q: Authentication does not work when trying to authenticate via my own program/library xy. A: Make sure that your program/library uses digest authentication and NOT basic authentication. Wget also seems to have it's bugs with digest authentication so use curl instead. An example usage of curl is

curl --verbose --digest -u <user>:<password> "http://user:password@myserver.dyndns.org:12345/oscamapi.html?part=status"


http://www.streamboard.tv/oscam/wiki/WebIf


--------------------
Go to the top of the page
+Quote Post
Gaths
post 16.04.2016, 11:50:33
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 16.04.2016

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


Cytat(redeemer @ 16.04.2016, 12:38:06 ) *
curl --verbose --digest -u <user>:<password> "http://user:password@myserver.dyndns.org:12345/oscamapi.html?part=status"


Kod
        $ch = curl_init();
        curl_setopt($ch,CURLOPT_URL,'http://user:password@host/oscamapi.html?part=status');
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);    
        $output=curl_exec($ch);
        curl_close($ch);
        echo $output;


Dalej to samo
Go to the top of the page
+Quote Post
redeemer
post 16.04.2016, 12:03:18
Post #6





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Hm, no to ciężko zdiagnozować to "na odległość". Co curl (ten z cli i z --verbose) wypluwa? Czy login/hasło w konfiguracji webif na oscam nie ma jakiś dziwnych znaków?

Ten post edytował redeemer 16.04.2016, 12:03:37


--------------------
Go to the top of the page
+Quote Post
Gaths
post 16.04.2016, 12:06:54
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 16.04.2016

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


Cytat(redeemer @ 16.04.2016, 13:03:18 ) *
Co curl (ten z cli i z --verbose) wypluwa?

Nie za bardzo rozumiem questionmark.gif


Cytat(redeemer @ 16.04.2016, 13:03:18 ) *
Czy login/hasło w konfiguracji webif na oscam nie ma jakiś dziwnych znaków?


Nie, nie ma znaków specjalnych
Go to the top of the page
+Quote Post
redeemer
post 16.04.2016, 12:18:06
Post #8





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Cytat(Gaths @ 16.04.2016, 13:06:54 ) *
Nie za bardzo rozumiem questionmark.gif

Kod
curl --verbose --digest -u <user>:<password> "http://user:password@myserver.dyndns.org:12345/oscamapi.html?part=status"
To jest zwykle polecenie, które wklepujesz w terminal (linux/osx/bsd/etc, na windowsie nie wiem jak z curlem). Po wpisaniu dostaniesz zwrotke i curl wyświetli dokładnie co się dzieje (flaga --verbose).

  1. $ch = curl_init();
  2. curl_setopt($ch, CURLOPT_URL, 'http://'.$login.':'.$password.'@HOST/oscamapi.html?part=status');
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  4. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
  5. curl_setopt($ch, CURLOPT_USERPWD, "$login:$password");
  6. $output=curl_exec($ch);
  7. curl_close($ch);
  8. echo $output;
A takie coś? (ewentualnie można jeszcze sprawdzić CURLOPT_URL bez login i pass)



--------------------
Go to the top of the page
+Quote Post
Gaths
post 6.05.2016, 19:43:55
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 16.04.2016

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


Cytat(redeemer @ 16.04.2016, 13:18:06 ) *
A takie coś? (ewentualnie można jeszcze sprawdzić CURLOPT_URL bez login i pass)

dalej nic ;(

a na linuxie działa, zwraca kod strony .
Kod
curl --digest "http://user:password@host/"



Witam ponownie, dalej się z tym mecze więc postawiłem testowy serwer pod adresem 83.30.252.156:1234, login root hasło root, może komuś się uda zalogować przez CURL, był bym wdzięczny za pomoc.
Go to the top of the page
+Quote Post
markuz
post 6.05.2016, 20:10:20
Post #10





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  1. $ch = curl_init();
  2. curl_setopt_array($ch, array(
  3. CURLOPT_VERBOSE => true,
  4. CURLOPT_URL => '83.30.252.156',
  5. CURLOPT_PORT => '1234',
  6. CURLOPT_USERPWD => 'root:root',
  7. CURLOPT_HTTPAUTH => CURLAUTH_DIGEST,
  8. CURLOPT_NOBODY => true
  9. ));
  10.  
  11. curl_exec($ch);
  12.  
  13. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  14. curl_setopt($ch, CURLOPT_HEADER, 1);
  15. curl_setopt($ch, CURLOPT_HTTPGET, 1);
  16.  
  17. $output = curl_exec($ch);
  18. echo $output;


Musisz robić 2 requesty, 1 to autoryzacja a 2 to pobranie zawartości.
Źródło: http://stackoverflow.com/questions/1302672...b=votes#tab-top


--------------------
Go to the top of the page
+Quote Post
LowiczakPL
post 6.05.2016, 20:40:19
Post #11





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


a to moje rozwiązanie

  1. <?php
  2. $login = 'root';
  3. $password = 'root';
  4. $url = '83.30.252.156:1234';
  5.  
  6. $ch = curl_init();
  7. curl_setopt($ch, CURLOPT_URL, $url);
  8. curl_setopt($ch, CURLOPT_USERPWD, $login.':'.$password);
  9. curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
  10. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  11. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  12. curl_setopt($ch, CURLOPT_TIMEOUT, 4);
  13. $strona = curl_exec($ch);
  14. curl_close($ch);
  15.  
  16. echo $strona;
  17.  
  18. ?>


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post
Gaths
post 7.05.2016, 15:46:17
Post #12





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 16.04.2016

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


Panowie w obu przypadkach zwraca mi coś takiego
Kod
TTP/1.0 401 Unauthorized Server: webserver/1.0 Date: Sat, 07 May 2016 06:34:10 GMT WWW-Authenticate: Digest algorithm="MD5", realm="Forbidden", qop="auth", opaque="72fa9e76ec765ad2407da3c88ee6e460", nonce="8c19fc7db51115405ff02125f85b6822" Content-Type: text/html Cache-Control: no-store, no-cache, must-revalidate Expires: Sat, 10 Jan 2000 05:00:00 GMT Content-Length: 15 Last-Modified: Sat, 07 May 2016 06:34:10 GMT ETag: "753868328" Connection: close Access denied.


Serwer stoi teraz na tym adresie "83.30.248.233:1234"

Dobra znalazłem gdzie tkwi problem, chodzi o windowsowskiego xampp'a, coś jest nie tak z nim albo z jego configami bo na apache2 z php na debiania działa mi poprawnie.
Ktoś może pomoc mi z konfiguracją tego php w xammp questionmark.gif?

Niby jest dodany plugin CURL do php


Ktoś ma jakiś pomysłquestionmark.gif

Ten post edytował Gaths 7.05.2016, 07:45:02
Go to the top of the page
+Quote Post
LowiczakPL
post 9.05.2016, 06:03:51
Post #13





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

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


A co pokazują logi dostępu i błędów w momencie kiedy Tu się logujesz ?


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 3.05.2025 - 04:05