IP Library Granted Patent US 11,621,924
Granted Patent B2
US 11,621,924 · App. 17/490,975 · Granted Apr 4, 2023

Incorporating web applications into web pages at the network level

Inventors: Matthew Browning Prince (San Francisco, CA); Matthieu Philippe François Tourne (San Francisco, CA); Christopher Stephen Joel (San Francisco, CA); John Brinton Roberts (San Francisco, CA); Michael Jonas Sofaer (San Francisco, CA); Jason Thomas Walter Benterou (Burlingame, CA)
Assignee: CLOUDFLARE, INC.
H04L47/70G06F8/61H04L67/01H04L67/02H04L67/34H04L67/565
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,621,924
App. No.
17/490,975
Granted
Apr 4, 2023
Kind
B2
Abstract

A proxy server automatically includes web applications in web pages at the network level. The proxy server receives, from a client device, a request for a network resource at a domain and is hosted at an origin server. The proxy server retrieves the requested network resource. The retrieved network resource does not include the web applications. The proxy server determines that the web applications are to be installed within the network resource. The proxy server automatically modifies the retrieved network resource to include the web applications. The proxy server transmits a response to the client device that includes the modified network resource. The network resource may remain unchanged at the origin server.

Claims (69)

1. A method in a proxy server for automatically including a plurality of web applications on one or more web pages, the method comprising the following operations performed by the proxy server:

receiving a first set of one or more web application installation rules that indicate that the plurality of web applications are to be installed within a set of one or more web pages;

receiving, from a first client device, a first request for a web page of the set of web pages;

retrieving the requested web page, wherein at a first time when the requested web page is retrieved, that web page does not include the plurality of web applications;

determining, based on the first set of one or more web application installation rules, that the plurality of web applications are to be installed within the web page;

automatically modifying the retrieved web page to include the plurality of web applications to obtain a first modified web page;

transmitting a response to the first client device, the response including the first modified web page;

receiving a second set of one or more web application installation rules that indicate that a first one of the plurality of web applications is not to be installed within the set of web pages as a result of the first one of the plurality of web applications having a vulnerability;

receiving, from a second client device, a second request for the web page of the set of web pages;

retrieving the requested web page, wherein at a second time when the requested web page is retrieved, that web page does not include the plurality of web applications;

determining, based at least in part on the second set of web application installation rules, that the first one of the plurality of web applications is not to be installed within the web page and that zero or more other ones of the plurality of web applications which are different from the first one of the plurality of web applications are to be installed within the web page;

automatically modifying the retrieved web page to include the other ones of the plurality of web applications to obtain a second modified web page without the first one of the plurality of web applications; and transmitting a second response to the second client device, the second response including the second modified web page.

2. The method of claim 1 further comprising:

receiving a third set of one or more web application installation rules that indicate that the first one of the plurality of web applications is to be installed within the set of web pages as the set of web pages are passed through the proxy server and delivered to requesting client computing devices.

3. The method of claim 2 further comprising:

receiving an updated version of the first one of the plurality of web applications to the proxy server, wherein the updated version includes a patch for the vulnerability.

4. The method of claim 3 further comprising:

receiving, from a third client device, a third request for the web page of the set of web pages;

retrieving the requested web page, wherein at a third time when the requested web page is retrieved, that web page does not include the plurality of web applications;

determining, based at least in part on the third set of web application installation rules, that the plurality of web applications are to be installed within the web page;

automatically modifying the retrieved web page to include the other ones of the plurality of web applications and the updated version of the first one of the plurality of web applications to obtain a third modified web page; and

transmitting a third response to the third client device, the third response including the third modified web page.

5. The method of claim 1 , wherein the automatically modifying the retrieved web page to include the plurality of web applications includes the proxy server performing the following:

for each of the plurality of web applications, performing the following:

determining a position in the retrieved web page for that web application,

scanning the retrieved web page to locate the determined position, and

inserting the web application at the located position.

6. The method of claim 1 , wherein the retrieving the requested web page includes performing the following operations:

transmitting a request for the web page to an origin server; and

receiving, from the origin server, a response that includes the web page.

7. The method of claim 1 , wherein the retrieving the requested web page includes performing the following operations:

accessing a cache to retrieve the web page.

8. The method of claim 1 , wherein the plurality of web applications includes two or more of the following: an analytics application, an affiliate link application, a monitoring application, a contextual search application, a translation application, a webmaster tools application, a support application, a malware/virus scan application, a game application, a library application, a website backup application, a testing application, a security monitoring application, an audio application, a loyalty program application, and a policy management application.

