@ali.bayat
من میخوام یک عددی رو در شماره نظام پزشکی این سایت https://membersearch.irimc.org/ وارد کردم اطلاعات رو بهم نمایش بده الان مثلا عدد 65324 رو وارد کنم اطلاعات رو میده میشه بگید با کرل چطوی این کار رو انجام بدم ممنون میشم با مثال بگید میخوام کرل رو یاد بگیرم
ینی شما میخواین یه درخواست بفرستید به این صفحه و پاسخ بگیرید؟
اگه منظورتونو درست متوجه شده باشم، باید کرولر بنویسید، که به این صفحه درخواست بزنه و فرم رو سابمیت کنه و پاسخ بگیره، به نظرم با این بتونید این کارو انجام بدید
https://symfony.com/doc/current/components/domcrawler.html
قسمت فرمش رو مطالعه بفرمایید
یه همچین کاری رو من قبلا انجام دادم با این پکیج که به time.ir ریکوئست میفرستاد ولی فرم سابمیت نمیکرد،
https://roocket.ir/discuss/7548
والا با کرل رو کار نکردم و توی سرچ هام در اون موردی که نیاز داشتم، به چیزی برنخوردم، شاید دوستان بدونن به چه شکل میشه استفاده کرد
@ali.bayat
@coaradsupp @mohsenbostan
من کدش رو نوشتم اما احتمالا یک توکن (RequestVerificationToken) داره اون رو نمیدونم چطوری بگیرم میشه راهنمایی کنید
در قسمت postfields یک توکن هست که هر دفعه عوض میشه اون رو چطوری باید بگیرم
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://membersearch.irimc.org/searchresult');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "__RequestVerificationToken=vaIcygH4xHXY3yU1b12TUKFb9MxBTuW98rslZDonosoU0xZTQKzMDmRlO-bIPS5xmfD-03skEAafpxKBYCM86L4-yEDMlEizNXHXNfSFtnA1&FirstName=&LastName=&Gender=&McCode=65324&DegreeField=&OfficeCity=&OfficeAddress=&g_recaptcha_response=03AGdBq26SdtzR57QDCyhs72YLb7Ml4mtkOmQOwzS_jZ-L5csytBuuqT8HSyWObG0sFBndbeS4Z6llYql8qpv0IFILW0zEerx-CWnYwMFWgKfDFItf1LM_OxFVehvAmFYyEk49CXj6syev2ddBuNeG4Fi16DOw3PTRaA4qUkh-SkfTgRZ7FLdAQUqa4k2pipJWlG3kwGhWG8-0mmljocQFHRxXjnGISLBCBvTzj7B544Z2YF0cGt7cFlLvXAKc3tGen8-hkOa9vy9Cx1BsBL3LfjHiabNCziq6Xu1gbZOkyz0E1DLoklOyXBGovCEvrqbHCNanMcB1CsYLeLEs1j3kkgc2d92Ct37rhB6P6kJuA9_w_B9zCT21Y9MCbptBTnEdcs-fucdq66zhigHycH6Rz_r9zZYxuqw5_Q");
curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
$headers = array();
$headers[] = 'Authority: membersearch.irimc.org';
$headers[] = 'Cache-Control: max-age=0';
$headers[] = 'Upgrade-Insecure-Requests: 1';
$headers[] = 'Origin: https://membersearch.irimc.org';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
$headers[] = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36';
$headers[] = 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9';
$headers[] = 'Sec-Fetch-Site: same-origin';
$headers[] = 'Sec-Fetch-Mode: navigate';
$headers[] = 'Sec-Fetch-User: ?1';
$headers[] = 'Sec-Fetch-Dest: document';
$headers[] = 'Referer: https://membersearch.irimc.org/';
$headers[] = 'Accept-Language: fa,en;q=0.9';
$headers[] = 'Cookie: _ga=GA1.2.1624413696.1588586881; __utma=128786644.1624413696.1588586881.1588586881.1588586881.1; __utmz=128786644.1588586881.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __RequestVerificationToken=qsHBQZR3FJ1rSafIqmscznSq0Iqy-0iXPQe_ebFSFPIJcQbCZMralTSJ2m5XWFidlT-mQIJxPkFHKrHL1o7z-UpZpCw0ndbC9LRhXkvUZK01; cookiesession1=4973D017888GE8ETNKZRPT534BJGB74C; _gid=GA1.2.388215316.1589189862; ASP.NET_SessionId=rrqcrqumnsdpchioihzq3crn; _gat=1';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
return $result;
همونطور که در لاراول CSRF توکن داریم
در C# هم RequestVerificationToken رو داریم..
برای جلوگیری از Cross-Site Request Forgery
وقتی که درخواستی یا ریکوئستی فرستاده میشه.. یه توکن در بدنه فرم قرار میدند
و یک توکن در سشن.
اگر این ۲ یکسان نباشه.. متوجه میشند که درخواست از سمت سیستم خودسون فرستاده نشده.
و این فیلد رو قرار دادند تا فقط درخواست هایی که از سمت سرور خودشون فرستاده میشه مجاز باشه..
به عبارت دیگه این کار رو کردند که شما از لوکیشن دیگه (از سایت خودت) نتونی از این سیستم استفاده کنی
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