Curl ، خواندن سایتهای دیگر از سایت خودتان و لوگین

saalek110

Well-Known Member
محتویات فایل:

کد:
# Netscape HTTP Cookie File
# https://curl.haxx.se/docs/http-cookies.html
# This file was generated by libcurl! Edit at your own risk.

esme_site  FALSE  / FALSE  1695235487   esme_cookie  meghdare_cookie
esme_site  FALSE  / FALSE  1684953887    PHPSESSID    dab830da11664c171927b5a26a193db1
اون اسم سایت ، اسم کوکی و مقدار کوکی را موقع پست زدن اینجا من نوشتم ، خوب قبلش اسم سایتی بود که من بهش لوگین کردم که سایت خودم بود و اسم کوکی و مقدار کوکی هم یک چیزهایی بود که من تغییر دادم موقع پست. فقط خواستم قالب کار را ببینید. خودتان به یک سایت لوگین کنید تا نتایج واقعی ببینید. اگر کوکی و سسیون را در php بلد نیستید مطالعه کنید ، چون این تاپیک محل آموزش این دو نیست. این تاپیک فقط اتصال از راه دور است.
 
آخرین ویرایش:

saalek110

Well-Known Member
flower.jpg

پس توانستیم لوگین کنیم به یک سایت واقعی و چیزهایی در فایل ذخیره کردیم.
 

saalek110

Well-Known Member
وقتی یه سایت رو با curl لود میکنم اون عکس هایی که به صورت ناقص ادرس دهی شدن (به این صورت logo.jpg/.) لود نمیشن چکار کنم که اونا هم لود بشن؟
وقتی ادرس یه عکس رو به جای ادرس سایت قرار میدم عکس به صورت یه متن بی مفهوم چاپ میشه برای رفع این مشکل چکار کنم؟
ممنون

سلام
- برای مورد اول دو انتخاب دارید، می توانید از تگ base در HTML استفاده کرده و متناسب با آدرس سایت مورد نظر، قسمت base را به خروجی کدها (با دستورات PHP) اضافه کنید، راه حل دوم استفاده از دستوری شبیه کد زیر است:
PHP:
<?php
if (!preg_match('/src="https?:\/\/"/', $result)){
$result = preg_replace('/src="(.*)"/', "src=\"$MY_BASE_URL\\1\"", $result);
}
?>

با این کد نتیجه دریافتی را می توانید بررسی و آدرس های نسبی مربوط به تصاویر را با حالت مطلق جایگزین نمائید!
- در پاسخ به سوال دوم، تصاویر را نمی توانید مستقیما چاپ کنید، می توانید با تابع آماده زیر تصویر را دریافت و ذخیره کنید:

PHP:
function grab_image($url,$saveto){
$ch = curl_init ($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$raw=curl_exec($ch);
curl_close ($ch);
if(file_exists($saveto)){
unlink($saveto);
}
$fp = fopen($saveto,'x');
fwrite($fp, $raw);
fclose($fp);
}




سالک: این پست شاید ، مطابق روال تاپیک نباشد ، ولی بعدا لازم میشه. می توانید ندیده بگیرید.
 

saalek110

Well-Known Member
من پارامتر هایی رو با curl به یک سایت ارسال میکنم و سایت مقادیری رو بهمراه یک سشن بر میگردونه و در صفحه بعدی اون سشن رو برسی میکنه حالا من چطور میتونم اون سشن رو در php نگه دارم و به صفحه دیگه ای ارسال کنم؟ ایا راهی هست؟
یعنی سشن بجای اینکه در مرورگر نگه داشته بشه در صفحه php نگه داشته بشه، یا به صفحه بعدی انتقال داده بشه
با تشکر

سشن در سمت مرورگر به صورت کوکی ذخیره می شود، لذا باید از پارامترهای CURLOPT_COOKIEJAR و CURLOPT_COOKIEFILE استفاده کنید، مثال:

کد:
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie_name');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie_file.txt');

 

