I have a few caveats: I am not entirely clear what you are asking, and I am not familiar with WindScribe, and I haven't tried this myself. However, I believe it is possible to control the routing for a connection so it comes from one in a set of IP addresses.
I am most familiar with Windows, however, I understand it is easier to make these type of configuration changes on linux.
It is possible to open multiple VPNs at once. In Windows I typically have several VPNs configured and regularly connect to multiple networks at the same time. When you connect to a VPN your computer will be assigned an interface to interact with that network. In Windows if you run ipconfig /all
you will see something like:
PPP adapter xxx:
Connection-specific DNS Suffix . : xxx.xxx
Description . . . . . . . . . . . : xxx
Physical Address. . . . . . . . . :
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
IPv4 Address. . . . . . . . . . . : 172.20.64.19(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . :
DNS Servers . . . . . . . . . . . : 172.20.1.1
NetBIOS over Tcpip. . . . . . . . : Enabled
In this case the interface I used to connect to the remote networks is 172.20.64.19
.
Typically with the default Windows VPN, if you want your connections to go out through that VPN you will chose the Use default gateway on remote network
in the VPN configuration settings. This makes a change to your routing table which will give that VPN the highest metric. You can see the routing table and metric by typing the command route print
on a command line.
It is possible to manually update your routing table using the route add
command to define specific routing for connections from different interfaces. This article talks about how to do that. So, as I understand it, with multiple VPNs open, depending on which local interface you bind to, the outgoing connection will be routed differently.
This article suggests that there's a method which will allow you to tell the requests library to bind to a specific local interface.
If you combine these, you should be able to open multiple VPNs, update your routing table and then python should be able to go out through whichever VPN you wish, or indeed multiple VPNs at once from the same process (although through different socket connections).
With all that said, I must say while I do fiddle with my routing table occasionally, I understand it is possible to make a mess of your routing table which is difficult to fix, and it's something lots of people recommend against unless you really know what you're doing. You also need to make sure the private address ranges of the different VPNs do not clash, but I assume WindScribe should give you some configuration options here.