IP Library Granted Patent US 9,251,258
Granted Patent B2
US 9,251,258 · App. 14/225,583 · Granted Feb 2, 2016

Client application fingerprinting based on analysis of client requests

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,251,258
App. No.
14/225,583
Granted
Feb 2, 2016
Kind
B2
Abstract

Processes are disclosed for fingerprinting and identifying client applications based on the analysis of client requests. In an HTTP-based embodiment, a fingerprint is constructed based on the presence and order of HTTP headers included in a request from a client application or device. This fingerprint may then be compared to known fingerprints associated with particular client applications to identify the particular client application and/or to assess whether the client application is malicious. The results of this analysis may, for example, be used to determine how to respond to the current request and/or subsequent requests.

Claims (43)

1. A computer system for generating a fingerprint corresponding to a browser request comprising headers, the computer system comprising:

a database that stores data that correlates each of a plurality of header types to one of a plurality of values, and data that correlates an unknown header type to a special character different from the plurality of characters corresponding to the plurality of header types; and

at least one processor configured with instructions to:

process the headers in the browser request to retrieve a value from the database for at least one of the headers in the browser request based on a header type of the header, and to retrieve the special character for a header when the header type of the header is unknown;

assign a score for the browser request by summing the retrieved values of all of the headers in the browser request;

generate the fingerprint comprising the score of the browser request;

analyze the score to determine whether the score falls within at least one predefined numerical range associated with a particular type of client application; and

when the score falls within the at least one predefined numerical range associated with the particular type of client application, identify the particular type of client application associated with the browser request,

wherein the at least one processor is further configured to assign browser requests, differing only in the order of the headers, the same score.

2. The computer system of claim 1 , wherein each value in the database for each distinct header type is a distinct power of a base.

3. The computer system of claim 1 , wherein the values are unique to each header type.

4. The computer system of claim 1 , wherein the score is represented as bitfields.

5. The computer system of claim 1 , wherein the database further stores data correlating each of the plurality of header types to one of a plurality of characters, and the at least one processor is further configured to:

process the headers in the browser request to retrieve a character from the database for each one of the headers in the browser request based on the header type of the header;

assign an order string for the browser request by concatenating the retrieved characters of all of the headers in the browser request in the same order as the headers in the browser request; and

generate the fingerprint comprising the order string and the score of the browser request.

6. The computer system of claim 5 , wherein the at least one processor is further configured to assign browser requests, differing only in the order of the headers, different order strings.

7. A method for generating a fingerprint corresponding to a browser request comprising headers, the method comprising the following operations performed by at least one processor:

providing a database that stores data that correlates each of a plurality of header types to one of a plurality of values, and data that correlates an unknown header type to a special character different from the plurality of characters corresponding to the plurality of header types;

receiving the browser request comprising headers;

processing the headers in the browser request to retrieve a value from the database for at least one of the headers in the browser request based on a header type of the header, and to retrieve the special character for a header when the header type of the header is unknown;

assigning a score for the browser request by summing the retrieved values of all of the headers in the browser request;

generating the fingerprint comprising the score of the browser request;

analyzing the score to determine whether the score falls within at least one predefined numerical range associated with a particular type of client application;

when the score falls within the at least one predefined numerical range associated with the particular type of client application, identifying the particular type of client application associated with the browser request; and

assigning browser requests, differing only in the order of the headers, the same score.

8. The method of claim 7 , wherein each value in the database for each distinct header type is a distinct power of a base.

9. The method of claim 7 , wherein the values are unique to each header type.

10. The method of claim 7 , wherein the score is represented as bitfields.

11. The method of claim 7 , wherein the database further stores data correlating each of the plurality of header types to one of a plurality of characters, and the method further includes:

processing the headers in the browser request to retrieve a character from the database for each one of the headers in the browser request based on the header type of the header;

assigning an order string for the browser request by concatenating the retrieved characters of all of the headers in the browser request in the same order as the headers in the browser request; and

generating the fingerprint comprising the order string and the score of the browser request.

12. The method of claim 11 , further comprising:

assigning browser requests, differing only in the order of the headers, different order strings.

13. A non-transitory computer-readable medium storing instructions that, when executed, enable one or more processors to:

provide a database that stores data that correlates each of a plurality of header types to one of a plurality of values, and data that correlates an unknown header type to a special character different from the plurality of characters corresponding to the plurality of header types;

process the headers in the browser request to retrieve a value from the database for at least one of the headers in the browser request based on a header type of the header, and to retrieve the special character for a header when the header type of the header is unknown;

assign a score for the browser request by summing the retrieved values of all of the headers in the browser request;

generate the fingerprint comprising the score of the browser request;

analyze the score to determine whether the score falls within at least one predefined numerical range associated with a particular type of client application;

when the score falls within the at least one predefined numerical range associated with the particular type of client application, identify the particular type of client application associated with the browser request; and

assign browser requests, differing only in the order of the headers, the same score.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 19, 2021
From: VERIZON MEDIA INC.
To: VERIZON PATENT AND LICENSING INC.
Reel/Frame 057453/0431 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2020
From: OATH INC.
To: VERIZON MEDIA INC.
Reel/Frame 054258/0635 →
CHANGE OF NAME Recorded Aug 24, 2017
From: AOL INC.
To: OATH INC.
Reel/Frame 043672/0369 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2014
From: SALUSKY, WILLIAM; THOMAS, MARK ELLZEY
To: AOL LLC
Reel/Frame 032526/0473 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 26, 2014
From: AOL LLC
To: AOL INC.
Reel/Frame 032526/0666 →