1、AndroPHPAndroPHP是一款安卓上使用的php及mysql服务器软件,默认端口8080,www目录为sdcard/www,改80端口需要root,自带PHP5.x与MySQL数据库,软件不大,喜欢方便的可以用AndroPHP、Ksweb、PalapaWEB下载地址见文章末尾2、ANMPP[超级主机]ANMPP 是需要 ROOT 权限的 FTP\Nginx\MySQL\PGSQL\PHP-FPM 服务器软件(anmpp.tar.bz2 资源包请点击右下角的“点我”下载)- ANMPP 可以工作在基于 X86 & ARM & ARM64 CPU 架构上的所有 Android 设备上面(特殊设备除外)- 可以在软件内轻松编辑 Nginx、MySQL、PGSQL、PHP-fpm、bftpd 配置文件- 内带 FRP 内网穿透客户端(版本:0.16),配置好后,可以通过设置好的域名直接访问你的手机注意:下载好后需root,安装好后会自动下载环境包下载:https://www.coolapk.com/apk/xiaoqidun.anmpp 3、ksweb《KSWEB开源服务器》是由俄罗斯人开发的一款基于Android的开源服务器,使用lighttpd+nginx+apache+php+sql可以使你的安卓手机瞬间变成一台服务器,并且兼容多数主流PHP程序。这款不需要root并且可以更换PHP跟MySQL版本好评,软件界面也比较简洁。4、PalapaWEBPalapaWEB可以把你的Android设备变成一个Web和数据库服务器,这是免费的,你不需要root权限来运行PalapaWeb服务器!程序内置了Lighttpd 1.4.35、PHP 5.5.15、MySQL 5.1.69、MSMTP 1.4.32、Web Admin 2.1.0,一般的需求足够了。根目录/sdcard/pws/www,默认访问端口9999,账号密码root、adminadmin5、TermuxTermux是一个Android下一个高级的终端模拟器, 开源且不需要root, 支持apt管理软件包,十分方便安装软件包, 完美支持Python, PHP, Ruby, Go, Nodejs, MySQL等。随着智能设备的普及和性能的不断提升,如今的手机、平板等的硬件标准已达到了初级桌面计算机的硬件标准, 用心去打造完全可以把手机变成一个强大的工具.下载:http://www.termux.cn/其余几款地址:https://www.lanzoux.com/b00zcmx6j 密码:1k3f
首先,ArcTime是使用Java编写的免费跨平台字幕软件,是一款全新概念的可视化字幕编辑器,独创字幕块概念,在时间线上拖动、调整字幕块即可轻松完成字幕创建工作。每天签到可以兑换一些小功能,于是用okHttp写了个签到脚本,只需要填入账号跟密码再运行即可,可以设置循环定时运行,放在服务器上就能自动签到了。package HttpTools;import okhttp3.*;import java.io.IOException;import java.util.*;import java.util.concurrent.TimeUnit;import static HttpTools.OkHttpRequestClient.CONTENTTYPE;public class OkHttpArctime { public static void main(String[] args) throws Exception { Map<String, String> users = new HashMap<>();// arcTime账号 users.put("15555555555", "123456"); users.put("17777777777", "123456"); arcSign(users); } /** * arcTime签到 * * @param users 保存用户名密码的map集合 * @throws Exception */ private static void arcSign(Map<String, String> users) throws Exception { String cookieStr; Set<Map.Entry<String, String>> entries = users.entrySet(); for (Map.Entry<String, String> entry : entries) { Response response = postMan("http://m.arctime.cn/home/user/login_save.html", "", "form", "application/x-www-form-urlencoded; charset=UTF-8", "username=" + entry.getKey() + "&password=" + entry.getValue() + "&login_type=2");// 获取cookie List<String> headers = response.headers("Set-Cookie"); cookieStr = cookieHeader(headers); System.out.println("cookie:" + cookieStr); if (response.isSuccessful()) { System.out.println(response.body().string()); Response form = postMan("http://m.arctime.cn/home/ucenter/attendance.html", cookieStr, "json", "", ""); System.out.println(entry.getKey() + ":" + form.body().string()); } else { System.out.println(entry.getKey() + ":" + response.body().string()); throw new IOException(); } } } /** * 拼接cookie * * @param cookies * @return */ private static String cookieHeader(List<String> cookies) { StringBuilder cookieHeader = new StringBuilder(); for (String cookie : cookies) { cookieHeader.append(cookie); } return cookieHeader.toString(); } /** * post访问 * * @param url 请求地址 * @param cookieStr cookie * @param submitType 提交方式 from表单跟json方式 一般from表单 * @param contentType 可为空字符串 * @param params 提交的参数 例如:name=zhangsan&pass=mima * @return * @throws Exception */ private static Response postMan(String url, String cookieStr, String submitType, String contentType, String params) throws Exception { String[] paramses; if (params.contains("=") && params.contains("&")) { paramses = params.split("&"); } else if (params.contains("=") && !params.contains("&")) { paramses = new String[1]; paramses[0] = params; } else { paramses = null; } Map<String, String> map = new HashMap<>(); FormBody.Builder builder = new FormBody.Builder(); RequestBody requestBody = null; FormBody formBody = null; Request requests = null; final OkHttpClient CLIENT = new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .build(); if ("json".equals(submitType)) { requestBody = RequestBody.create(CONTENTTYPE, params); requests = new Request.Builder().url(url) .post(requestBody) .header("Content-Type", contentType) .header("Cookie", cookieStr) .build(); } else if ("form".equals(submitType)) { if (paramses != null) { for (String s : paramses) { String[] ss = s.split("="); map.put(ss[0], ss[1]); } Set<Map.Entry<String, String>> entries = map.entrySet(); for (Map.Entry<String, String> entry : entries) { builder.add(entry.getKey(), entry.getValue()); } } formBody = builder.build(); requests = new Request.Builder().url(url) .post(formBody) .header("Content-Type", contentType) .header("Cookie", cookieStr) .build(); } Response responses = CLIENT.newCall(requests).execute(); return responses; } /** * get请求方式 * * @param url * @param cookieStr * @param contentType * @return * @throws IOException */ private static Response getMan(String url, String cookieStr, String contentType) throws IOException { final OkHttpClient CLIENT = new OkHttpClient.Builder() .connectTimeout(60, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .build(); Request requests = new Request.Builder().url(url) .get() .header("Content-Type", contentType) .header("Cookie", cookieStr) .build(); Response responses = CLIENT.newCall(requests).execute(); return responses; }}