راکت

سوال در مورد کرل

7 پاسخ

@ali.bayat
من میخوام یک عددی رو در شماره نظام پزشکی این سایت https://membersearch.irimc.org/ وارد کردم اطلاعات رو بهم نمایش بده الان مثلا عدد 65324 رو وارد کنم اطلاعات رو میده میشه بگید با کرل چطوی این کار رو انجام بدم ممنون میشم با مثال بگید میخوام کرل رو یاد بگیرم

ftp
ftp
@ftp
ثبت پرسش جدید

پاسخ‌ها

7
coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

ینی شما میخواین یه درخواست بفرستید به این صفحه و پاسخ بگیرید؟

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

https://symfony.com/doc/current/components/domcrawler.html

قسمت فرمش رو مطالعه بفرمایید

یه همچین کاری رو من قبلا انجام دادم با این پکیج که به time.ir ریکوئست میفرستاد ولی فرم سابمیت نمیکرد،
https://roocket.ir/discuss/7548

ftp
ftp
@ftp

تخصص: ساده

@coaradsupp
من با کرل(curl) میخوام این قضیه رو حل کنم میشه راهنمایی کنید

شاید پاسخ شما همین‌جا باشد

coarad supp
coarad supp
@coaradsupp

تخصص: برنامه نویس لاراول

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

ftp
ftp
@ftp

تخصص: ساده

@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;
ftp
ftp
@ftp

تخصص: ساده

@hesammousavi
@juza66
@ali.bayat
میشه راهنمایی کنید

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

همونطور که در لاراول CSRF توکن داریم
در C# هم RequestVerificationToken رو داریم..

برای جلوگیری از Cross-Site Request Forgery

وقتی که درخواستی یا ریکوئستی فرستاده میشه.. یه توکن در بدنه فرم قرار میدند
و یک توکن در سشن.
اگر این ۲ یکسان نباشه.. متوجه میشند که درخواست از سمت سیستم خودسون فرستاده نشده.

و این فیلد رو قرار دادند تا فقط درخواست هایی که از سمت سرور خودشون فرستاده میشه مجاز باشه..
به عبارت دیگه این کار رو کردند که شما از لوکیشن دیگه (از سایت خودت) نتونی از این سیستم استفاده کنی

ftp
ftp
@ftp

تخصص: ساده

@ali.bayat
علی اقا میدونم اما میگن راه داره میشه کاری کرد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام