PDA

View Full Version : سوال: آموزش کامل curl یا شبیه سازی لوگین کردن به یک سایت ؟؟؟



$ M 3 H R D A D $
جمعه 07 خرداد 1389, 15:43 عصر
سلام به همه برنامه نویسا حرفه ای ها مبتدی ها آشفته ها ( مثل من )

دوستای من سرچ کردم خیلی هم گشتم اما خوب با اینکه تست کردم اما نتیجه نگرفتم خواهشن توضیحات من و بخونید و هرچی میدونید کمکم کنید

من و یک سری از دوستام مسئول انجمن علمی کامپیوتر دانشگاه خودمون که دانشگاه ساری و به دست گرفتیم

اولین کاری که میخوایم بکنیم اینه که عضویت و اینترنتی کنیم تا به بچه ها حتی تو تابستان دسترسی داشته باشیم

واسه این کارمون چندتا مشکل داریم

که مهم ترینش نداشتن اطلاعات کامل برنامه نویسی چون من تازه پی اچ پی و شروع کردم
مشک در ثبت نام اینه که ما میخوایم دردسر اسکن عکس و شناسنامه و اینارو حذف کنیم برای ثبت نام کننده ها

بعدی اینه که مابرامون ملاک که خود فرد که داره ثبت نام میکنه همون فردی باشه که شماره دانشجویی و به عنوان نام کاربری وارد میکنه
در واقع مثلا من شماره دانشجویی دوست و اسم و شماره شناسنامه و ایناره درم اما دوستم نیستم که !
واس این احراز هویت برامون شدید مهمه
در واقع میخوایم پرتال راه اندازی کنیم

دانشگاه ما دوتا سرور داره واسه ورود به پنل دانشجویی که دوتا آدرس :


http://217.219.175.74/
http://217.219.175.74/


کا دانشجو وارد میشه و مشخصات خودشو وارد میکنه و اگه درست بد وارد پنل میشه که توش مشخصات فردی و رشته و مقطع نوشته مثل عکس های زیر ه مشخصات من نوشته :


http://p30programming.com/test/up/2.jpg
http://p30programming.com/test/up/1.jpg



میخوام تو سایت انجمن یک فرم بزارم که 2 تا فیلد داره به نام شماره دانشجویی و کلمه عبور

این شماره دانشجویی و کلمه عبور و بگیره و تو سرور بفرسته با سایت دانشگه یعنی عمل :

رفتن به سایت دانشگاه http://217.219.175.74/Portal/WUC/Security/loginPage.aspx
یا اون یکی سرور http://217.219.175.73/login.aspx
و وارد کردن شماره دانشجویی و کلمه عبور و وارد کنه
و بعد از اینکه ورد سایت شد یا اینکه

صفحه http://217.219.175.74/University.aspx که صفحه اصلی سایت باز شد
یا : http://217.219.175.73/Default.aspx
این صفحه و توی یجایی ذخیره کنه تا ما توی صفحه بگردیم و نام نام خانوادگی شماره دانشجویی مقطع و .. در بیاریم.


انجام بد...

با asp request دادیم اما نتیجه نگرفتیم

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

من موفق نشدم براش مقدار پست کنم حتی تو یک پروژه کوچیک خیلی آشفته ام که همش شکسن میخورم


http://127.0.0.1/check.php


این صفح و من نوشتم که اطلاعات و از طریق پست میگیره و کدش اینه :



$
u = @$_POST['user'];
$p = @$_POST['pass'];
if($u=='m2soft' && $p=='123456')
echo "login";
else
echo "error";




با این همه جستجو حتی نتونستم این و تست کنم که با یک فرم دیگه مقدار بدم و ببینم چه اروری میده یا وارد میشه

یک کلک دیگه خواستم بزنم اینکه یک فریم درست کنم که توش سایت داشگاه باز بشه
و دانشجو اطلاعاتشو وارد کنه و تو یک حلق از فرم اصلی چک کنه که اگه url فریم تغییر کرد و به صفحه default.aspx رسید
یعنی وارد شد فریم قفل بشه و از کل صفح که شامل فریم و فرم اصلی ذخیره بشه تا بشه اطلاعات و در آورد اما اونم نتونستم
داره بدم میاد از برنامه نویسی خیلی سعی کردم اما نتونستم

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

