Вы неправильно размещаете сообщения.
Вам не нужен Charles Proxy
Перед загрузкой (chrome, firefox),
- щелкните правой кнопкой мыши выберите «Проверить элемент»
- Выберите вкладку Сеть
- Обновите страницу
- Выберите «Документы» (chrome) или HTML (firefox).
- Очистить список
- Разместите свою загрузку
- Выберите Запрос на загрузку в списке Запросов
- В fireFox выберите «Редактировать и отправить повторно», в Chrome выберите «Просмотреть исходный код».
Справа отобразятся заголовки запроса и ответа
Вам нужно, чтобы ваш запрос выглядел точно так же, как этот заголовок запроса
Вы должны отслеживать перенаправления (например, 302) и файлы cookie, которые добавляются во время перенаправления.
Вы захотите увидеть заголовки запроса и ответа на случай, если это не сработает, чтобы увидеть, что пошло не так.
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_FAILONERROR,true);
Возможно, вы захотите получить свои файлы cookie. Создайте еще один запрос curl, чтобы получить страницу загрузки.
Чтобы захватить файлы cookie: сделайте запрос curl для страницы загрузки, получите заголовок ответа ($ head)
$data = curl_exec($ch);
if (curl_errno($ch)){
$data .= 'Retreive Base Page Error: ' . curl_error($ch);
}
else {
$skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE));
$head = substr($data,0,$skip);
$e = 0;
while(true){
$s = strpos($head,'Set-Cookie: ',$e);
if (!$s){break;}
$s += 12;
$e = strpos($head,';',$s);
$cookie = substr($head,$s,$e-$s) ;
$s = strpos($cookie,'=');
$key = substr($cookie,0,$s);
$value = substr($cookie,$s);
$cookies[$key] = $value;
}
Отформатируйте захваченное для запроса на загрузку:
$cookie = '';
$show = '';
$head = '';
$delim = '';
foreach ($cookies as $k => $v){
$cookie .= "$delim$k$v";
$delim = '; ';
}
Вам нужно добавить некоторые параметры в ваш curl
Создайте строку данных POST
$post = 'key1=value1&key2=value2&key3=value3';
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
Создайте массив для размещения ключевых значений заголовка запроса.
Заполните массив запроса именно тем, что содержится в заголовке запроса вашей загрузки.
ПРИМЕР:
$request = array();
$request[] = "Host: www.example.com";
$request[] = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
$request[] = "User-Agent: MOT-V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.0";
$request[] = "Accept-Language: en-US,en;q=0.5";
$request[] = "Connection: keep-alive";
$request[] = "Cache-Control: no-cache";
$request[] = "Pragma: no-cache";
Добавить в завиток:
curl_setopt($ch, CURLOPT_HTTPHEADER, $request);
Установите значение false. Если есть перенаправление, вы можете видеть, что происходит. затем создайте еще один запрос curl для перенаправления.
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
После запроса запроса на загрузку curl получите заголовки:
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_ENCODING,"");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FILETIME, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_TIMEOUT,10);
curl_setopt($ch, CURLOPT_FAILONERROR,true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $request);
$data = curl_exec($ch);
if (curl_errno($ch)){
$data .= 'Retreive Base Page Error: ' . curl_error($ch);
}
else {
$skip = intval(curl_getinfo($ch, CURLINFO_HEADER_SIZE));
$head = substr($data,0,$skip);
$data = substr($data,$skip);
$info = curl_getinfo($ch);
$info = var_export($info,true);
}
echo $head;
echo $info;
Если это не сработало правильно, проверьте различия в заголовке запроса в $info.
person
Misunderstood
schedule
20.03.2015