# 需求 现在有个需求就是通过APP自动拉取支付宝二维码 ## 大体流程 * 针对拉取的APP需要配置代理(针对每个APP_ID),如:1006 * 商户后端开始拉取二维码 * 拉取二维码的同时会通过curl请求访问手机APP(手机本地提供了一个web服务,如:8080端口),通过curl是直接可以访问的,拼接地址:http://{$host}/getQrcode?money=12&mark=T10023423541421&type=alipay * 手机APP返回数据为生成二维码地址、金额、备注订单号 * 商户后端批量插入MySQL数据 ## 历史回顾 刚开始讲解的以下配置可以直接通过 8007端口访问 配置:`proxy_local:8007-notes.frp.tinywan.top.conf` ``` server { server_name notes.frp.tinywan.top; location / { proxy_pass http://0.0.0.0:8007; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } ``` * [ ] 使用Nginx代理:http://pay.frp.tinywan.top/getpay * [ ] 如果不配置以上Nginx代理:http://pay.frp.tinywan.top:8007/getpay > 8007 端口为服务端提供的接口,`frps.ini` 配置中的`vhost_http_port = 8007` ## 如何配置N个APP_ID代理服务 以下配置均以 `phpStudy`(一个PHP开发集成环境)模拟手机APP提供Web服务 ### **本地服务虚拟域名配置** APP应用ID10010 ``` <VirtualHost *:80> DocumentRoot "D:\phpStudy\PHPTutorial\WWW\pay_project_dev\public" ServerName 10010.frp.tinywan.top <Directory "D:\phpStudy\PHPTutorial\WWW\pay_project_dev\public"> Options FollowSymLinks ExecCGI AllowOverride All Order allow,deny Allow from all Require all granted </Directory> </VirtualHost> ``` APP应用ID10011配置同上 `ServerName 10011.frp.tinywan.top ` APP应用ID10012配置同上 `ServerName 10011.frp.tinywan.top ` APP应用ID10013配置同上 `ServerName 10011.frp.tinywan.top ` ## **配置frp** frpc.ini 配置文件添加以下内容 ``` [10010] type = http local_ip = 192.168.1.4 local_port = 80 subdomain = 10010 [10011] type = http local_ip = 192.168.1.4 local_port = 80 subdomain = 10011 [10012] type = http local_ip = 192.168.1.4 local_port = 80 subdomain = 10012 [10013] type = http local_ip = 192.168.1.4 local_port = 80 subdomain = 10013 ``` > `192.168.1.4 ` 为本地区域网ip地址(你可以代理同一个区域网其他同事的web端口哦),你可以换成 `127.0.0.1` ### 代理域名访问 公司配置的ngrok端口只不过是80端口而已 * APP10010访问:http://10010.frp.tinywan.top:8007/getpay * APP10011访问:http://10011.frp.tinywan.top:8007/getpay * APP10012访问:http://10012.frp.tinywan.top:8007/getpay * APP10013访问:http://10013.frp.tinywan.top:8007/getpay ## 总结 * 以上代理域名是根据不同的`APP应用ID`(APP登录账号),本地IP地址`local_ip`为每个手机WIFI连接的区域网IP地址(通过手机系统信息可以看到分配到的IP地址),所用通过http地址`http://10010.frp.tinywan.top:8007/getpay`相当于访问没每个手机APP上的web服务。 * 通过以上的代理就可以很方便的请求访问每个手机APP(不同的get参数),很轻松的抓取手机支付宝的二维码,同时返回给服务端做处理 * 如果你需要隐藏掉端口的话,就和前面的一样了,在服务端使用Nginx做一个虚拟主机代理 ## 测试如何做? 直接配置10个APP的配置文件,开启自动服务,每次只负责拉取二维码就可以了,没必要每次都要修改APP应用ID而修改代理配置文件。当然了,手机WIFI每次连接分配的IP地址不相同,IP地址还是需要改动的。只要重启服务就可以了呀,是不是很方便呀!!! ## 服务端如何使用`frp`替换掉`ngrok` * 修改配置文件代理地址:`clpay.ngrok.clnr.xyz`修改为`frp.tinywan.top:8007`(80已用,只能用8007)