2009-07-07 5 views
2

iPhoneのSafariにユーザーエージェントをスプーフィングする方法はありますか?iPhoneに埋め込まれたSafariブラウザのユーザーエージェントをなりすます?

たとえば、iPhoneにSafariブラウザが組み込まれているアプリケーションを作成するとしますが、このブラウザでユーザーがこのWebサイトにアクセスしたWebサイトでは、iPhone上のSafariを知ることはできませんPC上のSafariのようなもの、あるいはIE/FireFoxでさえも。

おかげ

+0

は、なぜあなたはこれをしたいのでしょうか? – zpesk

+0

不自由なモバイル版ではなく、Webサイトの完全版を見たいからです。 – Fantius

答えて

4

はい、私はあなたがこれを変更することができると思います。それを動作させるには少しの工夫が必要です。

  1. すべてのリクエストを手動で管理する必要があります。あなた自身のデータリクエストを作成することによって。 このデータ要求では、デフォルトのヘッダーを上書きするHTTPヘッダーをUser-Agentに追加できます。

    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ブラウザをアプリケーションに埋め込んだ場合、そのデリゲートメソッドを登録することができます。そのうちの1人は、SafariがURLをロードすることをアプリケーションに通知します。これは、この負荷を捕まえてデータを取得する場所です。

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

    ここでコードをデータ読み込みに使用します。

  3. データがロードされた後。 WebViewにデータ文字列を戻します。私は "baseURL:nil"を設定しましたが、このアプリのために正しいドメインに正しく設定しなければならないかもしれません。

    [WebViewのloadHTMLString:NEWSTRINGベースURL:nilを]好奇心のうち

+2

これが機能することを確認したいと思います。 WebViewデリゲートのshouldStartLoadメソッドの中で、最初の3行の提案1を使用しました.HTML本体をnilに設定しました。なぜなら、nvpStringの内容がわからないからです。 receivedDataのものは必要ありませんでした。 – Justin

関連する問題