Локальный прокси-сервер, работающий на устройстве Android

Я пытаюсь написать прокси-сервер http, который будет работать на самом устройстве. На самом деле нужно найти способ захвата исходящего http-трафика, генерируемого устройством.

Код, который у меня есть до сих пор, компилируется нормально, он основан на коде, найденном здесь: http://www.jtmelton.com/2007/11/27/a-simple-multi-threaded-java-http-proxy-server/

Проблема в том, что HTTP-запрос к реальному серверу блокируется и никогда не возвращается.

Есть ли лучший способ написать такой сервис без рутирования устройства?


person fran6    schedule 29.09.2013    source источник


Ответы (3)


Вы должны проверить SandroProxy. Может перехватывать трафик на нерутированном устройстве, если используются настройки прокси-сервера ОС или правила iptables на корневом устройстве. Трафик хранится в локальной базе данных sqlite. Захваченные данные также можно просмотреть с помощью chrome devtools. Чтобы захватить трафик в вашем приложении, вы должны проверить исходный код на наличие плагинов. В нем есть весь код для перенаправления iptables и правильных настроек.

Проверьте вики-ссылку на исходный код Google HowToInterceptTrafficOnMyOwn

http://code.google.com/p/sandrop/wiki/HowToInterceptTrafficOnMyOwn

Кстати: отправить через поддержку sandroproxy :)

person SandroProxy support    schedule 01.10.2013
comment
Привет, поддержка SandroProxy! Спасибо за помощь. Попробую и выложу сюда результаты. - person fran6; 02.10.2013
comment
Привет, пожалуйста, вы можете помочь? У меня возникла проблема с System.loadLibrary(socketdest); Я использую AndroidStudio и не знаю, как собрать библиотеки jni. - person fran6; 02.10.2013
comment
Вы можете использовать этот, чтобы пропустить его сборку. code.google.com/p/sandrop/downloads/ - person SandroProxy support; 03.10.2013
comment
SandroProxy поддерживает тебя! - person fran6; 03.10.2013
comment
это именно то, что я искал! - person fran6; 03.10.2013
comment
Чтобы помочь вам больше. Для SSL вам необходимо доверять сертификату CA SandroProxy. Иногда этого недостаточно, потому что приложение использует закрепление сертификата (например, Twitter) - person SandroProxy support; 03.10.2013

Я использовал часть программного обеспечения под названием proxydroid, чтобы использовать свое устройство в качестве прокси-сервера, и это единственное, что я нашел, для которого не требуется root. Я не уверен, поможет ли это вам, но это проект с открытым исходным кодом, и код можно найти здесь:

https://github.com/madeye/proxydroid

Я заметил, что приложение зависает через некоторое время или если одновременно отправляется большое количество запросов, но у меня не было возможности выяснить, почему это происходит.

person Kennifer    schedule 30.09.2013
comment
Привет, Кеннифер! это очень хорошо, и я буду экспериментировать. Ограничение производительности не является большой проблемой, так как я просто пытаюсь сделать PoC в данный момент. - person fran6; 30.09.2013
comment
Привет, Кеннифер, я обнаружил, что proxydroid не выполняет за меня эту работу, поскольку я хочу только захватывать и перехватывать трафик. С прокси-дроидом мне нужен прокси-сервер для подключения :-( - person fran6; 02.10.2013

Забудьте о настройке прокси, используйте библиотеку Facebook Stetho (http://facebook.github.io/stetho/) для просмотра всех HTTP-запросов и ответов от эмулятора/устройства

введите здесь описание изображения

person Igor    schedule 12.04.2017