saalek110

Well-Known Member
PHP:
$url = "http://example.com";
$ch = curl_init();
$timeout = 2;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$result = curl_exec($ch);
curl_close($ch);
echo $result;

بحث تعیین زمان هاست.


سالک : این پست شاید در زمان نامناسب ارسال شده ، ندیده بگیرید.
 

saalek110

Well-Known Member
سالک: چند پست نابجا زدم ولی روال قبلی را دنبال خواهیم کرد.
ما می خواهیم بعد لوگین بتوانیم در سایت کار کنیم. پس نیاز است سسیون و کوکی را یاد بگیریم.
 

saalek110

Well-Known Member
تمرین کنید برای لوگین تا حرفه ای شوید.
اول فرم های ساخته شده توسط خودتون را لوگین کنید.


بعد اینکه حرفه ای شدید ، این برنامه را ببینید:
PHP:
<?php
$username="user";
$password="passs";
$url="url";
$cookie="cookie.txt";
$postdata = "username=".$username."&userpass=".$password;
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
echo $result;
curl_close($ch);
?>

منبع:

همون برنامه لوگین ماست با کمی خرت و پرت اضافه.

یک فایل می سازه و چیزهایی درش موقع لوگین ذخیره می کنه.



گردش در سایت بعد لوگین و ثبت کوکی و سشن:

CURLOPT_COOKIEFILE - file name to read cookies from

CURLOPT_COOKIEJAR - file name to store cookies
to

اولی برای خواندن کوکی و دومی برای ثبت کوکی است.
منبع:


سالک : در پستی که نقل قول کردم و بعدش چند پست تا این پست فاصله انداخت ،
ما لوگین کردیم و سشن و کوکی ذخیره کردیم ، حالا می توانیم در سایت گردش کنیم ، چون ما لوگین کرده ایم.
برای این کار ، من CURLOPT_COOKIEJAR را حذف کردم چون نوشته این برای ذخیره کوکی است. و ما قبلا ذخیره کردیم ،
همچنین یوزر و پسورد دیگه نیازی نیست ، و باید حذف بشه ،
پس اون خطی هم که postdata , از یوزر و پسورد می سازه نیاز نیست و همچنین خط زیر هم نیاز نیست.


PHP:
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);

پس خطوطی که مربوط به ارسال یوزر و پسورد بود حدف شد
و این خط را استفاده کردیم :
PHP:
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
به جای خطی که CURLOPT_COOKIEJAR داشت.


همچنین یادتون نره آدرس صفحه لوگین را دیگه به برنامه ندهید و آدرس صفحات دیگر سایت را بدهید.
این خط را هم حذف کنید:
PHP:
curl_setopt ($ch, CURLOPT_POST, 1);
برنامه کامل را من ننوشتم اینجا ، و گفتم چه تغییراتی بدهید تا برنامه گردش را از برنامه لوگین بسازید.
 
آخرین ویرایش:

saalek110

Well-Known Member

با برنامه پست قبل ، سایت ما را لوگین کرده تشخیص داد.

پس از راه دور توانستیم لوگین کنیم و بعدش در سایت توانستیم گردش کنیم.
 
آخرین ویرایش:

saalek110

Well-Known Member

ولی همه سایتها فقط دو تا input برای وارد کردن یوزر و پسورد ندارند.
و چکهای دیگری موقع لوگین می کنند. تلاش می کنیم آنها را عبور کنیم.
 

saalek110

Well-Known Member


شخصی اینجا می خواد ip خودش را عوض کنه با پروکسی ، انگار موفق هم شده.
 

saalek110

Well-Known Member
در اینجا


آموزشی از curl ارائه شده و یک مثال کوکی هم داره.


اگر مثالهای مبتدی و مباحث شروع را می خواهید ، بد نیست نگاهی اینجا بکنید.
 

جدیدترین ارسال ها

بالا