@nimageneral
@mhyeganeh
@behzad.azizan
چطوری میتونم با curl کوکی یک سایت رو بگیرم
باید از دستور CURLOPT_COOKIEJAR و CURLOPT_COOKIEJAR استفاده کنید. دقیق تفاوتشون رو یادم نیست متاسفانه اما با جستجو میتونید بفهمید.
و این هم نمونه کدی که برای لاگین توی یه سایتی خودم نوشته بودم. این کد هم کوکی رو میگرفت و هم اگر سرور درخواست میکرد باز ارسالش میکرد براش.
$ch = curl_init('http://site.com/');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . "/cookies.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . "/cookies.txt");
$response = curl_exec($ch);
@mehdisut
توی استک خواندم این میتونه مربوط به این باشه که curl داره با ipv6 کار میکنه و یا مشکل از dns هست. (من که از هیچ کدوم سر در نمیارم ولی این دو کد رو گفتن امتحان کنید. اول:
curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
و اگر نشد این رو هم امتحان کنید:
curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false );
curl_setopt($ch, CURLOPT_DNS_CACHE_TIMEOUT, 2 );
و در آخر با اینها هم میتونید جزئیات بیشتری از ارور بدست بیارید:
var_dump(curl_exec($ch));
var_dump(curl_getinfo($ch));
var_dump(curl_error($ch));
منبع برای توضیحات بیشتر.
@aliam
ببخشید یک سوال دیگه الان هر بار که با کدی که گفتید کرال میکنم کوکی جدید سایت رو به من میده یا نه؟
@mehdisut
بله قطعا.
هر بار کوکی جدید توی فایل cookies.txt ذخیره میشه. میتونید بازش کنید بخونیدش خودتون.