使用您的Android手机作为代理服务器


10

我想将我的Android手机用作代理服务器,这意味着我希望能够使用手机上的IP作为代理,因此所有请求和响应都在手机上接收并转发回原始请求者。我该怎么做呢?

Answers:


6

Servers Ultimate是一款高级应用程序,用于将手机转变为服务器。由同一开发人员提供的代理服务器提供了一种更基本的,完全是“基于代理服务器”的方法。如其说明所述:

在设备上运行自己的代理服务器!该应用程序可以处理HTTP和HTTPS协议以及GET / POST请求。您甚至可以将应用程序设置为将所有连接转发到默认主机和端口,以便您也可以通过套接字使用其他协议!

他们后来添加

有关更多服务器和功能的信息,请查看我们的应用服务器终极版

有关服务器的终极一些额外的信息,请查看这篇文章LifeHacker的这篇文章在XDA,并且这些应用自己的XDA线程


我正在尝试通过使用WiFi IP连接到代理服务器的方式进行设置,并且所有传出连接都将使用数据连接。这可能吗?
Arya

嘿@Arya,您是否知道该怎么做?
尼克·卡拉威

@Arya,使用adb查看我的答案
nick carraway

5

如果您只想在Wifi上设置代理,则可以使用Servers Ultimate轻松地做到这一点,但是我不知道为什么有人会真正想要这样做。一个更有用的选择是使用移动数据,但是正如@Kevin所说,您将遇到很多麻烦,即在ISP级别(Verizon,AT&T等)。您可能不会让他们为您更改其NAT策略。

很难将您的移动数据用作代理,因为所有传入的连接均被阻止。但是,如果您有一台笔记本电脑连接到wifi,并且您的手机通过adb连接到笔记本电脑,则一种选择是运行如下命令:

adb forward tcp:6400 tcp:8080

此命令将发送到主机(笔记本电脑)的6400端口的所有TCP连接转发到手机的8080端口。接下来,在端口8080上运行的Servers Ultimate App上设置代理服务器。不需要root!

现在,通过端口6400对笔记本电脑的任何请求都将转发到您的移动数据!通过打开firefox,进入设置,网络并使用127.0.0.1和端口6400作为代理进行测试。您可以打开路由器以使用此端口通过公共wifi进行访问,尽管我建议设置某种安全策略。

大量的教程可在笔记本电脑上启用开发人员选项和adb,这很容易。


这实际上可能有效:)我今天将尝试
Arya

有用!太棒了!
艾莉亚

这会创建一个SOCKS服务器吗?如果有人想要HTTP代理服务器,那么他们将不得不使用Polipo之类的工具将SOCKS转换为HTTP代理?
阿里亚

If you're just interested in setting a proxy up over your Wifi, you can do that with Servers Ultimate quite easily, but I don't know why anyone would really want to do that. A much more useful option is to use mobile data, 是否同意Servers Ultimate无法通过4G(而不是通过WiFi)设置代理?(我问,因为我可以在4G上建立代理,并想知道它是否完全可能)
hartmut

超。谢谢。
基兰

1

我在使Servers Ultimate的代理服务器正常工作时遇到了一些麻烦,我的第一个想法是这是因为我的手机未植根。但是,根据您的用例,这里的问题实际上不一定是操作系统级别的。

如果您尝试将移动数据连接用作代理,则可能会遇到麻烦,因为大多数移动数据提供程序都会阻止您通常可以用来设置代理的任何端口。最好的选择是与移动数据提供商联系,以查看它们是否有任何开放的端口超出1024的值(出于安全原因,Android会阻止低于此数字的端口)。

或者,您可以:

  • 在Wifi上使用代理服务器,但请确保代理端口在路由器中处于打开状态
  • 扎根手机,以便您可以设置端口转发以使用移动数据连接
  • 设置手机根目录,以便可以使用通常小于1024的端口值。

