IP Library Granted Patent US 12,671,750
Granted Patent B2
US 12,671,750 · App. 18/738,079 · Granted Jun 30, 2026

System and method for improving internet communication by using intermediate nodes

Inventors: Derry Shribman (Tel Aviv, IL); Ofer Vilenski (Moshav Hadar Am, IL)
Assignee: BRIGHT DATA LTD.
H04L67/60G06Q40/08G06Q50/16H04L43/0864H04L51/02H04L61/5007H04L63/029H04L63/0407H04L65/612H04L67/02H04L67/06H04L67/141H04L67/567H04L67/59G05B2219/2642G08B21/043H04L12/2803H04L67/52H04L2101/659H04N21/4622H04W4/029
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 12,671,750
App. No.
18/738,079
Granted
Jun 30, 2026
Kind
B2
Abstract

A method for fetching a content from a web server to a client device is disclosed, using tunnel devices serving as intermediate devices. The client device accesses an acceleration server to receive a list of available tunnel devices. The requested content is partitioned into slices, and the client device sends a request for the slices to the available tunnel devices. The tunnel devices in turn fetch the slices from the data server, and send the slices to the client device, where the content is reconstructed from the received slices. A client device may also serve as a tunnel device, serving as an intermediate device to other client devices. Similarly, a tunnel device may also serve as a client device for fetching content from a data server. The selection of tunnel devices to be used by a client device may be in the acceleration server, in the client device, or in both. The partition into slices may be overlapping or non-overlapping, and the same slice (or the whole content) may be fetched via multiple tunnel devices.

Claims (76)

1 . A method for receiving, by a first device over the Internet, a first content identified by a first identifier and a second content identified by a second identifier, for use with a group of mobile devices, each of the mobile devices is identified in the Internet using a respective Internet Protocol (IP) address and each of the mobile devices is located in a respective country, the method comprising:

communicating, by a first server with each of the mobile devices of the group over the Internet, for identifying the respective IP address of each of the mobile devices in the group;

storing, by the first server, the respective IP address of each of the mobile devices in the group, in response to the communicating;

receiving, by the first server from the first device over the Internet, the first identifier and a first country;

selecting, by the first server, a first mobile device from the group, by selecting the respective stored IP address of the selected first mobile device, based on, or using, the received first country, in response to the receiving of the first identifier and the first country;

sending, by the first server to the selected first mobile device over the Internet, the first identifier, in response to the selecting of the first mobile device;

receiving, by the first server from the selected first mobile device over the Internet, the first content, in response to the sending of the first identifier;

sending, by the first server to the first device over the Internet, the first content, in response to the receiving of the first content;

receiving, by the first server from the first device over the Internet, the second identifier and a second country;

selecting, by the first server, a second mobile device from the group, by selecting the respective stored IP address of the selected second mobile device, based on, or using, the received second country, in response to the receiving of the second identifier and the second country;

sending, by the first server to the selected second mobile device over the Internet, the second identifier, in response to the selecting of the second mobile device;

receiving, by the first server from the selected second mobile device over the Internet, the second content, in response to the sending of the second identifier; and

sending, by the first server to the first device over the Internet, the second content, in response to the receiving of the second content.

2 . The method according to claim 1 , wherein steps are sequentially executed.

3 . The method according to claim 1 , further comprising sending, by the first server over the Internet, the respective IP addresses of at least part of, or all of, the mobile devices in the group to the first device.

4 . The method according to claim 1 , wherein the receiving of the first identifier comprises receiving of a HyperText Transfer Protocol (HTTP) request that comprises the first identifier.

5 . The method according to claim 1 , wherein the selecting further comprises randomly selecting of the selected first or second mobile device out of the mobile devices in the group.

6 . The method according to claim 5 , wherein the randomly selecting of the selected first or second device uses one or more random numbers generated by a random number generator that is based on executing an algorithm for generating pseudo-random numbers.

7 . The method according to claim 1 , wherein the first content comprises a first web-page or a part thereof, and wherein the second content comprises a second web-page or a part thereof.

8 . The method according to claim 7 , wherein the first identifier comprises a first Uniform Resource Locator (URL), and wherein the second identifier comprises a second Uniform Resource Locator (URL).

9 . The method according to claim 7 , wherein the first content is different from the second content.

