Форум: "Потрепаться";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
ВнизMS Internet Explorer User-Agent Найти похожие ветки
← →
ga3 (2003-05-13 00:17) [0]вопрос на засыпку: ребята, подскажите плиз, как в виндах можно сменить версию IE, например у меня стоит ИЕ5.5 а я хочу чтобы сервер думал что у меня стоит ИЕ6.0? такая вот проблемка
← →
ga3 (2003-05-13 00:20) [1]а еще лучше так: у меня на форме лежит TWebBrowser, я хочу чтобы при навигации можно было менять это самый юзер-агент. вот так вот:-) помогите плиз, MSDN молчит на эту тему как рыба об лед. если можно примерчик.
← →
ga3 (2003-05-14 16:41) [2]ну блин че никто так и не знает как эту напасть сделать?
← →
Ihor Osov'yak (2003-05-14 23:33) [3]Два варианта:
1. http://www.euromind.com/iedelphi, property UserAgent, цитирую сюда:
procedure TEmbeddedWB.SetUserAgent;
var
reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey("\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Post Platform", True)
then Reg.WriteString(FUserAgent, "");
finally
Reg.CloseKey;
Reg.Free;
end;
end;
Не проверял, но людям верить надо...
2. Изменяем заголовок запроса, посылаемого на сервер..
Или на уровне APP (асинхр. настраевыемых протоколов - перехват и подмена), либо делаем запрос wininet функциями, а результат уже подпихиваем TWebBrowser...
Может еще можно поиграть на уровне BeforeNavigate2, см - Headers: OleVariant; - но до этого руки не доходили, поищи сам на гугле..
← →
nikkie (2003-05-15 01:21) [4]вариант 3 - из MSDN (ID: Q183412, PRB: WebBrowser Control Clients Share Global Settings)
MSHTML will also ask for a new user agent via DISPID_AMBIENT_USERAGENT when navigating to clicked hyperlinks. This ambient property can be overridden, but it is not used when programmatically calling the Navigate method.
Приведенный пример там - исключительно на MFC, поэтому не очень помогает. Но для изменения "ambient property" плясать надо от метода Invoke. Ниже пример на дельфи, только для простоты я воспользовался TEmbeddedWB - там есть событие OnInvoke - не надо писать своего наследника от TWebBrowser.
К сожалению, этот метод работает только когда юзер сам кликает по ссылке. Для программной навигации надо видимо запихать User-Agent в параметр Headers (что-то типа того, что написано в закомментаренных строчках в FormCreate - вроде работает, но остальные поля, например HTTP_ACCEPT, коцаются; с этим надо еще поэкспериментировать).
uses
... ActiveX, EmbeddedWB, IEConst;
procedure TForm1.FormCreate(Sender: TObject);
var
Doc: Variant;
Headers: OleVariant;
begin
EmbeddedWB1.Navigate("about:blank");
Doc := EmbeddedWB1.DefaultInterface.Document;
Doc.write("<a href=" http://www.proxychecker.ru/browser.phtml">click me</a>");
// Headers := "User-Agent: Nu ochen hitryi browser"#13#10;
// EmbeddedWB1.Navigate(" http://www.proxychecker.ru/browser.phtml",
// EmptyParam, EmptyParam, EmptyParam, Headers);
end;
const
USER_AGENT: WideString = "takoi vot hitryi browser";
function TForm1.EmbeddedWB1Invoke(DispID: Integer; const IID: TGUID;
LocaleID: Integer; Flags: Word; var Params: tagDISPPARAMS; VarResult,
ExcepInfo, ArgErr: Pointer): HRESULT;
begin
if (Flags and DISPATCH_PROPERTYGET <> 0) and (VarResult <> nil) and
(DispId = DISPID_AMBIENT_USERAGENT) then
begin
PVariant(VarResult)^ := USER_AGENT;
Result := S_OK;
end else begin
Result := DISP_E_MEMBERNOTFOUND;
end;
end;
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c