# US 2019/0173848 A1 · Local Interception Of Traffic To A Remote Forward Proxy

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2019/0173848 A1
- Document ID: US20190173848A1
- Status: Published application
- Kind: A1
- Application number: 16/058,511
- Filed: 2018-08-08
- Published: 2019-06-06
- Earliest claimed: 2017-12-01
- Assignees: Anchorfree, Inc.
- Applicants: AnchorFree Inc.
- Inventors: Eugene Lapidous; Sean Ghiocel; Maxim Molchanov; Eduardo Panisset
- Web page: https://patentgrep.com/patent/US20190173848A1

## CPC

- H04L 63/0281: {Proxies}
- G06F 9/545: {where tasks reside in different layers, e.g. user- and kernel-space}
- H04L 12/4633: {Interconnection of networks using encapsulation techniques, e.g. tunneling}
- H04L 12/4641: {Virtual LANs, VLANs, e.g. virtual private networks [VPN] (LAN interconnection over a bridge based backbone H04L12/462; encapsulation techniques H04L12/4633; routing of packets H04L45/00; packet switches H04L49/00; virtual private networks for security H04L63/0272)}
- H04L 45/74: Address processing for routing
- H04L 61/4511: using domain name system [DNS]
- H04L 63/0272: {Virtual private networks}
- H04L 63/029: {Firewall traversal, e.g. tunnelling or, creating pinholes}
- H04L 63/0428: {wherein the data content is protected, e.g. by encrypting or encapsulating the payload}
- H04L 63/164: {at the network layer}
- H04L 63/30: {for supporting lawful interception, monitoring or retaining of communications or communication related information (circuit switched telephony call monitoring H04M3/2281)}
- H04L 67/56: Provisioning of proxy services (store-and-forward switching systems in data switching networks H04L12/54)
- H04L 67/564: Enhancement of application control based on intercepted application data
- H04L 69/22: Parsing or analysis of headers
- H04L 61/58: Caching of addresses or names
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An application using a 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

### Claim 1

A method for processing requests to a proxy server, the method comprising:
receiving, by a first computing module executing on a user's computer from a second computing module on a user's computer, a first request formatted as a request to a proxy server at a destination associated with a first identifier, the first identifier being a network identifier different from a network identifier of the user's computer; and
terminating the first request by a third computer module executing on the user's computer without sending the first request to a destination associated with the first identifier.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first request contains a first domain name associated with a content server, the method further comprising:
obtaining, by the third computer module, a second identifier associated with the first domain name; and
sending a second request from the user's computer to a destination associated with the second identifier without sending the second request to a destination associated with the first identifier.

### Claim 3 (depends on 2)

The method as in claim 2, wherein obtaining the second identifier comprises issuing a Domain Name Service (DNS) request to resolve the first domain name.

### Claim 4 (depends on 3)

The method of claim 3, wherein the DNS request is issued to an IP address different from an IP address of a DNS server used by one or more applications executed on the user's computer.

### Claim 5 (depends on 3)

The method of claim 3, further comprising:
receiving a response to the DNS request; and
storing the response on the user's computer without updating a DNS cache used by the one or more applications executed on the user's computer.

### Claim 6 (depends on 1)

The method of claim 1, where receiving the first request by the first module comprises receiving the first request from a virtual network device enabled to shift network traffic from a kernel space to a user space.

### Claim 7 (depends on 1)

The method as in claim 1, where the third computing module is a local proxy server.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
before receiving the first request, specifying proxy setting on the user's computer, the proxy setting including the first network identifier.

### Claim 9 (depends on 8)

The method of claim 8, where the proxy setting is specified as a one of the settings of a virtual private network (VPN).

### Claim 10 (depends on 1)

The method of claim 1, where the first network identifier is an IP address.

### Claim 11

A method for processing requests to a proxy server, the method comprising:
receiving, by a first computing module on a user's computer from a second computing module on the user's computer, a first request formatted as a request to a first proxy server at a destination associated with a first identifier, first identifier being a network identifier different from a network identifier of the user's computer;
encrypting, on the user's computer, at least a portion of the received first request to obtain an encrypted portion; and
sending the encrypted portion to a destination associated with a second identifier, second identifier being a network identifier different from the first identifier and from the network identifier of the user's computer without sending the encrypted portion to the destination associated with the first identifier

### Claim 12 (depends on 11)

The method of claim 11, wherein sending the encrypted portion to the destination associated with second identifier comprises redirecting the encrypted portion to a second proxy server associated with the second identifier.

### Claim 13 (depends on 11)

