2

iPhoneのSafariでユーザーエージェントをスプーフィングする方法はありますか?

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

ありがとう

4

1 に答える 1

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. アプリにSafariWebブラウザーを埋め込む場合は、そのデリゲートメソッドをサブスクライブできます。それらの1つは、safariがURLをロードしたいことをアプリケーションに通知します。これは、このロードをキャッチして、自分でデータを取得する場所です。

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

    ここで、データの読み込みを行うためにコードをここに配置します。

  3. データがロードされたら。データ文字列をwebViewに戻します。「baseURL:nil」を設定しましたが、このアプリの正しいドメインに正しく設定する必要があるかもしれません。

    [webView loadHTMLString:newString baseURL:nil]

于 2009-07-07T23:58:41.287 に答える