����λ�ã���ҳ > �����̳� > �̳� > ʹ��C#��ȡ����������ҳ����������Ƶ/ͼ��(��Դ�뼰������������)
�������һЩ���ֵ����ߣ���Ʒ������������ѧϰ�о���Ŀ�ģ�������һ����ô��ȡ���ݡ�����������һЩ���湤�ߣ������󲿷ֶ�ʧЧ�ˣ����߲���Դ�������Լ���д��һ��С���ߡ��ȿ�һ�³ɹ��� ����ֻ��Ҫ��д����uid�Լ���ҳ�������Cookie������ʵ���Զ����أ�����Ŀ¼�ڳ����Ŀ¼�µ�Download�ļ��С�
�������һЩ���ֵ����ߣ���Ʒ������������ѧϰ�о���Ŀ�ģ�������һ����ô��ȡ���ݡ�����������һЩ���湤�ߣ������󲿷ֶ�ʧЧ�ˣ����߲���Դ�������Լ���д��һ��С���ߡ��ȿ�һ�³ɹ���
����ֻ��Ҫ��д����uid�Լ���ҳ�������Cookie������ʵ���Զ����أ�����Ŀ¼�ڳ����Ŀ¼�µ�Download�ļ��С�
���ڿ��ֵķ�رȽ�����������Ҳ����Ӧ�Դ�ʩ��������Ҫ�û���������е���ʾ���֣�����ճ������������������json���浽�����ļ���ʹ�������ṩ�Ľ�������json��ť�������ؼ��ɡ�������ص�json�ļ��̻ܶ���û�����ݣ���Ҫ�ڿ��ֵ�����һ��ҳ��ˢ��һ�£�Ҳ���Ǹ��߿��ַ�أ����������������û�л����˵���Ϊ��
����˵һ�¹�������App��˼·��
�� https://live.kuaishou.com/ ���ڶ���������Ҫ��ȡ�������dzƣ�����������ҳ��Ҳ���Դ�App�˷������ߵ���ҳ���ӣ�ճ��������������ҳ������ɺ󣬵�ַ���ĵ�ַһ��Ҫ�����ƣ� https://live.kuaishou.com/profile/xxxxxx�� �����xxxxxx�������ߵ�user id�������ס�����Ƴ�����������õ���
��F12��������Ŀ����߹��ߣ���֮ǰ��˵�������߹����Ǻö������о�����ر���һ��Ҫ�ú�ѧϰ����
ѡ�񿪷��߹��߶����ġ����硱����ȫ��������ͼ��ʾ���������б����ҵ�user id�������������ͻ��������ı�ͷ�������и�Cookie����Ҫ��ס�����Ƴ��������û�еĻ����ǵ�ˢ��ҳ�档
���б�������Կ����ܶ�����������Ҫ�����ҵ���ҳ��չʾ��Ʒ�б����������󣬼�public��ͷ�ģ�����ֱ�������Ͻ�����public�����ɹ��˾��󲿷��޹���������������Ӧ����������������Ʒ������json��Ӧ��
������һ��������±�ǩҳ��򿪣��򿪺��ַ������ʾ��ɵ�����������ַ�������ַ��Ҫ��ס���������õ����Ǹ�countĬ����12����20�������õ�ʱ��ֱ��������9999���ɡ�
��װpostman interceptor����������װ��ַ https://chromewebstore.google.com/detail/postman-interceptor/aicmkgpgakddgnaphhhpliifpcfhicfo ���ò�˵��������һ�����������俪���߹��ߣ������Ͽ��Ը㶨�������е����������ˡ�
��Postman��������½ǵ�Start Proxy��
�������غ����»ص���ҳ��������ҳ��ˢ��һ��ҳ�棬��ҳ�������ɺ󣬵��ֹͣ���ء������б���һֱ���࣬��Ϊ�������ص��Ե���������������ʱPostman�������ͻ����ص�һ�������ͬ�����ҵ�public���󣬻��������Ͻ�����public�����ɹ��˳���������Ҫ�ġ�
��������������
����Postman���һ���µĴ��ڣ�����������������ӵ����в����Լ���ͷ��Ϣ��
���Postman������Ĵ��빤�߼�������������Ҫ�Ĵ��롣�����ѡ��C#��python��js��curl�ȵȡ�
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:KuaishouDownloader"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ui="http://schemas.lepo.co/wpfui/2022/xaml"
Title="MainWindow"
Width="900"
Height="760"
ExtendsContentIntoTitleBar="True"
WindowBackdropType="Mica"
WindowCornerPreference="Default"
WindowStartupLocation="CenterScreen"
mc:Ignorable="d">
https://www.kuaishou.com/profile/xxxxxx/��ͷ�ģ�����xxxxxx����" />
using KuaishouDownloader.Models;
using Newtonsoft.Json;
using RestSharp;
using System.Diagnostics;
using System.IO;
using System.Text.RegularExpressions;
using System.Windows;
using Wpf.Ui;
using Wpf.Ui.Controls;
namespace KuaishouDownloader
{
///
/// Interaction logic for MainWindow.xaml
///
public partial class MainWindow
{
string downloadFolder = AppContext.BaseDirectory;
SnackbarService? snackbarService = null;
public MainWindow()
{
InitializeComponent();
this.Loaded += MainWindow_Loaded;
}
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
snackbarService = new SnackbarService();
snackbarService.SetSnackbarPresenter(snackbarPresenter);
if (File.Exists("AppConfig.json"))
{
var model = JsonConvert.DeserializeObject(File.ReadAllText("AppConfig.json"));
if (model != null)
{
tbUid.Text = model.Uid;
tbCookie.Text = model.Cookie;
}
}
}
private void Theme_Click(object sender, RoutedEventArgs e)
{
if (Wpf.Ui.Appearance.ApplicationThemeManager.GetAppTheme() == Wpf.Ui.Appearance.ApplicationTheme.Light)
{
themeButton.Icon = new SymbolIcon(SymbolRegular.WeatherSunny48);
Wpf.Ui.Appearance.ApplicationThemeManager.Apply(Wpf.Ui.Appearance.ApplicationTheme.Dark);
}
else
{
themeButton.Icon = new SymbolIcon(SymbolRegular.WeatherMoon48);
Wpf.Ui.Appearance.ApplicationThemeManager.Apply(Wpf.Ui.Appearance.ApplicationTheme.Light);
}
}
private async void Download_Click(object sender, RoutedEventArgs e)
{
try
{
btnDownload.IsEnabled = false;
btnParseJson.IsEnabled = false;
if (string.IsNullOrEmpty(tbUid.Text) || string.IsNullOrEmpty(tbCookie.Text))
{
snackbarService?.Show("��ʾ", $"������uid�Լ�cookie", ControlAppearance.Caution, null, TimeSpan.FromSeconds(3));
return;
}
var json = JsonConvert.SerializeObject(new AppConfig() { Uid = tbUid.Text, Cookie = tbCookie.Text }, Formatting.Indented);
File.WriteAllText("AppConfig.json", json);
var options = new RestClientOptions("https://live.kuaishou.com")
{
Timeout = TimeSpan.FromSeconds(15),
UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
};
var client = new RestClient(options);
var request = new RestRequest($"/live_api/profile/public?count=9999&pcursor=&principalId={tbUid.Text}&hasMore=true", Method.Get);
request.AddHeader("host", "live.kuaishou.com");
request.AddHeader("connection", "keep-alive");
request.AddHeader("cache-control", "max-age=0");
request.AddHeader("sec-ch-ua", "\"Not)A;Brand\";v=\"99\", \"Google Chrome\";v=\"127\", \"Chromium\";v=\"127\"");
request.AddHeader("sec-ch-ua-mobile", "?0");
request.AddHeader("sec-ch-ua-platform", "\"Windows\"");
request.AddHeader("upgrade-insecure-requests", "1");
request.AddHeader("accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7");
request.AddHeader("sec-fetch-site", "none");
request.AddHeader("sec-fetch-mode", "navigate");
request.AddHeader("sec-fetch-user", "?1");
request.AddHeader("sec-fetch-dest", "document");
request.AddHeader("accept-encoding", "gzip, deflate, br, zstd");
request.AddHeader("accept-language", "zh,en;q=0.9,zh-CN;q=0.8");
request.AddHeader("cookie", tbCookie.Text);
request.AddHeader("x-postman-captr", "9467712");
RestResponse response = await client.ExecuteAsync(request);
Debug.WriteLine(response.Content);
var model = JsonConvert.DeserializeObject(response.Content!);
if (model == null || model?.Data?.List == null || model?.Data?.List?.Count == 0)
{
snackbarService?.Show("��ʾ", $"��ȡʧ�ܣ����ܴ����˿��ֵķ�ػ��ƣ����һ��ʱ�����ԡ�", ControlAppearance.Danger, null, TimeSpan.FromSeconds(3));
return;
}
await Download(model!);
}
finally
{
btnDownload.IsEnabled = true;
btnParseJson.IsEnabled = true;
}
}
private async void ParseJson_Click(object sender, RoutedEventArgs e)
{
try
{
btnDownload.IsEnabled = false;
btnParseJson.IsEnabled = false;
var dialog = new Microsoft.Win32.OpenFileDialog();
dialog.Filter = "Json�ļ�(.Json)|*.json";
bool? result = dialog.ShowDialog();
if (result == false)
{
return;
}
var model = JsonConvert.DeserializeObject(File.ReadAllText(dialog.FileName)!);
if (model == null || model?.Data?.List == null || model?.Data?.List?.Count == 0)
{
snackbarService?.Show("��ʾ", $"������ȷ��json", ControlAppearance.Caution, null, TimeSpan.FromSeconds(3));
return;
}
await Download(model!);
}
finally
{
btnDownload.IsEnabled = true;
btnParseJson.IsEnabled = true;
}
}
private async Task Download(KuaishouModel model)
{
progress.Value = 0;
progress.Minimum = 0;
progress.Maximum = (double)model?.Data?.List?.Count!;
snackbarService?.Show("��ʾ", $"������{model?.Data?.List?.Count!}����Ʒ����ʼ����", ControlAppearance.Success, null, TimeSpan.FromSeconds(5));
imgHeader.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri(model?.Data?.List?[0]?.Author?.Avatar!));
tbNickName.Text = model?.Data?.List?[0]?.Author?.Name;
string pattern = @"\d{4}/\d{2}/\d{2}/\d{2}";
for (int i = 0; i < model?.Data?.List!.Count; i++)
{
DateTime dateTime = DateTime.Now;
string fileNamePrefix = "";
var item = model?.Data?.List[i]!;
Match match = Regex.Match(item.Poster!, pattern);
if (match.Success)
{
dateTime = new DateTime(int.Parse(match.Value.Split("/")[0]), int.Parse(match.Value.Split("/")[1]),
int.Parse(match.Value.Split("/")[2]), int.Parse(match.Value.Split("/")[3]), 0, 0);
if (cbAddDate.IsChecked == true)
fileNamePrefix = match.Value.Split("/")[0] + "-" + match.Value.Split("/")[1] + "-" + match.Value.Split("/")[2]
+ " " + match.Value.Split("/")[3] + "-00-00 ";
}
downloadFolder = Path.Combine(AppContext.BaseDirectory, "Download", item?.Author?.Name! + "(" + item?.Author?.Id! + ")");
Directory.CreateDirectory(downloadFolder);
switch (item?.WorkType)
{
case "single":
case "vertical":
case "multiple":
{
await DownLoadHelper.Download(item?.ImgUrls!, dateTime, downloadFolder, fileNamePrefix);
}
break;
case "video":
{
await DownLoadHelper.Download(new List() { item?.PlayUrl! }, dateTime, downloadFolder, fileNamePrefix);
}
break;
}
progress.Value = i + 1;
tbProgress.Text = $"{i + 1} / {model?.Data?.List!.Count}";
Random random = new Random();
if (cbLongInterval.IsChecked == true)
await Task.Delay(random.Next(5000, 10000));
else
await Task.Delay(random.Next(1000, 5000));
}
snackbarService?.Show("��ʾ", $"������ɣ�������{model?.Data?.List!.Count}����Ʒ", ControlAppearance.Success, null, TimeSpan.FromDays(1));
}
private void CopyUrl(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (string.IsNullOrEmpty(tbUid.Text))
{
snackbarService?.Show("��ʾ", "������uid�Լ�cookie", ControlAppearance.Caution, null, TimeSpan.FromSeconds(3));
return;
}
Clipboard.SetText($"https://live.kuaishou.com/live_api/profile/public?count=9999&pcursor=&principalId={tbUid.Text}&hasMore=true");
snackbarService?.Show("��ʾ", "������ɣ���ճ�����������", ControlAppearance.Success, null, TimeSpan.FromSeconds(3));
}
private void Info_Click(object sender, RoutedEventArgs e)
{
flyout.IsOpen = true;
}
}
}
public static async Task Download(List urls, DateTime dateTime, string downloadFolder, string fileNamePrefix)
{
string file = string.Empty;
try
{
var downloader = new DownloadService();
foreach (var url in urls)
{
Uri uri = new Uri(url);
file = downloadFolder + "\\" + fileNamePrefix + Path.GetFileName(uri.LocalPath);
if (!File.Exists(file))
await downloader.DownloadFileTaskAsync(url, file);
//�޸��ļ�����ʱ��Ϊ������ʱ��
File.SetCreationTime(file, dateTime);
File.SetLastWriteTime(file, dateTime);
File.SetLastAccessTime(file, dateTime);
}
}
catch
{
Debug.WriteLine(file);
Trace.Listeners.Add(new TextWriterTraceListener(downloadFolder + "\\_FailedFiles.txt", "myListener"));
Trace.TraceInformation(file);
Trace.Flush();
}
}
��
https://github.com/hupo376787/KuaishouDownloader/releases/tag/1.0
���������zip�ļ�����ѹ���󣬾Ϳ�����ͷ����ʹ���ˡ�
ʹ��Blender���ɳ���ģ��
�Ķ�ȫ����������ERA5�����ط���
�Ķ�Xpath���������﷨
�Ķ�����ѧϰ�������繹�����£�
�Ķ���ΪMateƷ��ʢ�䣺HarmonyOS NEXT�ӳ�����Ϸ���ܵõ�����ͷ�
�Ķ�ʵ�ֶ��󼯺���DataTable���໥ת��
�Ķ�Ӳ�̵Ļ���֪ʶ��ѡ��ָ��
�Ķ�������й��ƶ��ı�ͼ��ײ�
�Ķ�����NEXTԪ�����������ѿ����ϼ���Ʒ
�Ķ��ᳲ���С������������Ƽ��رշ���
�Ķ������ArcMap�����н���դ��ͼ���ز�������
�Ķ��㷨�����ݽṹ 1 - ģ��
�Ķ���Ѷ�����߿ͷ���Ӫ��ϵͳ����
�Ķ���Ѷ��Ƶҹ��ģʽ���ý̳�
�Ķ����ں���NEXT��Ѫ���Ŵ���������������
�Ķ�5. Spring Cloud OpenFeign ����ʽ WebService �ͻ��˵ij���ϸʹ��
�Ķ�Java����ģʽ����̬�����Ͷ�̬�����ĶԱȷ���
�Ķ�Win11�ʼDZ����Զ�����Ӧ�õ���ɫ����ʾ����
�Ķ�˼�� V1.5.6 ��׿��
��ս�귨 V7.5.0 ��׿��
У��������������׵������� V1.0 ��׿��
��˸֮�� V1.9.7 ��׿��
������Ե����� v1.0.4 ��׿��
������֮ŠV5.2.3 ��׿��
��������������Դ V1.0 ��׿��
���֮Ϣ V1.0 ��׿��
��ħ������������䣩 V1.0 ��׿��
���ں�������ϵ�����������������վ�����������������Ƽ�����
Ƶ�� ����Ƶ��������ר������������׿�������app����
�Ƽ� ��Ô���������°��������ܿ������ز���
���� ����ɫ������������ ���������ս������������
ɨ��ά�����������ֻ��汾��
ɨ��ά����������΢�Ź��ںţ�
��վ�������������������ϴ��������ַ���İ�Ȩ���뷢�ʼ�[email protected]
��ICP��2022002427��-10 �湫��������43070202000427��© 2013~2025 haote.com ������