Logowanie się skryptu przez formularz

Logowanie się skryptu przez formularz
Michał Olesiak
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:5
0

Witam. chciałem zalogować się do aplikacji ewelink. Założyłem tymczasowe konto demo. więc śmiało można się logować. Napisałem pewien kod ale nie loguje. Chcę potem dodać do zadań crona aby co godzinę wywoływać. Tu jest odpowiedź serwera przy logowaniu przez przeglądarkę. Oczywiście z udanym zalogowaniem się.

Kopiuj
scheme https
host eu-apia.coolkit.cc
filename /v2/user/login
Adres 3.66.241.255:443
Stan 200OK
Wersja HTTP/2
Przesłano 683 B (o rozmiarze 443 B)
Zasada polecającego strict-origin-when-cross-origin
Priorytet żądania Highest

access-control-allow-credentials	true
access-control-allow-origin	https://web.ewelink.cc
content-length	443
content-type	application/json
date	Wed, 14 Dec 2022 10:16:19 GMT
server	awselb/2.0
X-Firefox-Spdy	h2
	
Accept	application/json, text/plain, */*
Accept-Encoding	gzip, deflate, br
Accept-Language	pl,en-US;q=0.7,en;q=0.3
Authorization	Sign pTBgLB1qL0RaUUozITN6EXQnuJCRUMY+qN45GKsLlLI=
Connection	keep-alive
Content-Length	91
Content-Type	application/json
Host	eu-apia.coolkit.cc
Origin https://web.ewelink.cc
Referer	https://web.ewelink.cc/
Sec-Fetch-Dest	empty
Sec-Fetch-Mode	cors
Sec-Fetch-Site	cross-site
TE	trailers
User-Agent	Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0
X-CK-Appid	vcMG8oLY9CMf3CGg7g8tKlvatvPnRw84
X-CK-Nonce	PORLXeyS

A tutaj jest mój kod PHP

Kopiuj
<?php
ini_set( 'display_errors', 'On' ); 
error_reporting( E_ALL );

$random_string= substr(md5(time()), 0, 8);	

	
	
	define('USER_AGENT', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0');	// Set a user agent. 
	define('COOKIE_FILE','/home/pi/ewe.cookie');
	define('LOGIN_FORM_URL', 'https://eu-apia.coolkit.cc/'); 							// 16-06-2022: URL of the login form. 
	

																													
	$continue=true;

$HEADER = array(
		'Content-Type'	=> 'application/json',
		'Accept'	=> 'application/json, text/plain, */*',
		'Accept-language' =>'pl,en-US;q=0.7,en;q=0.3',
		'Referer'=>'https://web.ewelink.cc/',
		'Authorization'=>'Sign pTBgLB1qL0RaUUozITN6EXQnuJCRUMY+qN45GKsLlLI=',
		'X-CK-Appid'=>'vcMG8oLY9CMf3CGg7g8tKlvatvPnRw84',
		'Host'=>'eu-apia.coolkit.cc',
		'X-CK-Nonce'=>$random_string
	);

