Как эмулировать реальный http-запрос через cfhttp? - PullRequest
7 голосов
/ 31 мая 2010

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

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

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

Ответы [ 2 ]

6 голосов
/ 01 июня 2010

Да, спасибо. Я прослушал все 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 голосов
/ 31 мая 2010

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

Если это все еще не работает, используйте атрибуты 'proxyport' и 'proxyserver' CFHTTP, чтобы запустить запрос ColdFusion через HTTP-анализатор и проверить, правильно ли установлен агент пользователя, и сравнить его с рабочим запросом. .

...