IP Library Granted Patent US 11,675,872
Granted Patent B2
US 11,675,872 · App. 17/667,365 · Granted Jun 13, 2023

Methods and apparatuses for providing internet-based proxy services

Inventors: Lee Hahn Holloway (Santa Cruz, CA); Matthew Browning Prince (San Francisco, CA); Ian Gerald Pye (Santa Cruz, CA); Matthieu Philippe François Tourne (San Francisco, CA); Michelle Marie Zatlyn (San Francisco, CA)
Assignee: CLOUDFLARE, INC.
G06F16/958G06F15/16G06F16/95G06F21/00G06F21/552G06F40/14G06F40/143G06Q10/107G06Q30/0241G06Q30/0251G06Q30/0277H04L47/745H04L51/42H04L61/4511H04L61/5007H04L63/0236H04L63/0245H04L63/0254H04L63/0281H04L63/083H04L63/0861H04L63/102H04L63/126H04L63/1416H04L63/1433H04L63/1441H04L63/1458H04L63/1466H04L67/02H04L67/146H04L67/56H04L67/561H04L67/568H04L69/40H04L61/59
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 11,675,872
App. No.
17/667,365
Granted
Jun 13, 2023
Kind
B2
Abstract

A proxy server receives from a client network application a request for an action to be performed on an identified network resource of a domain of an origin server. The request is received at the proxy server as a result of a DNS request for the domain returning an IP address of the proxy server. The proxy server determines that the first request is indicative of being from a bot. Responsive to this determination, the proxy server transmits a block page to the client network application that includes a mechanism to allow a human user of the client network application to provide input that indicates that they are human and not a bot. If the proxy server does not receive input from the client network application through the mechanism in the block page that indicates that the first request is not from a bot, the proxy server blocks the request.

Claims (77)

1. A method in a proxy server, comprising:

receiving, at the proxy server from a first client network application, a first request for an action to be performed on an identified network resource of a domain of an origin server, wherein the first request is received at the proxy server as a result of a Domain Name System (DNS) request for the domain returning an IP address of the proxy server;

determining that the first request is indicative of being from a first bot;

responsive to the determining that the first request is indicative of being from the first bot, responding to the first request including transmitting a block page to the first client network application that includes a mechanism to allow a human user of the first client network application to provide input that indicates that they are human and not the first bot;

determining that no input is received from the first client network application through the mechanism in the block page that indicates that the first request is not from the first bot; and

responsive to the determining that no input is received from the first client network application through the mechanism in the block page that indicates that the first request is not from the first bot, blocking the first request.

2. The method of claim 1 , further comprising:

receiving, at the proxy server from a second client network application, a second request for an action to be performed on the identified network resource of the domain;

determining that the second request is indicative of being from a second bot;

responsive to the determining that the second request is indicative of being from a second bot, responding to the second request including transmitting the block page to the second client network application, the block page including the mechanism to allow a human user of the second client network application to provide input that indicates that they are not a bot;

receiving, from the second client network application through the mechanism in the block page, input that indicates that the second request is not from the second bot; and

responsive to that received input, transmitting the second request to the origin server.

3. The method of claim 2 , further comprising:

responsive to the received input that indicates that the second request is not from the second bot, setting a cookie such that a subsequent request received from the second client network application that includes that cookie will not be blocked by the proxy server.

4. The method of claim 1 , further comprising:

receiving, at the proxy server, a third request for an action to be performed on the identified network resource;

determining that the third request originates from a search engine or a web crawler, and responsive to this determination, determining that the identified network resource is available in cache; and

responsive to determining that the identified network resource is available in cache, returning the identified network resource from the cache without querying the origin server.

5. The method of claim 1 , wherein determining that the first request is indicative of being from the first bot includes determining that a source IP address of the first request is represented on a restricted list.

6. The method of claim 1 , wherein determining that the first request is indicative of being from the first bot includes analyzing a set of one or more characteristics associated with the request that indicates that the first request is indicative of being from the first bot.

