PDA

View Full Version : گرفتن Captcha با PHP از یک سایت دیگر



robot12
جمعه 27 تیر 1393, 12:18 عصر
یه مشکل دارم توی php میخوام captcha یک سایت رو بگیرم، روی صفحه نشون بدم و یوزر اون رو وارد کنه و بعدش هم کد ارسال بشه.
برای مثال سایت http://zone-hc.com/Add/ رو در نظر بگیرید. کپچا از اینجا گرفته میشه: http://zone-hc.com/captcha.php
که اگه به عکس تبدیل بشه هر بار که فراخوانی میشه عوض میشه.
من یه راه حل میخوام که این عکس رو اول بگیرم (curl_exec) و به یوزر نمایش بدم بعد یوزر مقدارش رو وارد کنه و فرستاده بشه (curl_exec) به سرور اما مشکل اینجاست که در هر بار که curl_exec انجام میشه کد کپچا فرق میکنه. حتی با استفاده از CURLOPT_COOKIE و مشخص کردن cookiefile و cookiejar و cookiesession هم باز این اتفاق میفته.
بعضیا میگن کپچا برای این ساخته شده که از این عمل جلوگیری کنه. پس دلیل اینکه با #C میشه اینکارو انجام داد چیه؟ برنامه هایی دیدم که کاربر کپچا رو وارد میکنه و بدون هیچ مشکلی ارسال میشه به سرور.
برای مثال این کد مشکل داره:


<?php
$url = 'loginpage.php';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIE,1);
curl_setopt($ch, CURLOPT_COOKIEJAR,'coo.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE,'coo.txt');
$result = curl_exec($ch);

preg_match('/<img src="(.*?)" \/>/', $result, $capt);
echo '<form method="post">
username: <input name="user" type="text" />
password: <input name="pass" type="text" />
captcha: <input name="capt" type="text" /><img src="'.$capt[1].'" />
<input name="submit" type="submit" />
</form>';
if($_POST){
$data = array('user' => $_POST['user'],
'pass' => $_POST['pass'],
'captcha' => $_POST['capt'],
'submit' => 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
echo curl_exec($ch);//Login Failed (Captcha invalid)
}
curl_close($ch);
?>

robot12
جمعه 27 تیر 1393, 15:37 عصر
captcha از سایت دیگه ای گرفته نمیشه ! بلکه توسط یک فایل php که در هاست خودت موجوده به فرمت تصویری ساخته میشه ! منظور شما از #C و خونده شدن captcha چیه ؟!

بله از خود سایت گرفته میشه اما من میخوام یه جور صفحه remote بسازم برای ارسال داده. مثلا کاربر برای ارسال مجبور نباشه بره به سایت http://zone-hc.com/Add/ و از سایت دیگه هم بتونه اینکارو انجام بده و به zone-hc سایت بفرسته.

منظورم از #C برنامه هایی هست که کپچا رو از سایت منبع میگیره و اربر اون رو وارد میکنه و درخواست به سایت ارسال میشه. مثلا سایت هایی که برای ارسال رایگان پیامک وجود دارند و کپچا میخوان برنامه هایی براشون ساخته شده که یشه بدون باز کردن سایت و تنها با وارد کردن کپچا در برنامه ، پیامک ارسال بشه.

joker
شنبه 28 تیر 1393, 11:53 صبح
اگه یک کد کپچا بنویسی متوجه علتش میشی

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

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