$ M 3 H R D A D $
جمعه 07 خرداد 1389, 15:45 عصر
راستی یکی اینجا تو انحمن از سوکت پروگرامینگ گفت و پورت 80
دوستم همونی که قبلا تونست این کار و انجام بده قبلا همیک کارو کرده بود یعنی با پورت 80

میشه تو ضیح بدین این روش یا هرچی که میشه

http://www.iranphp.net/forum/showthread.php?t=3765&highlight=curl

pashaie
جمعه 07 خرداد 1389, 17:19 عصر
کد لاگین کردن به صورت ریموت به یه سایت


$login_url = 'http://www.somesite.com/login.php';
#These are the post data username and password
$post_data = 'username=someusername&password=somepassword';
#Create a curl object
$ch = curl_init();
#Set the useragent
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
#Set the URL
curl_setopt($ch, CURLOPT_URL, $login_url );
#This is a POST query
curl_setopt($ch, CURLOPT_POST, 1 );
#Set the post data
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
#We want the content after the query
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
#Follow Location redirects
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
/*
Set the cookie storing files
Cookie files are necessary since we are logging and session data needs to be saved
*/
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
#Execute the action to login
$postResult = curl_exec($ch);

iner30
جمعه 07 خرداد 1389, 21:12 عصر
سلام
دوستان من با تابع curl زیاد آشنایی ندارم،
میشه یه توضیح مختصر در موردش بدید، و بگید اگه من بخوام یاد بگیرم چه مرجع فارسی هست که بتونم ازش استفاده کنم

$ M 3 H R D A D $
جمعه 07 خرداد 1389, 23:05 عصر
کد لاگین کردن به صورت ریموت به یه سایت


$login_url = 'http://www.somesite.com/login.php';
#These are the post data username and password
$post_data = 'username=someusername&password=somepassword';
C#‎reate a curl object
$ch = curl_init();
#Set the useragent
$agent = $_SERVER["HTTP_USER_AGENT"];
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
#Set the URL
curl_setopt($ch, CURLOPT_URL, $login_url );
#This is a POST query
curl_setopt($ch, CURLOPT_POST, 1 );
#Set the post data
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
#We want the content after the query
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
#Follow Location redirects
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
/*
Set the cookie storing files
Cookie files are necessary since we are logging and session data needs to be saved
*/
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
#Execute the action to login
$postResult = curl_exec($ch);


ممنون که جواب دادین شما این کد و با سایت دانشگاه ما انجام دادین ؟

یبار سورس صفحه و ببینید چندتا فیلد مخفی هست که کد شده هستند و رندوم

این کدی که شما دادین و قبلا دیدم
میشه کلا روش کار توضیح بدین
اینجا انجمن درست اما خوب یکی کلا ندونه اینجوری که راه نمیوفته

