2010-05-31 4 views
7

Мне нужно эмулировать настоящий HTTP-запрос через cfhttp. Я получал rss-канал ColdFusion, но сегодня они начали блокировать мой запрос и отправлять индексную страницу в ответ вместо rss fead.Как эмулировать настоящий HTTP-запрос через cfhttp?

Я добавил useragent для cfhttp, но это не поможет.

Opera, Firefox и Chrome правильно открывают канал с того же компьютера.

ответ

6

Да, спасибо. Я понюхал все HTTP-заголовки, которые браузер отправляет на сайт, а затем эмулирует их в запросе cfhttp. Решение:

<cfhttp url="http://example.com/feed" 
useragent="Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.7 (KHTML, like Gecko) Chrome/5.0.391.0 Safari/533.7" 
result="httpresult" 
redirect="false" 
> 
<cfhttpparam type="header" name="HTTP_REFERER" value="http://example.com/feed/" > 
<cfhttpparam type="header" name="Accept-Encoding" value="gzip,deflate,sdch" > 
<cfhttpparam type="header" name="Proxy-Connection" value="keep-alive" > 
<cfhttpparam type="header" name="Accept" value="application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"> 
<cfhttpparam type="header" name="Accept-Language" value="en-US,en;q=0.8"> 
<cfhttpparam type="header" name="Accept-Charset" value="ISO-8859-1,utf-8;q=0.7,*;q=0.3"> 
<cfhttpparam type="cookie" name="some-cookie" value="1"> 

4

Я бы предположил, что сайт с RSS-каналом все еще обнюхивает User Agent, а CFHTTP не установлен на тот, который использует сайт. Используйте HTTP Proxy Sniffer (т. Е. Charles HTTP Proxy) для записи HTTP-запроса браузера, который правильно отображает RSS-канал, а затем попробуйте использовать CFHTTP с той же строкой User Agent, что и ранее успешный запрос.

Если он по-прежнему не работает, используйте атрибуты «proxyport» и «proxyserver» CFHTTP для запуска запроса ColdFusion через ваш сниффер HTTP и убедитесь, что User Agent установлен правильно и сравнивается с рабочим запрос.

+0

Также стоит проверить другие заголовки, а не только агента пользователя. (Возможно, сервер удаления ищет файлы cookie или accept- * headers.) –

+0

Вы также можете попробовать использовать прокси на другом сервере, если они блокируют IP. –

 Смежные вопросы

  • Нет связанных вопросов^_^