10 . The method according to claim 1 , wherein the selecting of the first or second mobile device from the group, is further based on, or uses, a city, a street, a ZIP code, a longitude, a latitude, or any combination thereof, associated with the selected mobile device.

11 . The method according to claim 1 , further comprising associating the respective country to each of the mobile devices in the group using geolocation.

12 . The method according to claim 11 , wherein the geolocation is based on W3C Geolocation API.

13 . The method according to claim 1 , further comprising associating the respective country to each of the mobile devices in the group using a database to associate the respective IP address to the countries.

14 . The method according to claim 13 , wherein the database is stored in the first server.

15 . The method according to claim 13 , wherein the database is stored in a geolocation server accessible via the Internet, and the method further comprising sending the IP address of each of the mobile devices in the group to the geolocation server, and in response receiving the corresponding countries of each of the mobile devices in the group.

16 . The method according to claim 1 , wherein the selecting is further based on past activities or is further based on a timing of an event.

17 . The method according to claim 1 , wherein each of the IP addresses is in IPv4 form or in IPV6 form.

18 . The method according to claim 1 , wherein the communication with the first server is based on, or using, HTTP persistent connection.

19 . The method according to claim 1 , wherein the communication with the first device, the selected first or second mobile device, or the first server, is based on, or according to, TCP/IP protocol or connection.

20 . The method according to claim 1 , wherein the communicating with each of the mobile devices in the group is initiated by each of the mobile devices of the group.

21 . The method according to claim 1 , further comprising establishing a respective connection with each of the mobile devices in the group in response to the communicating, and wherein the communicating with the selected first or second mobile device is over the respective established connection.

22 . The method according to claim 21 , wherein each of the mobile devices of the group is communicating using Transmission Control Protocol (TCP), and wherein the respective connection is established by performing ‘Active OPEN’ or ‘Passive OPEN’.

23 . The method according to claim 1 , wherein the first or second content includes, consists of, or comprises, a part or whole of, a computer file, text data, audio data, voice data, multimedia data, video data, music data, or any combination thereof.

24 . The method according to claim 1 , further comprising storing, operating, or using, by the first server, a server operating system that consists of, comprises, or is based on, Microsoft Windows Server®, Linux, or UNIX.

25 . The method according to claim 24 , wherein the server operating system consists of, comprises, or is based on, Microsoft Windows Server® 2003 R2, 2008, 2008 R2, 2012, or 2012 R2 variant, Linux™ or GNU/Linux based Debian GNU/Linux, Debian GNU/kFreeBSD, Debian GNU/Hurd, Fedora™, Gentoo™, Linspire™, Mandriva, Red Hat® Linux, SuSE, Ubuntu®, UNIX® variant Solaris™, AIX®, Mac™ OS X, FreeBSD®, OpenBSD, NetBSD®, or any combination thereof.

26 . The method according to claim 1 , wherein each of the mobile devices in the group stores, operates, or uses, a client operating system.

27 . The method according to claim 26 , further comprising, operating, or using, by at least part of the mobile devices in the group, the client operating system.

28 . The method according to claim 27 , wherein the client operating system consists of, comprises, or is based on, Microsoft Windows 7, Microsoft Windows XP, Microsoft Windows 8, Microsoft Windows 8.1, Linux, Google Chrome OS, or any combination thereof.

29 . The method according to claim 27 , wherein the client operating system comprises a mobile operating system.

30 . The method according to claim 29 , wherein the mobile operating system consists of, comprises, or is based on, Android version 2.2 (Froyo), Android version 2.3 (Gingerbread), Android version 4.0 (Ice Cream Sandwich), Android Version 4.2 (Jelly Bean), Android version 4.4 (KitKat), Apple iOS version 3, Apple iOS version 4, Apple iOS version 5, Apple iOS version 6, Apple iOS version 7, Microsoft Windows® Phone version 7, Microsoft Windows® Phone version 8, Microsoft Windows® Phone version 9, Blackberry® operating system, or any combination thereof.

31 . The method according to claim 26 , wherein each of the mobile devices in the group comprises, or consists of, a smartphone.

32 . The method according to claim 26 , wherein the communicating by the first server, with each of the mobile devices in the group, further comprises receiving, from each of the mobile devices in the group, an availability of the respective mobile device for receiving messages from the first server and responding to the received messages.

33 . The method according to claim 32 , wherein the storing, by the first server, further comprises storing the respective availability of each of the mobile devices in the group.

