在iPhone上欺骗嵌入式Safari浏览器的用户代理?

时间:2009-07-07 21:43:36

标签: iphone safari user-agent spoofing

有没有办法在iPhone上的Safari上欺骗用户代理?

例如,您将在iPhone上创建一个具有嵌入式Safari浏览器的应用程序,但是用户使用此浏览器访问的任何网站都不会知道您在iPhone上的Safari上,它会认为您正在使用某些内容比如PC上的Safari,甚至是IE / FireFox。

由于

1 个答案:

答案 0 :(得分:4)

是的,我认为你可以改变这一点。它需要一些工作来使它工作。

  1. 您需要手动管理所有请求。通过制作您自己的数据请求。 在此数据请求中,您可以为User-Agent添加HTTPheader,它将覆盖默认标头。

    NSMutableURLRequest * urlRequest = [[[NSMutableURLRequest alloc] initWithURL:requestURL] autorelease];

    [urlRequest setHTTPMethod: @"POST"];
    [urlRequest setHTTPBody: [nvpString  dataUsingEncoding:NSUTF8StringEncoding]];
    [urlRequest addValue:@"Your+User+Agent+String" forHTTPHeaderField:@"User-Agent"];
    receivedData = [[NSMutableData alloc] retain];
    [receivedData setLength:0];
    
    [NSURLConnection connectionWithRequest: urlRequest delegate: self];
    
  2. 如果您在应用中嵌入了Safari Web浏览器,则可以订阅其委托方法。其中一个会通知您的应用程序,safari希望加载一个URL,这是您捕获此负载并获取数据的地方。

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    

    现在您将代码放在此处以进行数据加载。

  3. 数据加载完毕后。将数据字符串返回给webView。我已经设置了“baseURL:nil”,但您可能必须正确地将此设置为此应用的正确域名。

    [webView loadHTMLString:newString baseURL:nil]