DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   Sva početnička pitanja (http://www.devprotalk.com/forumdisplay.php?f=40)
-   -   Automatsko logovanje (http://www.devprotalk.com/showthread.php?t=5065)

orangem 08. 04. 2008. 21:58

Automatsko logovanje
 
Da li neko ima dobar prijedlog, kako bi bilo najbolje da se automatski pristupi odredjenom sajtu, koristeci korisnicko ime i lozinku. A zatim da se pristupi nekoj stranici, unutar tog sajta i da se procita njen sadrzaj?

Dušan Dželebdžić 08. 04. 2008. 22:25

http://username:password@www.sajt.com/strana.html je prvo što mi pada na pamet, sa ovim obimom detalja koje si dao.

dinke 08. 04. 2008. 22:30

Pogledaj moju Curl klasu.

http://www.dinke.net/blog/2006/09/12...p-client-2/sr/

Dakle, u najjednostavnije slucaju nesto tipa:

PHP kôd:

require_once("curl_http_client.php");

$curl = &new Curl_HTTP_Client();
//pretend to be IE6 on windows
$useragent "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)";
$curl->set_user_agent($useragent);

//where to store cookies
$cookies_file "/tmp/cookies.txt";
$curl->store_cookies($cookies_file);

$curl->set_referrer("http://www.nekisajt.com/login.php");
$post_data = array();
$post_data['login'] = 'pera';
$post_data['pass'] = 'joe';
$post_data['nesto_trece'] = 'jos jedna post varijabla';
//...
$html_data $curl->send_post_data("http://www.nekisajt.com/login.php"$post_data);

//parsujes recimo sa preg_match $html_data i uzmes sta ti treba
... 

Inace, toplo preporucujem "tamper data" extenziju, odlicna je za pracenje sta se od post varijabli salje sa strane na stranu.

orangem 08. 04. 2008. 22:33

U pitanju je obicna login forma;
<input type="text" name="username">
<input type="password" name="pass">

Method = POST

jablan 08. 04. 2008. 22:35

Ako koristiš Ruby (što je malo verovatno), imaš izvanrednu biblioteku Mechanize.

Sledeći primer uploaduje sliku na Flickr:
Kôd:

require 'rubygems'
 require 'mechanize'

 agent = WWW::Mechanize.new

 # Get the flickr sign in page
 page  = agent.get('http://flickr.com/signin/flickr/')

 # Fill out the login form
 form  = page.forms.name('flickrloginform').first
 form.email = ARGV[0]
 form.password = ARGV[1]
 page  = agent.submit(form)

 # Go to the upload page
 page  = agent.click page.links.text('Upload')

 # Fill out the form
 form  = page.forms.action('/photos_upload_process.gne').first
 form.file_uploads.name('file1').first.file_name = ARGV[2]
 agent.submit(form)

Obratite pažnju na liniju "page = agent.click page.links.text('Upload')", koja "klikće" na link na stranici koji sadrži tekst Upload. Kudikamo lakše nego ručno petljanje sa kukijima... ;)

dinke 08. 04. 2008. 23:20

Citat:

Originalno napisao orangem (Napišite 53432)
U pitanju je obicna login forma;
<input type="text" name="username">
<input type="password" name="pass">

Method = POST

onda samo zameni
PHP kôd:

$post_data['login'] = 'pera';
$post_data['pass'] = 'joe'

u mom primeru sa

PHP kôd:

$post_data['username'] = 'pera_ili_sta_vec';
$post_data['password'] = 'ovde_ide_pass'

i imaces sadrzaj strane u $html_data (naravno promeni i link za poziv strane umesto http://www.nekisajt....).

Nakon uspesnog logovanja (a to mozes proveriti sa jednim strpos), neku drugu stranu unutar sajta ucitas sa:

PHP kôd:

$html_neke_strane $curl->fetch_url("http://www.nekisajt.com/neka_strana"); 

Inace, posto ovo radim gotovo svakodneno (ukljucujucu "unofficial" API za regovanje nekih cctld domena), mozda napisem i jedan tutorijal kako se to radi ;)

ivanhoe 09. 04. 2008. 02:51

Dinke bre, a secret handshakes i tajne zanata, nemoj bre da nam kvaris posao :)))

orangem 09. 04. 2008. 15:35

Dinke, hvala ti. Ovo radi super!

mega023 11. 04. 2008. 22:49

Citat:

Originalno napisao dinke (Napišite 53434)
onda samo zameni
PHP kôd:

$post_data['login'] = 'pera';
$post_data['pass'] = 'joe'

u mom primeru sa

PHP kôd:

$post_data['username'] = 'pera_ili_sta_vec';
$post_data['password'] = 'ovde_ide_pass'

i imaces sadrzaj strane u $html_data (naravno promeni i link za poziv strane umesto http://www.nekisajt....).

Kada uradim post na php fajl u njemu nema klasicnog output-a vec ima header(Location: ...) tj. redirekciju na odredjeni link, pa mi je output od curl-a uvek string(0) "" i onda ne vidim da li je "uspelo" ili ni je...
Moze li se iscitati taj header ili "pratiti" taj url?

dinke 11. 04. 2008. 23:59

^Verovatno ti je output zapravo boolean false posto curl klasa sama handluje server side redirekcije. Prema tome, uradi var_dump izlaza da vidis sta ti vraca (most likely false jer nesto nisi uradio kako treba).


Vreme je GMT +2. Trenutno vreme je 12:10.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.