9. The method of claim 1 , wherein the first request is received at the proxy server as a result of a Domain Name System (DNS) request for a domain of the web page resolving to the proxy server instead of an origin server handling the domain, wherein the origin server is one of a plurality of origin servers that resolve to the proxy server and are owned by different entities.

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

receiving a first set of one or more web application installation rules that indicate that a plurality of web applications are to be installed within a set of one or more web pages;

receiving, from a first client device, a first request for a web page of the set of web pages;

retrieving the requested web page, wherein at a first time when the requested web page is retrieved, that web page does not include the plurality of web applications;

determining, based on the first set of one or more web application installation rules, that the plurality of web applications are to be installed within the web page;

automatically modifying the retrieved web page to include the plurality of web applications to obtain a first modified web page;

transmitting a response to the first client device, the response including the first modified web page;

receiving a second set of one or more web application installation rules that indicate that a first one of the plurality of web applications is not to be installed within the set of web pages as a result of the first one of the plurality of web applications having a vulnerability;

receiving, from a second client device, a second request for the web page of the set of web pages;

retrieving the requested web page, wherein at a second time when the requested web page is retrieved, that web page does not include the plurality of web applications;

determining, based at least in part on the second set of web application installation rules, that the first one of the plurality of web applications is not to be installed within the web page and that zero or more other ones of the plurality of web applications which are different from the first one of the plurality of web applications are to be installed within the web page;

automatically modifying the retrieved web page to include the other ones of the plurality of web applications to obtain a second modified web page without the first one of the plurality of web applications; and

transmitting a second response to the second client device, the second response including the second modified web page.

11. The non-transitory computer-readable storage medium of claim 10 further comprising:

receiving a third set of one or more web application installation rules that indicate that the first one of the plurality of web applications is to be installed within the set of web pages as the set of web pages are passed through the proxy server and delivered to requesting client computing devices.

12. The non-transitory computer-readable storage medium of claim 11 further comprising:

receiving an updated version of the first one of the plurality of web applications to the proxy server, wherein the updated version includes a patch for the vulnerability.

13. The non-transitory computer-readable storage medium of claim 12 , wherein the operations further comprise:

receiving, from a third client device, a third request for the web page of the set of web pages;

retrieving the requested web page, wherein at a third time when the requested web page is retrieved, that web page does not include the plurality of web applications;

determining, based at least in part on the third set of web application installation rules, that the plurality of web applications are to be installed within the web page;

automatically modifying the retrieved web page to include the other ones of the plurality of web applications and the updated version of the first one of the plurality of web applications to obtain a third modified web page; and

transmitting a third response to the third client device, the third response including the third modified web page.

14. The non-transitory computer-readable storage medium of claim 10 , wherein the automatically modifying the retrieved web page to include the plurality of web applications includes:

for each of the plurality of web applications, performing the following:

determining a position in the retrieved web page for that web application,

scanning the retrieved web page to locate the determined position, and

inserting the web application at the located position.

15. The non-transitory computer-readable storage medium of claim 10 , wherein the retrieving the requested web page includes performing the following operations:

transmitting a request for the web page to an origin server; and

receiving, from the origin server, a response that includes the web page.

16. The non-transitory computer-readable storage medium of claim 10 , wherein the retrieving the requested web page includes performing the following operations:

accessing a cache to retrieve the web page.

17. The non-transitory computer-readable storage medium of claim 10 , wherein the plurality of web applications includes two or more of the following: an analytics application, an affiliate link application, a monitoring application, a contextual search application, a translation application, a webmaster tools application, a support application, a malware/virus scan application, a game application, a library application, a website backup application, a testing application, a security monitoring application, an audio application, a loyalty program application, and a policy management application.

18. The non-transitory computer-readable storage medium of claim 10 , wherein the first request is received at the proxy server as a result of a Domain Name System (DNS) request for a domain of the web page resolving to the proxy server instead of an origin server handling the domain, wherein the origin server is one of a plurality of origin servers that resolve to the proxy server and are owned by different entities.

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 Sep 30, 2021
From: PRINCE, MATTHEW BROWNING; TOURNE, MATTHIEU PHILIPPE FRANÇOIS; JOEL, CHRISTOPHER STEPHEN; ROBERTS, JOHN BRINTON; SOFAER, MICHAEL JONAS; BENTEROU, JASON THOMAS WALTER
To: CLOUDFLARE, INC.
Reel/Frame 057661/0248 →
Continuity (4)
Continuation 16272289 · Feb 11, 2019
Continuation 14503297 · Sep 30, 2014
Continuation 13474529 · May 17, 2012
Related Publication 20220021626A1 · Jan 20, 2022