2009-07-07 84 views
2

有什麼辦法在iPhone上的Safari上欺騙用戶代理?欺騙iPhone上的嵌入式Safari瀏覽器的用戶代理?

因此,例如,您將在iPhone上創建一個具有嵌入式Safari瀏覽器的應用程序,但用戶使用此瀏覽器訪問的任何網站都不會知道您是在iPhone上的Safari上,它會認爲您處於例如PC上的Safari,甚至IE/FireFox。

謝謝

+0

出於好奇,爲什麼你要這麼做? – zpesk 2009-07-07 22:11:09

+0

因爲你想看到一個網站的完整版本,而不是癱瘓的移動版本。 – Fantius 2009-10-08 16:39:23

回答

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基本URL:無]