The following example CSOM code snippet returns the Boolean value to identify the site has inherited permission or unique permission.

Web.HasUniqueRoleAssignments returns true, if the website has the unique permission
Web.HasUniqueRoleAssignments returns false, if the website is inherited the permission from the parent site.

Add the below reference dlls to the Visual Studio solution
Microsoft.SharePoint.Client
Microsoft.Sharepoint.Client.Runtime

using System;  
using System.Collections.Generic;  
using System.Text;  
using Microsoft.SharePoint.Client;  
using System.Net;  
  
namespace IdentifyWebPermission  
{  
    class Program  
    {  
        static void Main(string[] args)  
        {  
            //Get Site Url fro user  
            Console.Write("Enter Site URL: ");  
            string strURL = Console.ReadLine();  
              
            //Get Username from user in the format of (Domain/Login ID)  
            Console.Write("Enter UserName (domain/userid): ");  
            string strUserName = Console.ReadLine();  
                          
            Console.Write("Enter your password: ");              
            string pass = getPassword();  
            Console.WriteLine();  
  
            ClientContext ctx = new ClientContext(strURL);  
            ctx.Credentials = new NetworkCredential(strUserName, pass);  
            Web web = ctx.Web;  
            //Parameters to receive response from the server  
            //HasUniqueRoleAssignments property should be passed in Load method to get the value  
            ctx.Load(web, w => w.HasUniqueRoleAssignments, w => w.Title);  
            ctx.ExecuteQuery();  
            Console.WriteLine("Site \""+ web.Title+ "\" has Unique Permission: "+ web.HasUniqueRoleAssignments);  
            Console.Read();  
        }  
  
        private static string getPassword()  
        {  
            ConsoleKeyInfo key;  
            string pass = "";  
            do  
            {  
                key = Console.ReadKey(true);  
                // Backspace Should Not Work  
                if (key.Key != ConsoleKey.Backspace && key.Key != ConsoleKey.Enter)  
                {  
                    pass += key.KeyChar;  
                    Console.Write("*");  
                }  
                else  
                {  
                    if (key.Key == ConsoleKey.Backspace && pass.Length > 0)  
                    {  
                        pass = pass.Substring(0, (pass.Length - 1));  
                        Console.Write("\b \b");  
                    }  
                }  
            }  
            // Stops Receving Keys Once Enter is Pressed  
            while (key.Key != ConsoleKey.Enter);  
            return pass;  
        }  
    }  
}