PDA

View Full Version : سوال: بدست آوردن خروجی js از طریق CURL



bagherok
پنج شنبه 06 آذر 1393, 16:41 عصر
سلام.
میخوام از طریق CURL و یا کتابخانه های موجود
دقیقا مثل یه مرورگر
اول به یه صفحه ورود کنم و
بعد یه فانکشن جاوااسکریت رو اجرا
ودرنهایت با خروجی این جاوااسکریت یه فرمی تو همین صفحه رو سابمیت کنم.
امکانش هست؟
- - - - - - - - - - - -
یا حالت دوم:
سابمیت یه فروم با استفاده از value یه input درون همون صفحه


<form method="POST" id="form">
<input type="text" name="users" id="users" />
<input type="password" name="passw" id="passw" />
<input type="text" name="code" id="code" />

<input type="hidden" name="ccode" value="12345" id="ccode" />

<input type=submit name="submit" value="ok">

</form>

arta.nasiri
پنج شنبه 06 آذر 1393, 18:23 عصر
اگه قصدتون فقط سابمیت فرم هستش



function post($url, $data = array())
{
if (!is_array($data))
{
return FALSE;
}

if (count($data) > 0)
{
$temp = '';
foreach ($data as $key => $val)
{
$temp .= $key.'='.$val.'&';
}

$temp = rtrim($temp, '&');
$data = $temp;
}

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
post("http://test.com", ["ccode" => 12345]);

arta.nasiri
پنج شنبه 06 آذر 1393, 18:28 عصر
با curl نمیتونید javascript رو اجرا کنید و باید خروجی رو به کتابخانه هایی مثل PhantomJS پاس بدید.

bagherok
پنج شنبه 06 آذر 1393, 18:34 عصر
حالت اول که فعلا منتفی
اما حالت دوم:
مقدار این input
که 12345 هست و hidden

<input type="hidden" name="ccode" value="12345" id="ccode" />

باید درون این input قرار بگیره

<input type="text" name="code" id="code" />

درهربار رفرش صفحه این مقدار مقدار input ای که hidden هست تغییر میکنه.درواقع نقش Captcha (https://www.google.com/search?client=ubuntu&hs=emN&channel=fs&q=Captcha&spell=1&sa=X&ei=5UZ3VPbZF8fiavuIgOgM&ved=0CBsQvwUoAA) رو بازی میکنه

arta.nasiri
پنج شنبه 06 آذر 1393, 18:44 عصر
اگه میخواهید مقدار یک input رو تو یک input دیگه تو همون صفحه قرار بدید تا اونجایی که من میدونم curl نمیتونه اینکار رو بکنه مگه اینکه اون مقدار ثابت باشه. اگه اون مقدار ثابت نیست شما باید با phantomjs اینکار رو انجام بدید.