BrowserAutomationStudio 21.4.1 has been released


  • administrators

    There are a several big changes in this version:

    • The 'Proxy' action now not only changes the proxy, but also makes the proxy change look more natural.
    • Working with main window (the black one) is now more intuitive and user friendly.
    • Fixed one very unpleasant bug associated with the delayed release of memory when working with a single browser for a long time.

    https://i.imgur.com/guDZJKZ.png


    https://i.imgur.com/BYhZH2V.png

    Let's look at each change in more detail.

    We will start with some information about WebRTC, since this functionality is built into any modern browser, and exposes your real ip even if you are using a proxy. WebRTC is a api that helps establish a connection between browsers and transfer information between them. Moreover, preference is given to a direct connection, and only if both browsers are behind a firewall or NAT, then a special server is used to transmit traffic between them. Establishing a connection is not easy given the fact that ipv4 addresses are not enough for all devices, so most of them are resides in private networks, have addresses like 192.168.. Or 172.16.. and exchange information with others through NAT. WebRTC uses following algorithm to establish a connection - devices receive information about the configuration of their networks and exchange it via some other channel, then they try to connect using different configuration options(different ips). Suppose if devices are in the same network, then to establish a connection, it is enough to use ip in this network, if one of the devices has an external ip, then it acts as a "server" and the second device connects to it, or vice versa. We are interested only in the configuration of the network, because it contains real ip addresses. WebRTC allows reading them, and even editing via javascript before sending it to the other party. The information is in SDP format described in these documents https://tools.ietf.org/html/rfc5245#section-15 https://tools.ietf.org/html/rfc4566. The following link demonstrates how it can be obtained through browser https://jsfiddle.net/wrbyLqkn/1/, most likely you will find your real ip there. Browser external ip is a part of this information, it can be obtained through a request to the STUN server. The functionality of this server is very simple - it returns real ip address to the device that made request. The site sets the STUN server address by itself, for example, in the code above, the server stun.l.google.com:19302 was used. Requests to this server goes through the UDP protocol(not a TCP as usual) bypassing the proxy. Summarizing the above, javascript can make a request to an arbitrary server without a proxy and receives a response in the form of a real external ip. Here is a good article if you want to know more https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/

    Until recently, BAS prohibited any WebRTC ip requests. In this version, it changes the ip received from WebRTC to the external ip of the current proxy. This happens by default when using the 'Proxy' action, however, the new functionality can be disabled. Lets review details of implementation:

    1. Ip substitution occurs at the browser level, it is impossible to detect it via js.
    2. Different browsers may display information in SDP format, however it is slightly different. Substitution can be done through the replacement of the text, and this method can be detected by checking some details specific to the browser. BAS provides information exactly as Chrome does, without replacing text.
    3. Requests to any STUN server are denied. Even if you prohibit receiving information directly through js, but leave the browser an opportunity to make a request to the server, the real ip will not be known to the client, but it will be known to the server and if you configure several servers or several ports and associate the user with a specific server, you can get ip on the client side. BAS protects against this method.

    There is a simple method to check if a site is trying to get your ip through WebRTC or not, just install Wireshark, set the 'stun' string in the filter field, and go to the site, which you want to check. If it uses WebRTC, requests will be displayed in the application window. Here is a video that demonstrates this: https://i.imgur.com/LwKQY7S.gifv

    In the case of BAS, there will be no requests, even if ip will return.

    Why not make requests to the STUN server through proxy?
    Not all proxies supports the UPD protocol, although this is indicated in the specification. An example of such a proxy is https://i.imgur.com/ubKq7nZ.gifv In the future, BAS will check proxies for this feature, but now all requests to the STUN server are prohibited.

    As you can see that current WebRTC replacement implementation is not ideal but it is close enough to it.

    In addition, the action 'Proxy' is now also able to automatically change the geolocation and time zone of the browser.

    Changing the time zone now also occurs at the browser level - absolutely all dates that the browser returns now have a time zone exactly the same as that timezone of proxy.

    BAS has learned how to correctly return the modified date, taking into account DST.

    Another way how you can obtain your approximate real location with browser is to use internationalization api( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat ). Example of usage: https://jsfiddle.net/0Lq2km96/, this link should display your approximate real location regardless of proxy and vpn.

    These values are also replaced when using the 'Proxy' action, you can verify this by accessing previous page from BAS.

    Finally, it could happen that the ip that you use to access the proxy does not match its external ip, in such cases BAS will receive an external ip through the ip.bablosoft.com service. Unfortunately, there is no way to get an address without a network request. The service should work stably at 20k requests per second. This can be disabled.


    A lot of attention in the new update was paid to the usability of the main window.

    For items whose value may not be completely clear, hints have appeared.
    Many convenient details were implemented: the list of recent projects is now always on the main panel, the path to the current project can be copied, all icons are replaced with those that look better with a small size of elements, the icons of running browsers are changed.
    Added the ability to quickly share projects - open a project from link and upload to Google Drive.
    Updated project compilation window, it has become more intuitive and integrated with the cloud. Now the project can be updated / created directly from BAS, it is possible avoid creating an archive during compilation.


    A lot of time was spent searching to fix the bug with the delayed memory release. The bug exists all the time throughout the life of the project and manifested itself only when several browsers worked 10 or more hours without restarting. Memory consumption increased by about 5-10 mb per hour, after a few days of continuous work, the project becomes unusable. The error was related to the Qt library, a method was found to work around this bug.


    I hope that you will enjoy the new version and it will be useful!



  • I am extremely impressed by this update good sir. You are one talented genius. Thank you!