要了解这种情况,请尝试在端口打开的Wifi上运行Servers Ultimate代理服务器。您将拥有可以正常运行的功能,但是如果您的目标是使用移动数据,那么您现在就不走运了。


0

如果您的手机已扎根(或至少已解锁引导加载程序),则可以将tinyproxy(HTTP / HTTPS代理)作为init服务运行。它可以与Wi-Fi和移动数据同时使用,在后一种情况下,您必须确保可以从互联网访问手机。请参阅如何通过SSH通过3G / 4G公共IP连接到Android?

  • /data或上创建目录/system
    ~# mkdir -p /data/local/tinyproxy/tmp
    
  • 创建配置文件:

    # /data/local/tinyproxy/tinyproxy.conf
    
    Port 8080
    Timeout 600
    LogFile "/tinyproxy.log"
    LogLevel Connect
    MaxClients 100
    MinSpareServers 5
    MaxSpareServers 20
    StartServers 5
    MaxRequestsPerChild 0
    ViaProxyName "tinyproxy"
    #BasicAuth <username> <password>
    

    有关更多配置选项,请参阅文档

  • tinyproxy从源代码构建,或者可以尝试这一方法。将二进制文件移至/data/local/tinyproxy/并设置权限。使用AID_NOBODY或任何其他未使用的UID进行服务:
    ~# cd /data/local/tinyproxy/
    ~# chown -R 9999.9999 .
    ~# chmod 0755 . tmp tinyproxy
    ~# chmod 0644 tinyproxy.conf
    
  • 将以下行添加到/init.rc或任何其他.rc文件:

    # /system/etc/init/tinyproxy.rc
    
    service tinyproxy /system/bin/chroot /data/local/tinyproxy /tinyproxy -d -c /tinyproxy.conf
        seclabel u:r:magisk:s0
        user 9999
        group 9999
        disabled
        capabilities NET_RAW NET_BIND_SERVICE SYS_CHROOT
    
    on property:sys.boot_completed=1
        start tinyproxy
    

如果使用任何防火墙应用程序,请确保取消阻止传入端口8080。重启设备。tinyproxy服务器应以最小特权运行。本地或远程连接。


PS:

如果电话没有植根,或者您想进一步对代理服务器进行沙箱处理,则可以使用以下规则来修补SELinux策略。使用Magisk supolicy工具或sepolicy-inject

create tinyproxy
allow init tinyproxy process transition
allow init tinyproxy process { rlimitinh siginh noatsecure }
allow tinyproxy tinyproxy process { getsched fork }
allow tinyproxy toolbox_exec file { entrypoint read getattr execute }
allow tinyproxy tinyproxy dir { search write add_name remove_name }
allow tinyproxy tinyproxy lnk_file read
allow tinyproxy labeledfs filesystem associate
allow tinyproxy tinyproxy file { read open getattr create write append unlink execute execute_no_trans }
allow tinyproxy tinyproxy capability { sys_chroot net_raw }
allow tinyproxy tinyproxy unix_dgram_socket { create connect write }
allow tinyproxy tinyproxy tcp_socket { create connect accept read bind getattr write shutdown setopt listen }
allow tinyproxy port tcp_socket { name_connect name_bind }
allow tinyproxy node tcp_socket node_bind
allow tinyproxy tinyproxy udp_socket { create connect read getattr write bind }
allow tinyproxy node udp_socket node_bind
allow tinyproxy system_data_file file lock
allow tinyproxy tinyproxy file lock
  • 检查dmesgavc否认定义任何更需要规则。
  • seclabel u:r:magisk:s0在服务中替换为seclabel u:r:tinyproxy:s0
  • 设置SELinux上下文:
    ~# chcon -R u:object_r:tinyproxy:s0 /data/local/tinyproxy
    

现在,该服务也将在没有Magisk的情况下运行。


有关:

SOCKS代理可以与SSH一起运行,请参见:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.