Say brand and model of his device, the resolution (current, as say a dekstop computer can change it, as opposed to a phone), O.S, bla bla, and most important, ¿Can detect JS so youtube, is a device is Bot based, or Human, based ? NO, not at all , if you do it well, but be aware, this will be a bit difficult for you, or not.
As a User may have a Phone, Tablet, Computer and Labtop
USE [superbots]GO/****** Object: Table [dbo].[BOTS.INSTANCES.DEVICES] Script Date: 17/01/2026 11:19:57 ******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE [dbo].[BOTS.INSTANCES.DEVICES]( [Bot.Instance.ID] [bigint] NOTNULL, [Device.ID] [int] NOTNULL, [Bot.Instance.Device.ID] [int] IDENTITY(1,1) NOTNULL, [Bot.Instance.Device.Created] [datetime2](7) NOTNULL,CONSTRAINT [PK_BOTS.INSTANCES.DEVICES] PRIMARYKEYCLUSTERED( [Bot.Instance.Device.ID] ASC)WITH (PAD_INDEX=OFF, STATISTICS_NORECOMPUTE=OFF, IGNORE_DUP_KEY=OFF, ALLOW_ROW_LOCKS=ON, ALLOW_PAGE_LOCKS=ON, OPTIMIZE_FOR_SEQUENTIAL_KEY=OFF) ON [PRIMARY]) ON [PRIMARY]GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES] ADDCONSTRAINT [DF_BOTS.INSTANCES.RESOLUTIONS_Bot.Instance.Resolution.IP.Asigned] DEFAULT (getdate()) FOR [Bot.Instance.Device.Created]GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES] WITHCHECKADDCONSTRAINT [FK_BOTS.INSTANCES.DEVICES_BOTS.INSTANCES] FOREIGNKEY([Bot.Instance.ID])REFERENCES [dbo].[BOTS.INSTANCES] ([Bot.Instance.ID])GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES] CHECKCONSTRAINT [FK_BOTS.INSTANCES.DEVICES_BOTS.INSTANCES]GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'User may have 12 devices,but a maximum of 4 per day per url' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'BOTS.INSTANCES.DEVICES', @level2type=N'COLUMN',@level2name=N'Bot.Instance.Device.ID'GO
BOTS.INSTANCES.DEVICES.IPS
USE [superbots]GO/****** Object: Table [dbo].[BOTS.INSTANCES.DEVICES.IPS] Script Date: 17/01/2026 11:20:52 ******/SETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE [dbo].[BOTS.INSTANCES.DEVICES.IPS]( [Bot.Instance.Device.ID] [int] IDENTITY(1,1) NOTNULL, [IP.ID] [int] NOTNULL, [Bot.Instance.Device.IP.ID] [int] NOTNULL, [Bot.Instance.Device.IP.Asigned] [datetime2](7) NOTNULL,CONSTRAINT [PK_BOTS.INSTANCES.DEVICES.IPS] PRIMARYKEYCLUSTERED( [Bot.Instance.Device.IP.ID] ASC)WITH (PAD_INDEX=OFF, STATISTICS_NORECOMPUTE=OFF, IGNORE_DUP_KEY=OFF, ALLOW_ROW_LOCKS=ON, ALLOW_PAGE_LOCKS=ON, OPTIMIZE_FOR_SEQUENTIAL_KEY=OFF) ON [PRIMARY]) ON [PRIMARY]GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES.IPS] ADDCONSTRAINT [DF_BOTS.INSTANCES.IPS_Bot.IP.Asigned] DEFAULT (getdate()) FOR [Bot.Instance.Device.IP.Asigned]GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES.IPS] WITHCHECKADDCONSTRAINT [FK_BOTS.INSTANCES.DEVICES.IPS_BOTS.INSTANCES.DEVICES] FOREIGNKEY([Bot.Instance.Device.ID])REFERENCES [dbo].[BOTS.INSTANCES.DEVICES] ([Bot.Instance.Device.ID])GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES.IPS] CHECKCONSTRAINT [FK_BOTS.INSTANCES.DEVICES.IPS_BOTS.INSTANCES.DEVICES]GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES.IPS] WITHCHECKADDCONSTRAINT [FK_BOTS.INSTANCES.DEVICES.IPS_BOTS.INSTANCES.DEVICES.IPS] FOREIGNKEY([Bot.Instance.Device.IP.ID])REFERENCES [dbo].[BOTS.INSTANCES.DEVICES.IPS] ([Bot.Instance.Device.IP.ID])GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES.IPS] CHECKCONSTRAINT [FK_BOTS.INSTANCES.DEVICES.IPS_BOTS.INSTANCES.DEVICES.IPS]GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES.IPS] WITHCHECKADDCONSTRAINT [FK_BOTS.INSTANCES.DEVICES.IPS_IPS] FOREIGNKEY([IP.ID])REFERENCES [dbo].[IPS] ([IP.ID])GOALTERTABLE [dbo].[BOTS.INSTANCES.DEVICES.IPS] CHECKCONSTRAINT [FK_BOTS.INSTANCES.DEVICES.IPS_IPS]GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Max 4 per day as according to stats, youtube counts a max of 4 views uniqeu per day per ip, of course, user may have a home IP used by his phone, tablet, computer and labtop' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'BOTS.INSTANCES.DEVICES.IPS', @level2type=N'COLUMN',@level2name=N'Bot.Instance.Device.ID'GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Max 4 per day per DEVICE.ID ' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'BOTS.INSTANCES.DEVICES.IPS', @level2type=N'COLUMN',@level2name=N'Bot.Instance.Device.IP.ID'GO
CREATE TRIGGER TRG_BOTS_INSTANCES_DEVICES_IPS_DenyMoreThanOneEach4hrsperDevicePerIPON [BOTS.INSTANCES.DEVICES.IPS]AFTER INSERTASBEGIN IF EXISTS ( SELECT 1 FROM Inserted I JOIN [BOTS.INSTANCES.DEVICES.IPS] B ON (B.[Bot.Instance.Device.ID] = I.[Bot.Instance.Device.ID] AND B.[IP.ID] = I.[IP.ID]) WHERE B.[Bot.Instance.Device.IP.Asigned] <DATEADD(hour,-6,GETDATE()) ) BEGINRAISERROR('No se puede insertar el registro:Bot.Instance.Device e IP son iguales y la fecha es anterior a hace 6 horas.',16,1); ROLLBACK TRANSACTION; RETURN; ENDEND;GO
(trigger :: at least one URL (desktop, mobile or tablet must be per record)
CREATE TRIGGER [dbo].[TRG_URLS_OnIsert_Or_OnUpdate]ON [dbo].[URLS]AFTER INSERT, UPDATEASBEGIN SET NOCOUNT ON; IF EXISTS ( SELECT 1 FROM insertedWHERE ([URL.Desktop] IS NULL) AND ([URL.Mobile] IS NULL ) AND ([URL.Tablet] IS NULL) ) BEGINRAISERROR ('At least one type URL must be provided.',16,1); ROLLBACK TRANSACTION; ENDEND;
CREATE TRIGGER TRG_USERS_ValidateEmailFormat ON USERSAFTER INSERT, UPDATEASBEGIN SET NOCOUNT ON;-- Check if any inserted/updated rows have an invalid email format IF EXISTS ( SELECT 1 FROM USERS WHERE 1=1AND (-- Pattern: char + @ + char +.+ at least 2 chars for TLD [User.Email] NOT LIKE '%_@_%_.__%'-- Disallow specific common invalid characters OR [User.Email] LIKE '%[^a-z0-9@._-]%' ESCAPE '\' -- Disallow consecutive dots or @ OR [User.Email] LIKE '%..%' OR [User.Email] LIKE '%@%@%' ) ) BEGINRAISERROR ('The Email format provided is invalid.',16,1); ROLLBACK TRANSACTION; ENDEND;GO
USERS.URLS
USE [superbots]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE [dbo].[USERS.URLS]( [User.ID] [int] NOTNULL, [URL.ID] [int] NOTNULL, [User.URL.ID] [int] NOTNULL, [User.URL.Created] [datetime2](7) NOTNULL, [User.URL.Legitimated] [datetime2](7) NULL,CONSTRAINT [PK_USERS.URLS] PRIMARYKEYCLUSTERED( [User.URL.ID] ASC)WITH (PAD_INDEX=OFF, STATISTICS_NORECOMPUTE=OFF, IGNORE_DUP_KEY=OFF, ALLOW_ROW_LOCKS=ON, ALLOW_PAGE_LOCKS=ON, OPTIMIZE_FOR_SEQUENTIAL_KEY=OFF) ON [PRIMARY]) ON [PRIMARY]GOALTERTABLE [dbo].[USERS.URLS] ADDCONSTRAINT [DF_USERS.URLS_User.Url.Created] DEFAULT (getdate()) FOR [User.URL.Created]GOALTERTABLE [dbo].[USERS.URLS] WITHCHECKADDCONSTRAINT [FK_USERS.URLS_URLS] FOREIGNKEY([URL.ID])REFERENCES [dbo].[URLS] ([URL.ID])GOALTERTABLE [dbo].[USERS.URLS] CHECKCONSTRAINT [FK_USERS.URLS_URLS]GOALTERTABLE [dbo].[USERS.URLS] WITHCHECKADDCONSTRAINT [FK_USERS.URLS_USERS] FOREIGNKEY([User.ID])REFERENCES [dbo].[USERS] ([User.ID])GOALTERTABLE [dbo].[USERS.URLS] CHECKCONSTRAINT [FK_USERS.URLS_USERS]GOEXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Identifies, if an url is owned by the user. Web must verify via DNS records on that domain' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'USERS.URLS', @level2type=N'COLUMN',@level2name=N'User.URL.Legitimated'GO
USERS.URLS.YOUTUBE
Made to include the stats (of views, likes, comments, etc) when user created theURL
USE [superbots]GOSETANSI_NULLSONGOSETQUOTED_IDENTIFIERONGOCREATETABLE [dbo].[USERS.URLS.YOUTUBES]( [User.URL.ID] [int] NOTNULL, [Views] [int] NOTNULL, [Likes] [int] NOTNULL, [Comments] [int] NOTNULL) ON [PRIMARY]GO
Deja una respuesta