最近火爆朋友圈游戏,但是想通关还是难上加难,今天我就分享一个如何通过调用apl接口修改数值。
编译工具 visual studio2019
抓包工具 HTTP Debugger Pro
调试api工具 postman
思路如下:
通过调用api可以更改数值,于是就用了抓包软件和postman试了一下
打开wechart(电脑端)——打开某游戏,再打开抓包工具TTP Debugger Pro
筛选出URL,搜索框输入关键词找到方法是GET的且应用程序wechartapp发出的URL请求。这样就可通过抓包工具提取出来的api头部信息,和URL去通过POSTman去做请求。
具体是这几个参数,返回的json格式是这样的就算成功了。
接下来我们就可以编写代码了。
实现思路:
1.封装好请求头
public HttpWebResponse CreateGetHttpResponse(string url,string token)
{
System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "atext/plain";
request.UserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 15_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.27(0x18001b36) NetType/WIFI Language/zh_CN";
request.Method = "GET";
request.Host = "cat-match.easygame2021.com";
request.Referer = "http://servicewechat.com/wx141bfb9b73c970a9/16/page-frame.html";
request.Headers.Add("T",token);
request.Headers.Add("Accept-Language","zh-cn");
request.Accept = "*/*";
return (HttpWebResponse)request.GetResponse();
}
以上是把通过抓包工具所需要的消息头信息添加进去,做了两个参数,一个是调用的URL,还有个就是T值(token),记住,URL里面的https要把s去掉,不然访问不到。
接下来就是做个for循环调用这个函数就行了。
注意事项:若HttpWebRequest调用两次就程序卡死,请在窗体load函数里添加这几行代码:
private void Form1_Load(object sender, EventArgs e)
{
ServicePointManager.UseNagleAlgorithm = true;
ServicePointManager.Expect100Continue = true;
ServicePointManager.CheckCertificateRevocationList = true;
ServicePointManager.DefaultConnectionLimit =100000000;
// MessageBox.Show("欢迎使用!");
}
是因为访问次数受限原因导致的。
完整代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public int count = 0;
public string url= "http://cat-match.easygame2021.com/sheep/v1/game/game_over?rank_score=1&rank_state=1&rank_time=11&rank_role=1&skin=5";
private void Form1_Load(object sender, EventArgs e)
{
ServicePointManager.UseNagleAlgorithm = true;
ServicePointManager.Expect100Continue = true;
ServicePointManager.CheckCertificateRevocationList = true;
ServicePointManager.DefaultConnectionLimit =100000000;
// MessageBox.Show("欢迎使用!");
}
private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Equals(""))
{
MessageBox.Show("是否忘记输入token了呢");
}
else
{
HttpWebResponse aa= CreateGetHttpResponse(url, textBox1.Text);
var a= aa.GetResponseStream();
aa.Close();
MessageBox.Show( ""+ a);
}
}
public HttpWebResponse CreateGetHttpResponse(string url,string token)
{
System.Net.HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.ContentType = "atext/plain";
request.UserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 15_3_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/8.0.27(0x18001b36) NetType/WIFI Language/zh_CN"; //火狐用户代理
request.Method = "GET";
request.Host = "cat-match.easygame2021.com";
request.Referer = "http://servicewechat.com/wx141bfb9b73c970a9/16/page-frame.html";
request.Headers.Add("T",token);
request.Headers.Add("Accept-Language","zh-cn");
request.Accept = "*/*";
return (HttpWebResponse)request.GetResponse();
}
private void button2_Click(object sender, EventArgs e)
{
textBox3.Text = "";
if (textBox1.Text.Equals(""))
{
MessageBox.Show("是否忘记输入token了呢");
}
else
{
int i;
count = 0;
HttpWebResponse AA;
i = Convert.ToInt32(textBox2.Text);
for (int a = 1; a <=i; a++)
{
AA = CreateGetHttpResponse(url, textBox1.Text);
count++;
textBox3.AppendText("第" + a + "次通关状态:" + AA.StatusCode + "\r\n");
textBox3.Focus();
Console.WriteLine("第" + (a + 1) + "次通关状态:" + AA.StatusCode + "\n");
label3.Text = "已刷:" + count;
this.Refresh();
if (a == i)
{
MessageBox.Show("任务已完成!");
}
}
}
}
}
}
代码没做过多的优化,就单纯为实现功能而编的。大佬要是有什么问题可以在评论区留言。