7. The method of claim 6 , wherein the set of one or more characteristics include one or more of whether images are supported, whether JavaScript is supported, a type of client network application making the first request, fonts installed on the client network application making the first request, whether the client network application supports plugins, whether the client network application stores cookies, whether the client network application responds from a same IP address for various protocol requests, or any combination thereof.

8. The method of claim 1 , further comprising:

receiving, at the proxy server from a second client network application, a second request for an action to be performed on the identified network resource of the origin server;

determining that the second request is not indicative of being from a second bot;

responsive to the determining that the second request is not indicative of being from a second bot, transmitting the second request to the origin server.

9. A proxy server, comprising:

a memory to store instructions;

a processor coupled with the memory to process the stored instructions to:

receive, at the proxy server from a first client network application, a first request for an action to be performed on an identified network resource of a domain of an origin server, wherein the first request is to be received at the proxy server as a result of a Domain Name System (DNS) request for the domain returning an IP address of the proxy server;

determine that the first request is indicative of being from a first bot;

responsive to the determination that the first request is indicative of being from the first bot, respond to the first request including transmission of a block page to the first client network application that includes a mechanism to allow a human user of the first client network application to provide input that indicates that they are human and not the first bot;

determine that no input is received from the first client network application through the mechanism in the block page that indicates that the first request is not from the first bot; and

responsive to the determination that no input is received from the first client network application through the mechanism in the block page that indicates that the first request is not from the first bot, block the first request.

10. The proxy server of claim 9 , wherein the processor is further to process the stored instructions to:

receive, at the proxy server from a second client network application, a second request for an action to be performed on the identified network resource of the domain;

determine that the second request is indicative of being from a second bot;

responsive to the determination that the second request is indicative of being from a second bot, respond to the second request including transmission of the block page to the second client network application, the block page including the mechanism to allow a human user of the second client network application to provide input that indicates that they are not a bot;

receive, from the second client network application through the mechanism in the block page, input that indicates that the second request is not from the second bot; and

responsive to that received input, transmit the second request to the origin server.

11. The proxy server of claim 10 , wherein the processor is further to process the stored instructions to:

responsive to the received input that indicates that the second request is not from the second bot, set a cookie such that a subsequent request received from the second client network application that includes that cookie will not be blocked by the proxy server.

12. The proxy server of claim 9 , wherein the processor is further to process the stored instructions to:

receive, at the proxy server, a third request for an action to be performed on the identified network resource;

determine that the third request originates from a search engine or a web crawler, and responsive to this determination, determine that the identified network resource is available in cache; and

responsive to the determination that the identified network resource is available in cache, return the identified network resource from the cache without querying the origin server.

13. The proxy server of claim 9 , wherein the determination that the first request is indicative of being from the first bot includes a determination that a source IP address of the first request is represented on a restricted list.

14. The proxy server of claim 9 , wherein the determination that the first request is indicative of being from the first bot includes the proxy server to analyze a set of one or more characteristics associated with the request that indicates that the first request is indicative of being from the first bot.

15. The proxy server of claim 14 , wherein the set of one or more characteristics include one or more of whether images are supported, whether JavaScript is supported, a type of client network application making the first request, fonts installed on the client network application making the first request, whether the client network application supports plugins, whether the client network application stores cookies, whether the client network application responds from a same IP address for various protocol requests, or any combination thereof.

16. The proxy server of claim 9 , wherein the processor is further to process the stored instructions to:

receive, at the proxy server from a second client network application, a second request for an action to be performed on the identified network resource of the origin server;

determine that the second request is not indicative of being from a second bot;

responsive to the determination that the second request is not indicative of being from a second bot, transmit the second request to the origin server.

17. A non-transitory machine-readable storage medium that provides instructions that, when executed by a processor of a proxy server, cause said processor to perform operations comprising:

