iPhone に組み込まれた Safari ブラウザのユーザー エージェントを偽装していますか?

StackOverflow https://stackoverflow.com/questions/1095045

質問

iPhoneのSafariでユーザーエージェントを偽装する方法はありますか?

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

ありがとう

役に立ちましたか?

解決

はい、これを変更できると思います。機能させるには少し工夫が必要です。

  1. すべてのリクエストを手動で管理する必要があります。独自のデータリクエストを行うことによって。このデータ要求では、デフォルトのヘッダーをオーバーライドする User-Agent の HTTP ヘッダーを追加できます。

    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」を設定しましたが、これをこのアプリの正しいドメインに正しく設定する必要があるかもしれません。

    [webViewloadHTMLString:newStringbaseURL:nil]

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top