//	var_dump($HEADER);

	$postValues = array(
		'lang'	=> 'en',
		'countryCode'	=> '+48',
		'password' =>'1Zxcvbnm1,',
		'email'=>'olesiakmtr+35@gmail.com'
	);

	$curl = curl_init();
	curl_setopt($curl, CURLOPT_COOKIELIST, "ALL");
	curl_setopt($curl, CURLOPT_URL, 'https://eu-apia.coolkit.cc/v2/user/login');						// Set the URL that we want to send our POST request to. In this	case, it's the action URL of the login form.
	curl_setopt($curl, CURLOPT_POST, true);									// Tell cURL that we want to carry out a POST request.
	curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($postValues));	// Set our post fields / date (from the array above). 
	curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);						// We don't want any HTTPS errors.
	curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);						// We don't want any HTTPS errors.
	curl_setopt($curl, CURLOPT_COOKIEJAR, COOKIE_FILE);						// Where our cookie details are saved. 
																			// This is typically required for authentication, as the session ID is usually saved in the cookie file.
	curl_setopt($curl, CURLOPT_HTTPHEADER, $HEADER);
	curl_setopt($curl, CURLOPT_COOKIEFILE, COOKIE_FILE); 
	curl_setopt($curl, CURLOPT_USERAGENT, USER_AGENT);						// Sets the user agent. Some websites will attempt to block bot user agents. //Hence the reason I gave it a Chrome user agent.
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);						// Tells cURL to return the output once the request has been executed.
	curl_setopt($curl, CURLOPT_REFERER, LOGIN_FORM_URL);					// Allows us to set the referer header. In this particular case, 
																			// we are fooling the server into thinking that we were referred by the login form.
	curl_setopt ($curl, CURLOPT_SSLVERSION, 1);
	curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);	
	$result=curl_exec($curl);												// Execute the login request.

	if(curl_errno($curl)){
		switch ($http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE)) {
 			case 200:   $continue=true;# OK
 	    				echo  $http_code;
        				break;
			case 302:   $continue=true;# OK
 	    				echo $http_code;
        				break;        				
        	default:    $continue=false;
        				echo $http_code;
		}
	}
	curl_close($curl);

echo $result;

?>
edytowany 4x, ostatnio: Riddle
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Postów:3454
0

Opisz może szczegóły. Masz jakiś błąd? W linijce 39 masz URL podany, skąd go wziąłeś i dlaczego go tam wpisałeś?
W linijce 41 zakomentowałeś przesyłanie danych logowania.
W nagłówku w linijce 22 dodajesz token z udanego logowania przez przeglądarkę, dlaczego?

Michał Olesiak
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:5
0

Otrzymuje taki wynik w przeglądarce {"error":400,"msg":"invalid content-type","data":{}}. Zmienna Sign oraz appid z nagłowka jest przypisana stała do konta uzytkownika. Zmienna nonce z nagłowka jest losowa. Adres url w zależności od regionu ma inny początek. - ten adres jest z api ewelinka.

edytowany 1x, ostatnio: Riddle
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Postów:3454
0

Podajesz Content-Type' => 'application/json' może przyjrzyj się w przeglądarce jakie nagłówki są używane.
Co z tym mailem i hasłem jakie definiujesz i nie przesyłasz? To nie powinno być przesyłane jednak? Same nagłówki i POST?

Michał Olesiak
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:5
0

Oczywiscie ,że wysyłam tylko przy czyszczeniu kodu usunąłem nie ta linijke. Już poprawiłem w kodzie. To chodzi o tą stronę http://web.ewelink.cc

edytowany 1x, ostatnio: Michał Olesiak
CH
  • Rejestracja:ponad 4 lata
  • Ostatnio:prawie 2 lata
  • Postów:449
0

a czy ten ewelink to ma API ktore tu znalazlem tylko nie wiem czy to, to
https://ewelink-api.vercel.app/docs/introduction

Michał Olesiak
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:5
0

Nie wiem na pewno ale gdzieś czytałem, że to nieoficjalne api do wcześniejszej wersji. Tutaj autor dodaje swój kod do obsługi ewelink ale nie mogę znaleźć logowania bo się nie znam na JavaScript https://github.com/skydiver/ewelink-api

jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Postów:3454
0

No dobra, to chcesz logować się do aplikacji przez WWW czy API? Jak WWW to musisz odwzorować to co powiedzmy robi przeglądarka czy też aplikacja. Jak masz Api to korzystaj z API.
Tu np. Ktoś napisał kod imitujący jakiegoś IFona

PHP Ewelink

Jest API do tego? Bo pisałeś:

Michał Olesiak napisał(a):

Adres url w zależności od regionu ma inny początek. - ten adres jest z api ewelinka.

Jeśli jest wklej dokumentację od producenta lub link do niej. Jakieś repozytoria sprzed kilku lat mogą zawierać już niedziałający kod.

edytowany 4x, ostatnio: jurek1980
Michał Olesiak
  • Rejestracja:około 2 lata
  • Ostatnio:około 2 lata
  • Postów:5
0
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)