receiving, at the proxy server from a first client network application, a first request for an action to be performed on an identified network resource of a domain of an origin server, wherein the first request is received at the proxy server as a result of a Domain Name System (DNS) request for the domain returning an IP address of the proxy server;

determining that the first request is indicative of being from a first bot;

responsive to the determining that the first request is indicative of being from the first bot, responding to the first request including transmitting a block page to the first client network application that includes a mechanism to allow a human user of the first client network application to provide input that indicates that they are human and not the first bot;

determining that no input is received from the first client network application through the mechanism in the block page that indicates that the first request is not from the first bot; and

responsive to the determining that no input is received from the first client network application through the mechanism in the block page that indicates that the first request is not from the first bot, blocking the first request.

18. The non-transitory machine-readable storage medium of claim 17 , wherein the operations further comprise:

receiving, at the proxy server from a second client network application, a second request for an action to be performed on the identified network resource of the domain;

determining that the second request is indicative of being from a second bot;

responsive to the determining that the second request is indicative of being from a second bot, responding to the second request including transmitting the block page to the second client network application, the block page including the mechanism to allow a human user of the second client network application to provide input that indicates that they are not a bot;

receiving, from the second client network application through the mechanism in the block page, input that indicates that the second request is not from the second bot; and

responsive to that received input, transmitting the second request to the origin server.

19. The non-transitory machine-readable storage medium of claim 18 , wherein the operations further comprise:

responsive to the received input that indicates that the second request is not from the second bot, setting a cookie such that a subsequent request received from the second client network application that includes that cookie will not be blocked by the proxy server.

20. The non-transitory machine-readable storage medium of claim 17 , wherein the operations further comprise:

receiving, at the proxy server, a third request for an action to be performed on the identified network resource;

determining that the third request originates from a search engine or a web crawler, and responsive to this determination, determining that the identified network resource is available in cache; and

responsive to determining that the identified network resource is available in cache, returning the identified network resource from the cache without querying the origin server.

21. The non-transitory machine-readable storage medium of claim 17 , wherein determining that the first request is indicative of being from the first bot includes determining that a source IP address of the first request is represented on a restricted list.

22. The non-transitory machine-readable storage medium of claim 17 , wherein determining that the first request is indicative of being from the first bot includes analyzing a set of one or more characteristics associated with the request that indicates that the first request is indicative of being from the first bot.

23. The non-transitory machine-readable storage medium of claim 22 , wherein the set of one or more characteristics include one or more of whether images are supported, whether JavaScript is supported, a type of client network application making the first request, fonts installed on the client network application making the first request, whether the client network application supports plugins, whether the client network application stores cookies, whether the client network application responds from a same IP address for various protocol requests, or any combination thereof.

24. The non-transitory machine-readable storage medium of claim 17 , wherein the operations further comprise:

receiving, at the proxy server from a second client network application, a second request for an action to be performed on the identified network resource of the origin server;

determining that the second request is not indicative of being from a second bot;

responsive to the determining that the second request is not indicative of being from a second bot, transmitting the second request to the origin server.

Assignments (2)
SECURITY INTEREST Recorded May 20, 2024
From: CLOUDFLARE, INC.
To: CITIBANK, N.A.
Reel/Frame 067472/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 8, 2022
From: HOLLOWAY, LEE HAHN; PRINCE, MATTHEW BROWNING; PYE, IAN GERALD; TOURNE, MATTHIEU PHILIPPE FRANÇOIS; ZATLYN, MICHELLE MARIE
To: CLOUDFLARE, INC.
Reel/Frame 058932/0122 →
Continuity (7)
Continuation 16889343 · Jun 1, 2020
Continuation 16363835 · Mar 25, 2019
Continuation 14066557 · Oct 29, 2013
Continuation 13251001 · Sep 30, 2011
Continuation 12939902 · Nov 4, 2010
Provisional Application 61397721 · Apr 1, 2010
Related Publication 20220164400A1 · May 26, 2022
Cited By (2)
US 12,407,754 US 12,542,776