pashaie
شنبه 08 خرداد 1389, 16:37 عصر
یبار سورس صفحه و ببینید چندتا فیلد مخفی هست که کد شده هستند و رندوم
آره! اینم از برکات ASP!
خب واسه حل این مشکل یه راه خیلی ساده وجود داره.
شما ابتدا صفحه مورد نظرو (http://217.219.175.74/Portal/WUC/Security/loginPage.aspx) تو برنامت لود می کنی (این کار رو هم می تونی با تابع CURL انجام بدی) بعد تو مقدار بدست اومده دنبال مقادیر Hidden می گردی و در آخر سر هم از همون کد بالایی استفاده می کنی با این تفاوت که اینبار مقادیر Hidden رو هم برای سایت مورد نظر ارسال می کنی

امیـرحسین
شنبه 08 خرداد 1389, 23:47 عصر
این سیستم (فکر کنم سیدا بود) رو حرفه ای ساختند با اینکه مثل بقیه سیستمهای ایرانی پر از باگهای زننده و مبتدیانه است.
اونجوری که بصورت اجمالی پستتون رو خوندم، شما میخواید با اطلاعات دانشجوها در سایت خودتون، در سایت دانشگاه بصورت ریموت لاگین کنید و اطلاعات بگیرید. اگر اینطوره:
به نظر من، کل کاری که قصد انجامش رو دارید کاملا اشتباهه چون امنیت اطلاعات دانشجوها خیلی اهمیت داره و نباید جای دیگه ای وارد کنه! به این فکر کنید به سایت شما نفوذ بشه و طرف هم مریض روانی باشه بعد شما میتونید جوابگوی دانشجوهایی که درسهاشون حذف شده باشید؟
هرقدر امکان خوبی ایجاد کنید ولی این مسئله خیلی مهمی هست.

من خودم سایت گروه مهندسی صنایع دانشگاه خودمون (http://ie-group.ir) راه انداختم. میخواستم فقط به روشی، صحت دانشجو رو از طریق شماره دانشجویی و رمزش تایید کنم و به این مسئله برخوردم که دانشجوها اطلاعاتشون رو وارد نکنند خیلی بهتره.

به هر حال، همونطوری که دوستمون گفتند با بررسی فیلدهای hidden میشه مشکل لاگین رو حل کرد اگه این سیستم روش مبتکرانه خاصی برای جلوگیری از چنین کارهایی نداشته باشه.

$ M 3 H R D A D $
یک شنبه 09 خرداد 1389, 00:00 صبح
من تاعیدیشو گرفتم
مشکل پیاده سازیهکسی هست که این پروِژه و انجام بده چون من سر در نمیارم

آقایون با پرت 80 میشه وصل شد ؟ سوکت نویسی
اون قضیش چیه
؟

rapidpich
یک شنبه 09 خرداد 1389, 12:11 عصر
نه بابا این فکر میکنم یا میخاد ثبت واحد رو اتوماتیک کنه یا میخاد هک کنه! در هر حالت موفق باشی :چشمک: ;)

فقط یادت باشه اگه زیاد و تند تند درخواست بفرستی حراست میاد!

$ M 3 H R D A D $
سه شنبه 11 خرداد 1389, 11:06 صبح
داداشی جون ؟؟

میگم این کار با مسئولیت خودمه
تحت نظر معاون پژوهشی دانششگاه
حراست کیلویی چنده بابا....

مشکل اینه که مسعولین ما این سیستم و از سیدا یا مثلا از مروارید خریدم هیچ دخل و تصرفی ندارن که مثلا یک لینک بدن به ما و میگن امنیتش مشکل میخوره

trade_mark
سه شنبه 11 خرداد 1389, 11:51 صبح
به ما میگن امنیتش مشکل میخوره
خوب بیچاره ها حقم دارن که اینو بگن

rapidpich
سه شنبه 11 خرداد 1389, 12:12 عصر
الان این سیستم که نصبه ثبت آنلاین نداره؟

$ M 3 H R D A D $
سه شنبه 11 خرداد 1389, 12:39 عصر
برادران !!! داداش ها !! سرووران !!!
من کاری به ثبت مپت :قهقهه: ندارم

اطلاعات دانشجو ها تو بانک سایته!

میخوام هر دانشجو تو سایت ما اطلاعاتشو بده من کوئری دادن و شلبیه سازی کنم که بعد از اینکه رفت تو پنلش اون صفحه و تو سرور باز کنم اسم و فامیلشو بگیرم تو سایت خودمون ثبت نام کنیم ازش !
همین ! به خدا همین !
کسی این پروژه ه انجام میده ؟

$ M 3 H R D A D $
سه شنبه 11 خرداد 1389, 12:44 عصر
راستی اون فیلد مخفی هم فکر کنم همیشه ثابته

یا اینکه از یک الگوریتم خاصی ساخته میییشه
که سرور فقد صحت الکوریتم و بررسی میکنه

به نظرم میشه برای همه یک مقدار ثابت و فرستاد چون سرور مهم نیست این کد قبلا هم فرستاده شد یا نه
دقیقا بر عکس اکتیو کردن نرم افزاره با این تفاوت که سیستم کد و جایی ذخیره نمیکنه

pasak.org
شنبه 28 اسفند 1389, 07:43 صبح
آموزش CURL در PHP و چند کاربرد آن (http://pasak.org/showproduct.php?id=257)


معرفی
PHP از libcurl (کتابخانه ای که توسط Daniel Stenberg درست شده است) پشتیبانی می کند. این کتابخانه یه شما امکان اتصال به سرور ها مختلف با پروتکل های متفاوت را می دهد. libcurl در حال حاضر از پروتکل های http, https, ftp, gopher, telnet, dict, file و ldap پشتیبانی می کند. همچنین libcurl از HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies و user+password authentication پشتیبانی می کند.
تابع ها .....
...........


آموزش CURL در PHP و چند کاربرد آن (http://pasak.org/showproduct.php?id=257)

تاریخ: 25اسفند89

معرفی
PHP از libcurl (کتابخانه ای که توسط Daniel Stenberg درست شده است) پشتیبانی می کند. این کتابخانه یه شما امکان اتصال به سرور ها مختلف با پروتکل های متفاوت را می دهد. libcurl در حال حاضر از پروتکل های http, https, ftp, gopher, telnet, dict, file و ldap پشتیبانی می کند. همچنین libcurl از HTTPS certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies و user+password authentication پشتیبانی می کند.
تابع های CURL از PHP 4.0.2 به بعد افزوده شده اند.
موارد مورد نیاز

نصب بسته libcurl (اینجا کلیک کنید. PHP به libcurl 7.0.2-beta یا بالاتر نیاز دارد.)
libcurl 7.9.0 با بالاتر برای PHP 4.2.3
libcurl 7.9.8 یا بالاتر برای PHP 4.3.0
libcurl 7.10.5 یا بالاتر برای PHP 5.0.0


توضیحات آموزشی
بعد از راه اندازی PHP با پشتیبانی از CURL شما می توانید از تابع های CURL استفاده نمائید. اولین کاری که نیاز به انجام آن دارید استفاده از تابع curl_init() برای شروع یک session (جلسه) CURL است. سپس با استفاده از تابع curl_setopt() گزینه های مختلف (options) را set (تنظیم) نمائید. حال با استفاده از تابع curl_exec() می توانید session CURL را اجرا نمائید. در آخرین مرحله session CURL را با اجرای تابع curl_close() از بین ببرید.


توابع CURL
curl_close : بستن (از بین بردن؟) session CURL فعلی
curl_copy_handle : کپی کردن یک CURL handle به همراه تمامی تنظیمات آن (از PHP 5 به بعد قابل استفاده می باشد)
curl_errno : آخرین شماره خطا را باز می گرداند
curl_error : آخرین خطای session فعلی را به صورت یک string (رشته) باز می گرداند
curl_exec : اجرای CURL
curl_getinfo : نمایش اطلاعات یک تبادل
curl_init : شروع یک session جدید
curl_setopt : تنظیم کردن (set) یک گزینه (option)
curl_setopt_array : تنظیم کردن (set) همزمان چند گزینه مختلف (options)
curl_version : نسخه CURL مورد استفاده را باز می گرداند.

مثال ها




1- چگونه header را با استفاده از cURL بدست آوريم ؟
با استفاده از توابع

توابع CURL
curl_exec : اجرای CURL
curl_getinfo : نمایش اطلاعات یک تبادل

curl_setopt : تنظیم کردن (set) یک گزینه (option)



ما مي توانيم بدون بازکردن يک لينک از سلامت آن باخبر شويم. ما مي توانيم به روش زير اطلاعاتي در رابطه با يک لينک داشته باشيم :


PHP Get Headers using cURL


/**
* Script to check link validity
*
* @author Pasak.org
*
*/
$links = array();
$links[] = 'http://pasak.org/register.php';
$links[] = 'http://pasak.org/contactus.php';
$links[] = 'http://pasak.org/search.php';
foreach ($links as $link) {
$ch = curl_init($link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1); // return header
curl_setopt($ch, CURLOPT_NOBODY, 1); // no body return. it will faster
$linkHeaders = curl_exec($ch);
$curlInfo = curl_getinfo($ch);
curl_close($ch);
switch(intval($curlInfo['http_code']/100)) {
case 2:
// Status is 2xx. Page is in correct health
$status = 'OK';
break;
case 3:
// Status is 3xx. It means redirection
// Page has moved
$status = 'MOVED';
if (preg_match('@^Location: (.*)$@m', $linkHeaders, $matches)) {
$location = trim($matches[1]);
$status .= ": $location";
}
break;
default:
// any error
$status = "Error: $curlInfo[http_code]";
break;
}
echo "
$link: $status


";
}
?>




............
........

دانلود مقاله کامل از اينجا (http://pasak.org/download.php?sid=d96409bf894217686ba124d7356686c9&k=71976e6060f3c3c77d390b7effe59f10&id=257)
براي دانلود از اينترنت اکسپلورر استفاده کنيد
(http://pasak.org/download.php?sid=d96409bf894217686ba124d7356686c9&k=71976e6060f3c3c77d390b7effe59f10&id=257)