Изменить все запросы HTTP на iPhoneOS с MobileSubstrate? - PullRequest
1 голос
/ 29 апреля 2010

Я хочу написать MobileSubstrate (http://www.iphonedevwiki.net/index.php/MobileSubstrate) аддон, который принимает каждый HTTP-запрос и модифицирует URL. (Причина очень сложная и объяснение займет некоторое время, поэтому просто поверьте мне, что альтернативы нет) В основном мне нужно знать, какое сообщение Objective-C или функцию C лучше всего перезаписать, чтобы перехватить любой HTTP-запрос, изменить URL-адрес и отправить запрос обратно в исходную функцию (это должно быть не первым запрос отправлен приложением, но любые перенаправления тоже.) Я думаю, что это может быть в NSURL или CFNetwork, но я не уверен, где именно. Эта функция должна, после замены, работать с любыми приложениями и самой ОС.

EDIT: Хорошо, вот два примера сценариев того, что я хочу сделать, обратите внимание, что метод для переопределения должен быть тот, который вызывается любым HTTP-запросом из приложения в ОС:
1) Пользователь в MobileSafari вводит в aaa.com/a.html
2) aaa.com/a.html перенаправляет на aaa.com/b.html
3) aaa.com/b.html загружает bbb.com/c.png
Я хочу изменить запрос, чтобы все добавили? I = j.
Пример: изменить все aaa.com/a.html на aaa.com/a.html?i=j, aaa.com/b.html?i=j, bbb.com/c.png?i=j?

И еще один:
1) Пользователь использует Maps.app
2) Google Maps пытается загрузить google.com/map1.png (не знаю, насколько я знаю)
Измените google.com/map1.png на google.com/map1.png?i=j?

1 Ответ

1 голос
/ 29 апреля 2010

Подключите следующие методы и обменяйте запрос с mutableCopy, который вы отредактировали.

  • -[NSURLConnection sendWillSendRequest:redirectResponse:]
  • -[NSURLConnection initWithRequest:delegate:]
  • –[NSURLConnection initWithRequest:delegate:startImmediately:]

Это не будет перенаправлять необработанные соединения с сокетом TCP, а только запросы HTTP, которые направляются через стандартный API.

Примечание: будьте очень с осторожностью. На мой взгляд, перенаправление всех запросов http является нарушением доверия пользователей

...