The method of claim 11, wherein encrypting the at least the portion of the first request comprises encrypting one or more plaintext headers from the group consisting of CONNECT, HOST and User Agent headers.

### Claim 14 (depends on 11)

The method of claim 11, wherein encrypting the at least the portion of the first request and sending it to the destination associated with the second identifier comprises sending the at least the portion inside an encrypted Virtual Private Network (VPN) tunnel from a VPN client on the user's computer to a VPN server associated with the second identifier.

### Claim 15 (depends on 11)

The method of claim 11, further comprising:
before receiving the first request, specifying proxy setting on the user's computer, the proxy setting including the first identifier.

### Claim 16 (depends on 15)

The method of claim 15, wherein the proxy settings are included in settings for a Virtual Private Network (VPN).

### Claim 17 (depends on 14)

The method of claim 14, where sending the at least portion of the first request to the destination associated with the second identifier comprises sending the first request to a second proxy server through a VPN tunnel of the VPN, the second proxy server being different from the first proxy server.

### Claim 18 (depends on 11)

The method of claim 11, wherein receiving the first request by the first module comprises receiving data of the first request from a virtual network device, the virtual network device shifting the data of the first request from a kernel space to a user space, the first module also operating in the user space.

### Claim 19 (depends on 11)

The method of claim 11, further comprising:
in addition to receiving, on the user's computer, the first request formatted as a request to the first proxy server, receiving, on the user's computer, one or more additional requests formatted as requests to one or more content servers, the one or more additional requests being addressed to one or more third identifiers;
sending at least a portion of received traffic addressed to the first identifier as part of the first request to a remote proxy server associated with the second identifier;
sending at least a portion of one or more requests to the one or more content servers to a VPN server associated with a fourth identifier that is a network identifier different from the first identifier and the second identifier.

### Claim 20 (depends on 19)

The method of claim 19, where the remote proxy server and the VPN server are located on a same computer that is different from the user's computer.

### Claim 21 (depends on 19)

The method of claim 19, further comprising:
issuing, by the user's computer, one or more Domain Name Service (DNS) requests for domain names associated with the one or more third identifiers; and
refraining from issuing, by the user's computer, any DNS requests for the traffic of the first request and addressed to the first identifier.

### Claim 22

A method comprising:
specifying, on a user's computer, one or more Virtual Private Network (VPN) settings including a proxy setting instructing a VPN service to proxy VPN traffic through a remote proxy server;
executing a proxy interception module on the user's computer programmed to intercept network traffic routed according to the proxy setting to the remote proxy server;
activating the VPN service on the user's computer according to the one or more VPN settings;
intercepting, by the proxy interception module, network traffic addressed to the remote proxy server according to the one or more VPN settings;
sending, by the user's computer, the intercepted network traffic to a destination other than the remote proxy server included in the VPN settings;
refraining from sending the intercepted network traffic to the remote proxy server referenced in the VPN settings.

### Claim 23 (depends on 22)

The method of claim 22, wherein the proxy setting includes a first network identifier and a destination port of the remote proxy server, the method further comprising:
providing at least one of the first network identifier and the destination port to the proxy interception module to enable interception of the intercepted network traffic; and
intercepting, by the proxy interception module, the intercepted network traffic in response to detecting the at least one of the first network identifier and the destination port in the intercepted network traffic.

### Claim 24 (depends on 23)

The method of claim 23, wherein the first network identifier is not associated with a computer enabled to function as a proxy server.

### Claim 25 (depends on 24)

The method of claim 24, wherein the first network identifier is selected from the group consisting of a non-routable IP address, a reserved IP address, and a test IP address.

### Claim 26 (depends on 23)

The method of claim 23, wherein the first network identifier is a domain name not associated with a DNS (Domain Name Service) record.

### Claim 27 (depends on 26)

The method of claim 26, further comprising:
intercepting a DNS request to the domain name and returning an IP address to a source of the DNS request, the IP address being accessible by the proxy interception module on the user's computer before the DNS request was issued.

### Claim 28 (depends on 23)

The method of claim 23, further comprising:
providing an IP address associated with the first network identifier as a configuration parameter in the proxy setting.

### Claim 29 (depends on 22)

The method of claim 22, wherein intercepting the network traffic comprises receiving the traffic from a virtual network device programmed to shift the network traffic from a kernel space to a user space.

### Claim 30 (depends on 22)

The method of claim 22, wherein sending intercepted network traffic to the destination other than the remote proxy server included in the VPN settings comprises sending the network traffic to a local proxy server on the user's computer.
