Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
#1

Чужие HTTP-запросы в HTTPS - Программирование iOS/iPhone

05.02.2014, 21:02. Просмотров 909. Ответов 7
Метки нет (Все метки)

Привет всем!

Возникла интересная задача:
Со стороны заказчика пришел JavaScript-овый кусок кода - мол, выполняйте его после такого-то события.
Через неделю пришло письмо - надо срочно сделать так, чтобы все запросы при выполнении этого скрипта уходили через HTTPS.

Что имеем на данный момент:
В скрипте происходит следующее: инициализируется переменные, и подгружается внешний скрипт, который выполняет всю работу.
Скрипт гружу в WebView.
Сниффером смотрю, что на выходе - на выходе HTTP запросы.

Перекопал интернет, сам сидел, мучался - пока безрезультатно.. Не в курсе ли кто, как можно перехватить (как вариант) http-запросы, которые формируются в результате работы этого скрипта, и отправлять их с использованием HTTPS-протокола?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
06.02.2014, 07:17     Чужие HTTP-запросы в HTTPS #2
kievkao, а если скрипт изменить?

Цитата Сообщение от kievkao Посмотреть сообщение
которые формируются в результате работы этого скрипта,
Просто не особо ясно что там делается. Я понимаю, NDA, etc, но все же...
mobidevelop
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
06.02.2014, 11:26     Чужие HTTP-запросы в HTTPS #3
А не логичнее перевалить это на разработчиков скрипта?
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
06.02.2014, 17:20  [ТС]     Чужие HTTP-запросы в HTTPS #4
Ну, дело там вот в чем:
Скрипт от сервиса PubMatic, в котором передается инфа об устройстве, местоположении и т.д.
Для последующей обработки этого добра в рекламных целях.
С представителями PubMatic вроде бы связались, они обещали "чем-то помочь", но, судя по их предыдущим актам помощи - процесс будет долгим, и не факт, что результативным..

С заказчиком общаемся через десятых лиц, и, учитывая этот, и множество других факторов, думаем, что скорей всего, все ляжет на нас..

Суть работы скрипта представляет собой отправку пакетов с упакованными внутрь данными (айдишники, координаты и т.д.).
Часть содержимого пакетов явно шифруется (так как не все параметры, которые я скармливаю скрипту я вижу в пакетах открыто), но наше руководство хочет закрыть вообще все данные.

Как вы считаете, в принципе, можно каким-то образом "перехватить" в приложении запросы, выполняемые WebView, в который я гружу html-файл со скриптом внутри?

Я слышал про фреймворк JavaScriptCore, и даже начал с ним разбираться, но коллеги выяснили, что на iOS 6 он не поддерживается, а для нас это критично.
С этим фреймворком, наверное, было бы легче что-то сделать.. Но, увы.
glvrzzz
95 / 71 / 12
Регистрация: 12.12.2012
Сообщений: 214
06.02.2014, 21:23     Чужие HTTP-запросы в HTTPS #5
Первое, что приходит в голову:
перехватываем запросы в делегате WebView в
Objective-C
1
webView:shouldStartLoadWithRequest:navigationType:
Если в урле запроса http, делаем мутабельную копию запроса
Objective-C
1
[request mutableCopy]
, заменяем http на https, выполняем запрос
Objective-C
1
[UIWebView loadRequest:]
и возвращаем NO
Но я не уверен, пробовать надо.
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
07.02.2014, 14:33  [ТС]     Чужие HTTP-запросы в HTTPS #6
Цитата Сообщение от glvrzzz Посмотреть сообщение
Первое, что приходит в голову:
перехватываем запросы в делегате WebView в
Objective-C
1
webView:shouldStartLoadWithRequest:navigationType:
Если в урле запроса http, делаем мутабельную копию запроса
Objective-C
1
[request mutableCopy]
, заменяем http на https, выполняем запрос
Objective-C
1
[UIWebView loadRequest:]
и возвращаем NO
Но я не уверен, пробовать надо.
Спасибо, но, к сожалению, не помогло - request всегда == nil..
Наверное, это из-за того, что я инициирую загрузку WebView методом loadHTMLString, а не loadRequest
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
10.02.2014, 19:23  [ТС]     Чужие HTTP-запросы в HTTPS #7
До момента, пока задача не стала на паузу указанием свыше, продвинулся по своему вопросу, прочитав следующий пост на StackOverflow:
http://stackoverflow.com/questions/5...al-image-files

Может кому тоже пригодится.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2014, 15:59     Чужие HTTP-запросы в HTTPS
Еще ссылки по теме:

Http request Swift
Swift Отправка HTTP (не HTTPS) запроса в Swift 2.0 с использованием NSURLSession
HTTP via HTTPS PHP
Https и http Android
Apache Редирект с https на http

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
12.02.2014, 15:59  [ТС]     Чужие HTTP-запросы в HTTPS #8
Победа!
Надежды на то, что эта сверхинтересная задача отменится, не оправдались, и к ней снова пришлось вернуться.

Проблему решил вот этот чудный класс:
https://github.com/marcuswestin/WebViewProxy

Вот таким образом я его сконфигурировал:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
[WebViewProxy handleRequestsWithHost:@"xxx" handler:^(NSURLRequest *req, WVPResponse *res) {
        NSString* proxyUrl;
        
        if ([req.URL.query length] && [req.URL.query rangeOfString:@"xxx" options:NSCaseInsensitiveSearch].location != NSNotFound) {
            proxyUrl = [req.URL.absoluteString stringByReplacingOccurrencesOfString:@"http" withString:@"https"];
        }
        else {
            proxyUrl = req.URL.absoluteString;
        }
        NSURLRequest* proxyReq = [NSURLRequest requestWithURL:[NSURL URLWithString:proxyUrl]];
        [NSURLConnection sendAsynchronousRequest:proxyReq queue:queue completionHandler:^(NSURLResponse* proxyRes, NSData* proxyData, NSError* proxyErr) {
...
И сниффером прекрасно вижу, как все, что мне надо, уходит по https.

Правда, надо теперь разобраться с кодом самого класса, что в нем там происходит, чтобы понимать, что я накрутил))
Yandex
Объявления
12.02.2014, 15:59     Чужие HTTP-запросы в HTTPS
Ответ Создать тему
Опции темы

Текущее время: 22:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru