IP Library Granted Patent US 11,088,994
Granted Patent B2
US 11,088,994 · App. 16/058,567 · Granted Aug 10, 2021

Local interception of traffic to a remote forward proxy

Inventors: Eugene Lapidous (Saratoga, CA); Sean Ghiocel (San Jose, CA); Maxim Molchanov (Mountain View, CA); Eduardo Panisset (San Jose, CA)
Assignee: Twingate Inc.
H04L63/029G06F9/545H04L12/4633H04L12/4641H04L45/74H04L61/1511H04L63/0272H04L63/0281H04L63/0428H04L63/164H04L63/30H04L67/28H04L67/2819H04L69/22H04L61/6009
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,088,994
App. No.
16/058,567
Granted
Aug 10, 2021
Kind
B2
Abstract

An application using a virtual private network (VPN) is programmed to transmit proxy traffic to a remote proxy server. Traffic to the proxy server is intercepted, shifted to user space, and processed according to one or more options. Traffic may be terminated by a local proxy that resolves domain names in traffic and requests referenced content. Intercepted traffic may include plain text data in headers that is encrypted before forwarding to a different proxy server. Traffic may be evaluated, such as a User Agent string in order to determine routing choices, such as blocking, throttling, local termination, transmitting through a VPN, or other options. Multiple VPNs may operate on the same user computer and proxy traffic may be intercepted and processed by transmitting it through a VPN, bypassing all VPNs, or routing through a different VPN.

Claims (30)

1. A system comprising one or more processing units and one or more memory units operably coupled to the one or more processing units, the one or more memory units storing executable code effective to cause the one or more processing units to:

receive a first request, the first request being formatted as a proxy server request to a proxy server at a destination associated with a first network identifier, the destination being remote from the system, the first request containing a first domain name and a User Agent string; and

select as a selected processing choice one of a plurality of processing choices to apply to the first request based at least partially on content of the User Agent string;

wherein a first processing choice of the plurality of processing choices includes:

terminating the first request by a local proxy on the system; and

then sending the first request to a second destination associated with the first domain name without forwarding any part of the first request to the destination associated with the first network identifier.

2. The system of claim 1 , wherein a second processing choice of the plurality of processing choices includes forwarding at least a portion of the first request to a second remote proxy server associated with a second network identifier that is different from the first network identifier.

3. The system of claim 1 , wherein a second processing choice of the plurality of processing choices includes blocking the first request without sending data from the first request to either of the destination associated with the first network identifier and the second destination associated with the first domain name.

4. The system of claim 1 , wherein the executable code is further effective to cause the one or more processing units to select the selected processing choice from the plurality of processing choices by analyzing at least a portion of the User Agent string.

5. The system of claim 4 , wherein the executable code is further effective to cause the one or more processing units to analyze the at least the portion of the User Agent string by sending a classification request to a remote classification computer in a computer network and receiving a classification response from the remote classification computer.

6. The system of claim 1 , wherein the first domain name and the User Agent string are included in the first request as plain text whereas a payload of the first request is encrypted before being received by the system.

7. The system of claim 6 , where the payload is encrypted according to Hyper Text Transport Protocol Secure (HTTPS) specification.

8. The system of claim 1 , wherein the first domain name is included in the first request within a header selected from the group consisting of CONNECT, HOST and SNI headers.

9. A system comprising one or more processing units and one or more memory units operably coupled to the one or more processing units, the one or more memory units storing executable code effective to cause the one or more processing units to:

receive a first request formatted as a proxy server request to a proxy server at a destination associated with a first network identifier and remote from the system, the first request containing a first domain name;

determine an application that issued the first request; and

select as a selected processing choice one of a plurality of processing choices to apply to the first request based on the application that issued the first request;

wherein a first processing choice of the plurality of processing choices includes terminating the first request by a local proxy and then sending the first request to a second destination associated with the first domain name without forwarding any part of the first request to the destination associated with the first network identifier.

10. The system of claim 9 , wherein determining the application that issued the first request being at least partially dependent on the first domain name.

11. The system of claim 9 , wherein the executable code is further effective to cause the one or more processing units to at least partially determine the application that issued the first request using contents of at least one header selected from the group consisting of CONNECT, HOST and SNI headers included in the first request.

12. The system of claim 9 , wherein the first request additionally containing a User Agent string; and

wherein the executable code, when executed by the one or more processing units, further causes the one or more processing units to at least partially determine the application that issued the first request based on the content of the User Agent string.

13. The system of claim 12 , wherein the executable code, when executed by the one or more processing units, further causes the one or more processing units to at least partially determine the application that issued the first request based on contents of at least two headers selected from the group consisting of USER_AGENT, CONNECT, HOST and SNI headers included in the first request.

14. The system of claim 9 , wherein the executable code, when executed by the one or more processing units, further causes the one or more processing units to select the selected processing choice from the plurality of processing choices for the first request by analyzing one or more previously intercepted requests associated with one or more different applications.

15. The system of claim 14 , wherein the executable code, when executed by the one or more processing units, further causes the one or more processing units to block the first request if the one or more previously intercepted requests were associated with one or more applications of a pre-defined list of high-priority applications.

16. The system of claim 14 , wherein the executable code, when executed by the one or more processing units, further causes the one or more processing units to block the first request issued if the one or more previously intercepted requests were associated with higher priority applications than the application that issued the first request.

17. The system of claim 9 further comprising a second remote proxy server associated with a second network identifier that is different from the first network identifier, wherein a second processing choice of the plurality of processing choices includes forwarding at least a portion of the first request to the second remote proxy server.

18. The system of claim 17 , wherein the second remote proxy server being programmed to throttle a rate of data exchange between the application that issued the first request and a content server associated with the first domain name.

19. The system of claim 9 , wherein a second processing choice of the plurality of processing choices includes sending at least a portion of the first request through an encrypted tunnel established between a local Virtual Private Network (VPN) client and a remote VPN server.

20. The system of claim 9 , wherein a second processing choice of the plurality of processing choices includes measuring an amount of data consumed by traffic associated with the application that issued the first request.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE SERIAL N. 15/597,036 PREVIOUSLY RECORDED AT REEL: 053245 FRAME: 0874. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 10, 2023
From: PANGO INC.
To: TWINGATE HOLDINGS INC.
Reel/Frame 063027/0894 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE SERIAL NO. 15/597,036 PREVIOUSLY RECORDED AT REEL: 053257 FRAME: 0637. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 10, 2023
From: TWINGATE HOLDINGS INC.
To: TWINGATE INC.
Reel/Frame 063141/0210 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2020
From: TWINGATE HOLDINGS INC.
To: TWINGATE INC.
Reel/Frame 053257/0637 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2020
From: PANGO INC.
To: TWINGATE HOLDINGS INC.
Reel/Frame 053245/0874 →
RELEASE OF SECURITY INTEREST Recorded Jul 1, 2020
From: PACIFIC WESTERN BANK
To: PANGO INC. (FORMERLY KNOWN AS ANCHORFREE INC.)
Reel/Frame 053116/0489 →
SECURITY INTEREST Recorded Jun 25, 2020
From: PANGO INC.
To: PACIFIC WESTERN BANK
Reel/Frame 053039/0417 →
CHANGE OF NAME Recorded Jan 10, 2020
From: ANCHORFREE INC.
To: PANGO INC.
Reel/Frame 051566/0680 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2018
From: LAPIDOUS, EUGENE; GHIOCEL, SEAN; MOLCHANOV, MAXIM; PANISSET, EDUARDO
To: ANCHORFREE INC.
Reel/Frame 046588/0349 →