【问题标题】:Spoofing the user agent of an embedded Safari browser on the iPhone?在 iPhone 上欺骗嵌入式 Safari 浏览器的用户代理?
【发布时间】:2009-07-07 21:43:35
【问题描述】:

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

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

谢谢

【问题讨论】:

  • 出于好奇,您为什么要这样做?
  • 因为您想查看网站的完整版而不是残缺的移动版。

标签: iphone safari user-agent spoofing


【解决方案1】:

是的,我认为你可以改变这一点。它需要一些工作才能使其正常工作。

  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]

【讨论】:

  • 我想确认这行得通。在 webView 委托的 shouldStartLoad 方法中,我使用了建议 1 的前三行。我将 HTTP 正文设置为 nil,因为我不知道 nvpString 是什么。不需要 receivedData 的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2011-07-22
  • 2013-10-16
  • 2014-02-01
相关资源
最近更新 更多