Я хочу отправить данные сообщения на страницу, чтобы получить значение. Проблема в том, что я хочу получить форму данных abc.com
. И abc.com
открывается, только если пользователь приходит на abc.com
с abc.com/previous url
.
Возможно, он выполняет сеанс или файлы cookie для аутентификации. Понятия не имею.
Я хочу получить данные от abc.com. Есть ли способ с помощью завитка?
Мой PHP-код:
Когда вы запускаете код, он говорит, что url has be moved
как для этого URL-адреса, вам нужно приходить со старого URL-адреса ссылки, тогда он работает в браузере
$SearchBy = "2"; $AttorneySearchMode="Name"; $LastName= "Smith"; $FirstName= "William"; $CaseStatusType= "0"; $SortBy= "fileddate"; echo $url = 'https://www.clarkcountycourts.us/Anonymous/Search.aspx?ID=400&NodeID=101%2c103%2c104%2c105%2c500%2c600%2c601%2c602%2c603%2c604%2c605%2c606%2c607%2c608%2c609%2c610%2c611%2c612%2c613%2c614%2c615%2c616%2c617%2c618%2c619%2c699%2c700%2c701%2c702%2c703%2c704%2c705%2c706%2c707%2c708%2c709%2c710%2c711%2c712%2c713%2c714%2c715%2c716%2c717%2c718%2c719%2c720%2c721%2c722%2c723%2c724%2c725%2c726%2c727%2c728%2c729%2c730%2c731%2c797%2c798&NodeDesc=All+Courts'; //set POST variables $fields = array( 'SearchBy' => urlencode($SearchBy), 'AttorneySearchMode' => urlencode($AttorneySearchMode), 'LastName' => urlencode($LastName), 'FirstName' => urlencode($FirstName), 'CaseStatusType' => urlencode($CaseStatusType), 'SortBy' => urlencode($SortBy), ); $fields_string = ""; foreach ($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string, '&'); $ch = curl_init(); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_POST, true); curl_setopt($ch,CURLOPT_POST, count($fields)); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); $result = curl_exec($ch); curl_close($ch); print_r($result);
Вот начальная точка с некоторыми незначительными дополнениями.
Я нашел 3 проблемы, которые мешали мне запрашивать страницу на своем сервере:
CURLOPT_SSL_VERIFYPEER
, CURLOPT_SSL_VERIFYHOST
) В приведенном ниже примере я сначала выбираю основную страницу поиска, а затем повторно использую один и тот же дескриптор cURL для отправки формы. Обратите внимание, что это неполное, вам нужно написать код, чтобы заполнить оставшиеся поля формы.
// first fetch search page to set cookies $url = 'https://www.clarkcountycourts.us/Anonymous/Search.aspx?ID=400&NodeID=101%2c103%2c104%2c105%2c500%2c600%2c601%2c602%2c603%2c604%2c605%2c606%2c607%2c608%2c609%2c610%2c611%2c612%2c613%2c614%2c615%2c616%2c617%2c618%2c619%2c699%2c700%2c701%2c702%2c703%2c704%2c705%2c706%2c707%2c708%2c709%2c710%2c711%2c712%2c713%2c714%2c715%2c716%2c717%2c718%2c719%2c720%2c721%2c722%2c723%2c724%2c725%2c726%2c727%2c728%2c729%2c730%2c731%2c797%2c798&NodeDesc=All+Courts'; $ch = curl_init(); // needed to disable SSL checks for this site curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0); // enable cookie handling (they aren't saved after cURL is closed) curl_setopt($ch,CURLOPT_COOKIEFILE, ''); // debugging curl_setopt($ch,CURLOPT_VERBOSE, 1); curl_setopt($ch,CURLOPT_STDERR, fopen('php://output', 'w')); // helpful options curl_setopt($ch,CURLOPT_AUTOREFERER, true); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true); curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1); // set first URL curl_setopt($ch,CURLOPT_URL, $url); // execute first request to establish cookies & referer $data = curl_exec($ch); // TODO: extract hidden form fields/values from form $fields_string = '...'; // now make second request curl_setopt($ch,CURLOPT_POST, true); curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string); $result = curl_exec($ch); curl_close($ch); var_dump($result);
См. Некоторые из моих других ответов, связанных здесь, где показано, как извлекать другие поля формы и выполнять несколько запросов. См. Также ( cURL – файлы cookie и сеансы ) и ( проблема с PHP Curl – Cookies )
Надеюсь, что это поможет, прокомментируйте вопросы / вопросы.