34 . The method according to claim 32 , wherein the selecting further comprises selecting based on the availability of the selected device.

35 . The method according to claim 1 , further comprising:

measuring, by at least one of the mobile devices in the group, a respective utilization level of a respective resource; and

receiving, from the at least one of the mobile devices in the group, a respective message that is based on the respective measured utilization level.

36 . The method according to claim 35 , further comprising:

measuring, by each of the mobile devices in the group, the respective utilization level of the respective resource; and

receiving, by the first server from each of the mobile devices in the group, a respective message that is based on the respective measured utilization level.

37 . The method according to claim 35 , wherein the message comprises the respective measured utilization level.

38 . The method according to claim 35 , wherein the selecting of the first or second mobile device is based on, or uses, the respective measured utilization level.

39 . The method according to claim 35 , wherein the measuring of the respective utilization level comprises periodically measuring of the respective utilization level.

40 . The method according to claim 39 , wherein the receiving of the message comprises periodically receiving of the message.

41 . The method according to claim 40 , wherein the sending of the message is performed every 10, 20, 30, 50, or 100 milliseconds, every 1, 2, 3, 5, or 10 seconds, or every 1, 2, 3, 5, or 10 minutes.

42 . The method according to claim 35 , wherein the measuring of the respective utilization level comprises continuously measuring of the respective utilization level.

43 . The method according to claim 35 , for use with a criterion associated with the utilization level of the resource, the method further comprising determining, by the at least one of the mobile devices in the group, whether the respective measured utilization level satisfies the criterion.

44 . The method according to claim 43 , wherein the sending of the message is in response to determining that the respective measured utilization level satisfies the criterion.

45 . The method according to claim 43 , for use with a threshold level, and wherein the criterion is satisfied when the respective measured utilization level is above or below the threshold level.

46 . The method according to claim 35 , for use with a threshold level, wherein the receiving of the message is in response to the measured utilization level crossing the threshold level.

47 . The method according to claim 35 , wherein the resource comprises, or consists of, a hardware component or a using of the hardware component, in the respective mobile device in the group.

48 . The method according to claim 47 , wherein the hardware component comprises, or consists of, a processor or Central Processing Unit (CPU) operation.

49 . The method according to claim 48 , wherein the resource utilization is based on, or comprises, the processor or CPU time of executing one or more threads or processes, wherein the resource utilization is based on, or comprises, the processor or CPU idling time, or wherein the resource utilization is based on, or comprises, the processor or CPU executing a system idle process.

50 . The method according to claim 47 , wherein the hardware component comprises, or consists of, a memory, and wherein the resource utilization is based on, or comprises, an amount of used or unused location or space of the memory.

51 . The method according to claim 35 , wherein the resource comprises, or consists of, input or output capability.

52 . The method according to claim 51 , wherein the resource comprises, or consists communication of, bandwidth of communication with another device over the Internet.

53 . The method according to claim 52 , wherein the resource comprises, or consists of, communication bandwidth of communication with the first server over the Internet, or wherein the resource utilization is based on, or according to, IETF RFC 2914.

54 . The method according to claim 1 , further comprising periodically receiving, by the first server from at least one of the mobile devices in the group, an ‘heartbeat’ message that comprises a status of the respective mobile device, or is in response to the status of the respective mobile device.

55 . The method according to claim 54 , wherein the status is based on a measured utilization level of a resource.

56 . The method according to claim 54 , wherein a time period between sent multiple ‘heartbeat’ messages is at least 10 milliseconds, 20 milliseconds, 30 milliseconds, 50 milliseconds, 100 milliseconds, 1 second, 2 seconds, 3 seconds, 5 seconds, 10 seconds, 20 seconds, 30 seconds, 50 seconds, 100 seconds, 1 minute, 2 minutes, 3 minutes, minutes 5, or 10 minutes.

57 . The method according to claim 1 , wherein the first content and the second content are stored in a web server.

58 . The method according to claim 1 , wherein the first content is stored in a first web server, and wherein the second content is stored in a second web server.

59 . The method according to claim 58 , wherein the receiving of the first content comprises receiving of the first content from the first web server via the selected first mobile device as a source device, so that the first web server is prevented from identifying the first device as a requesting client device.

60 . The method according to claim 59 , wherein the receiving of the second content comprises receiving of the second content from the second web server via the selected second mobile device as a source device, so that the second web server is prevented from identifying the first device as a requesting client device.