<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Bablosoft Company</title><subtitle>Bablosoft — an ecosystem of powerful no-code tools for automation and anti-detect, your key to getting rid of routine tasks and anonymous automation.</subtitle><author><name>Bablosoft Company</name></author><id>https://teletype.in/atom/bablosoft</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/bablosoft?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/bablosoft?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-07T06:07:07.744Z</updated><entry><id>bablosoft:Localization-BAS-Modules-en</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/Localization-BAS-Modules-en?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>Module localization. How to rename actions in a module</title><published>2025-06-03T15:18:39.088Z</published><updated>2025-06-11T23:52:17.155Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/de/4a/de4ad9f6-27de-459f-9c59-d76cb296dbd2.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://i.imgur.com/lRmDlag.png&quot;&gt;In this article, we will analyze the process of localizing a module so that all actions of the module are translated into a more user-friendly format, looking neat and intuitively clear. This article is a supplement to the material — how to create your first module</summary><content type="html">
  &lt;figure id=&quot;Qglx&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/lRmDlag.png&quot; width=&quot;1315&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KrBG&quot;&gt;In this article we will examine the module localization process, so that all module actions are translated into a more user-friendly format, looking neat and intuitively understandable. This article is a supplement to the material — &lt;a href=&quot;https://teletype.in/@bablosoft/create-first-module-en&quot; target=&quot;_blank&quot;&gt;how to create your first module&lt;/a&gt;&lt;/p&gt;
  &lt;h3 id=&quot;hmlg&quot;&gt;&lt;/h3&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;M1TT&quot;&gt;This article was prepared based on the old version of the interface. Despite possible visual changes, the functionality and sequence of actions remain relevant.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;db1f&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ZEM3&quot;&gt;&lt;strong&gt;Article plan:&lt;/strong&gt;&lt;/p&gt;
  &lt;nav&gt;
    &lt;ul&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#hmlg&quot;&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#Ouuc&quot;&gt;1. Brief module structure&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#vuJ4&quot;&gt;Description of module structure and its files:&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#dHRI&quot;&gt;2. Renaming actions and parameters in the module&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#rozy&quot;&gt;Module parameter and action localization: step-by-step instructions (8 steps)&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#TqLg&quot;&gt;3. Module result — «EmulatorModule»&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#6GoA&quot;&gt;Source materials for practice:&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#vrXt&quot;&gt;Thank you for your attention&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#viEv&quot;&gt;You can share your module, as dozens of other authors have done ❤️&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;
  &lt;p id=&quot;tQ6s&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;EjSF&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Ouuc&quot;&gt;1. Brief module structure&lt;/h2&gt;
  &lt;p id=&quot;CS44&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;vuJ4&quot;&gt;Description of module structure and its files:&lt;/h3&gt;
  &lt;p id=&quot;LnUb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;MuiF&quot;&gt;A module in &lt;strong&gt;BrowserAutomationStudio&lt;/strong&gt; is a set of files, each of which is responsible for a specific part of its operation. These files are stored in the module folder and provide its functionality, appearance and interaction with the BAS interface.&lt;/p&gt;
  &lt;ul id=&quot;OYs0&quot;&gt;
    &lt;li id=&quot;tAIb&quot;&gt;&lt;strong&gt;manifest.json&lt;/strong&gt; — this file is responsible for general module settings, its localization. Various other files responsible for built-in code in the module are also connected to it.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;4WWo&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;RpB7&quot;&gt;&lt;strong&gt;Action files (created functions)&lt;/strong&gt; — these are files that contain the main logic of each specific action in the module.&lt;/p&gt;
  &lt;p id=&quot;oLwe&quot;&gt;&lt;strong&gt;Each action consists of 3 files:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;bsS3&quot;&gt;
    &lt;li id=&quot;aFWe&quot;&gt;&lt;strong&gt;action_name_code.js &lt;/strong&gt;— file with code that is added to the script when using a specific action&lt;/li&gt;
    &lt;li id=&quot;2Um6&quot;&gt;&lt;strong&gt;action_name_select.js &lt;/strong&gt;— file responsible for the connection between the interface and executed actions, including variable checks and other functional aspects&lt;/li&gt;
    &lt;li id=&quot;X7KM&quot;&gt;&lt;strong&gt;action_name_interface.js&lt;/strong&gt; — file that defines the action interface, i.e. its appearance and settings in the constructor&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;ATSS&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;DgMi&quot;&gt;For a more in-depth analysis of module structure and files, you can read the guide at the link below, we move on to the next section of the article. &lt;a href=&quot;http://bablosoft.com&quot; target=&quot;_blank&quot;&gt;Detailed analysis of module structure&lt;/a&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;Yihk&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;COXv&quot; data-align=&quot;center&quot;&gt;Let&amp;#x27;s examine the localization process using the «EmulatorModule» module as an example&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;C6bL&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;pX5j&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;dHRI&quot;&gt;2. Renaming actions and parameters in the module&lt;/h2&gt;
  &lt;p id=&quot;Cuyq&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;tLB1&quot;&gt;In the module created as part of &lt;a href=&quot;https://teletype.in/@bablosoft/create-first-module-en&quot; target=&quot;_blank&quot;&gt;another article&lt;/a&gt;, the actions do not y et have correct names, which indicates that work on it is not yet complete&lt;/p&gt;
  &lt;p id=&quot;aiLy&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;iKVQ&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/ca/24/ca2464d8-1ce2-42bf-a19c-86e9d7d9d24b.png&quot; width=&quot;973&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Previously created module «EmulatorModule»&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;PpIL&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5d/ce/5dcedcb5-8a52-4f04-9de9-fe691225805f.png&quot; width=&quot;985&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Page loading and emulation action (Function #1)&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;qJwh&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/78/c6/78c63936-66c0-499f-8131-df5b37336592.png&quot; width=&quot;984&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Sreenshot action and saving it to a directory (Function #2)&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0Vwq&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;rozy&quot;&gt;Module parameter and action localization: step-by-step instructions (8 steps)&lt;/h3&gt;
  &lt;p id=&quot;rSop&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;skg2&quot;&gt;&lt;strong&gt;1. Navigate to the module folder:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;vDCs&quot;&gt;
    &lt;li id=&quot;jncF&quot;&gt;In the top menu of BrowserAutomationStudio click «Module Manager»&lt;/li&gt;
    &lt;li id=&quot;ypZx&quot;&gt;Find and click on the name of your module (in the example EmulatorModule)&lt;/li&gt;
    &lt;li id=&quot;o95b&quot;&gt;Click the «&lt;strong&gt;Open folder containing module&lt;/strong&gt;» button&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;THcq&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;PCyG&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e5/b1/e5b1b60c-68da-482d-92c4-fb811b0da146.png&quot; width=&quot;608&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Module manager interface&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Xok8&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Z5Ac&quot;&gt;&lt;strong&gt;2. Module folder: &lt;/strong&gt;contains all files responsible for module operation: its settings, logic, interface and auxiliary components&lt;/p&gt;
  &lt;figure id=&quot;Av3r&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/5a/3b/5a3bb665-8314-4daf-a041-a230b7290348.png&quot; width=&quot;608&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ZY06&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;L6Sg&quot;&gt;&lt;strong&gt;3. Open the manifest.json file&lt;/strong&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;VbIP&quot;&gt;To open &lt;code&gt;.json &lt;/code&gt;files, it’s convenient to use the &lt;a href=&quot;https://code.visualstudio.com/download&quot; target=&quot;_blank&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;UtdO&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;RBLC&quot;&gt;&lt;strong&gt;4.  &lt;/strong&gt;In the &lt;code&gt;manifest.json&lt;/code&gt; file of your module, find the &lt;strong&gt;«actions»&lt;/strong&gt; array — it contains a list of all actions used by the module&lt;/p&gt;
  &lt;p id=&quot;XXPy&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;o1YO&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0f/57/0f576b2e-872c-4113-aa8d-0153819eccc1.png&quot; width=&quot;837&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Actions array in the module «EmulatorModule»&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;g5VW&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;xMxn&quot;&gt;&lt;strong&gt;5. &lt;/strong&gt;Find the &lt;strong&gt;«description» &lt;/strong&gt;object in the&lt;strong&gt; manifest.json&lt;/strong&gt; file and change the value to set the desired action name in the module&lt;/p&gt;
  &lt;p id=&quot;XuUd&quot;&gt;For example, in the EmulatorModule module there are two actions to which we will assign new, more understandable names:&lt;/p&gt;
  &lt;ul id=&quot;bOPJ&quot;&gt;
    &lt;li id=&quot;DtuG&quot;&gt;&lt;strong&gt;Load_site_await_emulation&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;zJjl&quot;&gt;&lt;strong&gt;EmulatorModule_screenshot_and_save_screenshot_to_png&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;figure id=&quot;7UGc&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/35/a9/35a9c684-edf8-464f-b662-d4ef93c8227c.png&quot; width=&quot;1218&quot; /&gt;
    &lt;figcaption&gt;Before / After&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Rq6y&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;yf3y&quot;&gt;&lt;strong&gt;6. &lt;/strong&gt;Save the &lt;strong&gt;&lt;code&gt;manifest.json&lt;/code&gt; f&lt;/strong&gt;ile using the&lt;strong&gt; Ctrl + S &lt;/strong&gt;keyboard shortcut. After this, the changes will take effect — the actions in the module will be displayed with new names in the BrowserAutomationStudio interface&lt;/p&gt;
  &lt;p id=&quot;kvNL&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;BU1E&quot;&gt;&lt;strong&gt;7. The next step is renaming the parameters used in the module actions. For this we move to other module files:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;Z2lZ&quot;&gt;
    &lt;li id=&quot;vaVo&quot;&gt;EmulatorModule_screenshot_and_save_screenshot_to_png_interface.js&lt;/li&gt;
    &lt;li id=&quot;GdRG&quot;&gt;EmulatorModule_Load_site_await_emulation_&lt;strong&gt;interface.js&lt;/strong&gt; &lt;/li&gt;
  &lt;/ul&gt;
  &lt;blockquote id=&quot;8qt9&quot;&gt; The &lt;strong&gt;«description»&lt;/strong&gt; field contains descriptions of the module parameters&lt;/blockquote&gt;
  &lt;p id=&quot;KvGg&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;7Ykw&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8b/67/8b678ba5-75ee-41ee-99a0-8cd6c8cbe1fd.png&quot; width=&quot;1130&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;What the fields we are modifying in the module look like visually&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;LX47&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;jNfk&quot;&gt;&lt;strong&gt;8. Done 🎉. Go to your project with module actions and check the result&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;oo33&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;KPNP&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;TqLg&quot;&gt;3. Module result — «EmulatorModule»&lt;/h2&gt;
  &lt;p id=&quot;lxv6&quot;&gt;We have successfully renamed our actions as well as parameters, now the module looks more understandable and pleasant for you or your users&lt;/p&gt;
  &lt;p id=&quot;gQaA&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;ZgBf&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/f6/52/f6529d3f-1c23-4c9f-8f9f-3cc8d3ca7367.png&quot; width=&quot;986&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Interface of the module «EmulatorModule»&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;McAx&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b5/06/b50656e9-f8f9-4ebf-aa03-760eb460e82d.png&quot; width=&quot;977&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Renamed Action #1 &lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;0Rts&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/10/83/1083a11d-8a1c-4557-bcaf-9c972f328eb1.png&quot; width=&quot;976&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Renamed Action #2&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;cMSM&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;6GoA&quot;&gt;Source materials for practice:&lt;/h3&gt;
  &lt;p id=&quot;geJG&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;WQOG&quot;&gt;
    &lt;li id=&quot;agOl&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685799657-emulatormodule_localized.zip&quot; target=&quot;_blank&quot;&gt;Module from the article.zip&lt;/a&gt; | &lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685799654-emulator_module_localizationen.xml&quot; target=&quot;_blank&quot;&gt;Module source.xml&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;ra5T&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;vrXt&quot;&gt;Thank you for your attention&lt;/h2&gt;
  &lt;p id=&quot;RDq0&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;UGgy&quot;&gt;In this article we examined the module localization process in BrowserAutomationStudio: how to translate actions and parameters, as well as configure them to improve usability. You learned how to work with the module file structure, edit descriptions and adapt the interface to user tasks, making the module more understandable and convenient to work with&lt;/p&gt;
  &lt;p id=&quot;6Oi0&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;viEv&quot;&gt;You can share your module, as dozens of other authors have done ❤️&lt;/h3&gt;
  &lt;p id=&quot;7vHW&quot;&gt;Module section on the forum — &lt;a href=&quot;https://community.bablosoft.com/category/45/%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D1%81%D1%8C-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8&quot; target=&quot;_blank&quot;&gt;RU&lt;/a&gt; | &lt;a href=&quot;https://community.bablosoft.com/category/44/share-bas-modules&quot; target=&quot;_blank&quot;&gt;EN&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;JptZ&quot;&gt;&lt;br /&gt;&lt;strong&gt;Additional study materials:&lt;br /&gt;1. &lt;a href=&quot;https://teletype.in/@bablosoft/create-first-module-en&quot; target=&quot;_blank&quot;&gt;Step-by-step guide to creating a module in BrowserAutomationStudio&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;https://teletype.in/@bablosoft/functions-in-BAS-en&quot; target=&quot;_blank&quot;&gt;Functions in BrowserAutomationStudio&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;FqSL&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Li4w&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KRzi&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/BablosoftOfficialEN&quot; target=&quot;_blank&quot;&gt;English channel&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;mWet&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0IDb&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kPaM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;EDpK&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;peCN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IAvV&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>bablosoft:functions-in-BAS-en</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/functions-in-BAS-en?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>Functions in BrowserAutomationStudio</title><published>2025-06-03T14:50:18.146Z</published><updated>2025-06-11T23:53:43.010Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/71/7d/717dc847-9f63-4514-b72b-d81e8ba66094.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://i.imgur.com/RdZVW7D.png&quot;&gt;In this article, you will learn how to work with functions in BrowserAutomationStudio. We will go through the creation of your first function, what it consists of, how to configure it properly, and how to call it in the project logic</summary><content type="html">
  &lt;figure id=&quot;G3T4&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/RdZVW7D.png&quot; width=&quot;1304.6240458015268&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Yb8k&quot;&gt;In this article you will learn how to work with functions in BrowserAutomationStudio. We will examine creation of the first function, its structure, proper setup and ways of calling it in the project logic&lt;/p&gt;
  &lt;p id=&quot;YFxU&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;wqId&quot;&gt;This article was prepared based on the old version of the interface. Despite possible visual changes, the functionality and sequence of actions remain relevant&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ypia&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Oh9V&quot;&gt;Article plan:&lt;/p&gt;
  &lt;nav&gt;
    &lt;ul&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#Hva3&quot;&gt;1. Why functions are needed, their advantages
&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#9kLN&quot;&gt;2. Creating functions&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#VPXK&quot;&gt;2. Detailed description of all sections&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#dIxl&quot;&gt;3. Example of filling a function and its call in project logic&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#iERi&quot;&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#xgqt&quot;&gt;1. Function task - LoadPage_SelAwait_MoveMouseAroundElem&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#t4QA&quot;&gt;2. Filling function settings&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#FZPf&quot;&gt;Parameter #1&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_3&quot;&gt;&lt;a href=&quot;#znGp&quot;&gt;Parameter #2&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#J6kJ&quot;&gt;3. Calling function into project logic&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_3&quot;&gt;&lt;a href=&quot;#W4fV&quot;&gt;Filling fields when calling a function&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_3&quot;&gt;&lt;a href=&quot;#LOA3&quot;&gt;Final function code&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#LQvc&quot;&gt;🎉 The function is ready&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_3&quot;&gt;&lt;a href=&quot;#Gpbj&quot;&gt;Thank you for your attention!&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;
  &lt;p id=&quot;Mu6q&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Hva3&quot;&gt;1. Why functions are needed, their advantages&lt;br /&gt;&lt;/h2&gt;
  &lt;p id=&quot;q1EQ&quot;&gt;&lt;strong&gt;The main purpose of function —&lt;/strong&gt; simplification of logic reuse and facilitation of code maintenance&lt;/p&gt;
  &lt;p id=&quot;LC8N&quot;&gt;&lt;br /&gt;Instead of copying the same block of actions to different parts of the script, you create a function and use it in the needed places. At the same time any change inside the function is automatically applied in all its calls&lt;/p&gt;
  &lt;p id=&quot;YWBC&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Y9wp&quot;&gt;Imagine that you need to use the «Sleep» action in several places of the project. One way is to manually copy this action each time. However, if later it&amp;#x27;s required to change its settings, you&amp;#x27;ll have to edit each copy separately, which takes a lot of time&lt;/p&gt;
  &lt;p id=&quot;IhiF&quot;&gt;&lt;strong&gt;It&amp;#x27;s much more efficient to design this action as a function:&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;nqKR&quot;&gt;
    &lt;li id=&quot;4lEa&quot;&gt;Create a function with «Sleep» action&lt;/li&gt;
    &lt;li id=&quot;jTHa&quot;&gt;Set it up once&lt;/li&gt;
    &lt;li id=&quot;fTPH&quot;&gt;Call this function anywhere in the project with just a couple of clicks&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;osS6&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;f10L&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;kloC&quot;&gt;&lt;strong&gt;Such approach saves time and makes your project more structured and easily maintainable. Let&amp;#x27;s examine how to properly create a function in BAS and set it up&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;CbJY&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;G8WX&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;9kLN&quot;&gt;2. Creating functions&lt;/h2&gt;
  &lt;p id=&quot;t55R&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;fRkt&quot;&gt;1. Click on the function inspector button&lt;/p&gt;
  &lt;p id=&quot;OF8q&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;hEvv&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/65/b1/65b1103f-b9d9-4216-bd54-4ec58d2ec9f2.png&quot; width=&quot;483&quot; /&gt;
    &lt;figcaption&gt;Opening function inspector by pressing&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;mbxC&quot;&gt;2. Click on the red icon with plus to create a function&lt;/p&gt;
  &lt;p id=&quot;NAwt&quot;&gt;3. Click on the «Details» button to display all function fields&lt;/p&gt;
  &lt;p id=&quot;EKrQ&quot;&gt;&lt;strong&gt;The result&lt;/strong&gt; of executing the steps will be transition to function settings:&lt;/p&gt;
  &lt;figure id=&quot;u9Jg&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7f/2d/7f2d118f-ac9d-4ab4-9444-e906045f21fb.png&quot; width=&quot;497&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Function settings&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;u8E3&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;VPXK&quot;&gt;2. Detailed description of all sections&lt;/h3&gt;
  &lt;p id=&quot;nU6v&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;HyAL&quot;&gt;&lt;strong&gt;Function name&lt;/strong&gt; — this is a field in which the function name is set. It&amp;#x27;s recommended to use clear and descriptive names, so that it&amp;#x27;s easy to understand the function&amp;#x27;s purpose and quickly find it among others&lt;/p&gt;
  &lt;p id=&quot;WzjI&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;pnze&quot;&gt;For example — &lt;strong&gt;LoadPage_SelAwait_MoveMouseAroundElem&lt;/strong&gt;. This name reflects the essence of the function:&lt;/p&gt;
    &lt;ol id=&quot;QHbK&quot;&gt;
      &lt;ul id=&quot;8T2Y&quot;&gt;
        &lt;li id=&quot;CnG1&quot;&gt;LoadPage — load page&lt;/li&gt;
        &lt;li id=&quot;vfwY&quot;&gt;SelAwait — selector waiting after page loading&lt;/li&gt;
        &lt;li id=&quot;8EuB&quot;&gt;MoveMouseAroundElem — move mouse around element on the page&lt;/li&gt;
        &lt;li id=&quot;wSMZ&quot;&gt;«_» — underscore performs the role of space&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/ol&gt;
  &lt;/section&gt;
  &lt;p id=&quot;4JLC&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;gngN&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;iYQ2&quot;&gt;&lt;strong&gt;Function description&lt;/strong&gt; — so that later you don&amp;#x27;t get confused among other functions, try to leave a description&lt;/p&gt;
  &lt;blockquote id=&quot;BuPf&quot;&gt;This parameter is hidden when calling the function and is visible only in the function editor&lt;/blockquote&gt;
  &lt;p id=&quot;qUsj&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;y5x3&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;29CX&quot;&gt;&lt;strong&gt;Function return value&lt;/strong&gt; — this is the result that the function passes after executing its logic. If you want the function to return some value (for example, calculation result, file path, text, etc.), it&amp;#x27;s necessary to enable the &lt;strong&gt;«Return value»&lt;/strong&gt; option&lt;/p&gt;
  &lt;p id=&quot;NEUw&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;sXO8&quot;&gt;After activating this option BAS automatically creates a variable with the name &lt;strong&gt;FUNCTION_RESULT&lt;/strong&gt;, into which the result will be written. If necessary you can rename it to any convenient name&lt;/blockquote&gt;
  &lt;p id=&quot;CkcD&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;PQ39&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;PkPj&quot;&gt;&lt;strong&gt;Function parameters&lt;/strong&gt; — this is data that is passed to the function for its work. These can be &lt;em&gt;strings&lt;/em&gt;, &lt;em&gt;numbers&lt;/em&gt;, &lt;em&gt;boolean values&lt;/em&gt;, &lt;em&gt;expressions or resources&lt;/em&gt;. The function uses the passed parameters to execute its logic based on this data&lt;/p&gt;
  &lt;p id=&quot;sDbV&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;GS2j&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;1FCW&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Visual representation of all properties using the example of LoadPage_SelAwait_MoveMouseAroundElem function&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;3hCP&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/83/ef/83ef3fd8-da74-4852-b8d6-59bbb52dd078.png&quot; width=&quot;1202&quot; /&gt;
    &lt;figcaption&gt;Visual representation of all properties using the example of LoadPage_SelAwait_MoveMouseAroundElem function&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;obWj&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;dqSz&quot;&gt;&lt;strong&gt;Function parameter settings:&lt;/strong&gt; Click the &lt;strong&gt;«Add parameter»&lt;/strong&gt; button to open a form with fields for its configuration&lt;/p&gt;
  &lt;figure id=&quot;JyzS&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7d/38/7d381273-b11e-40b3-90de-f8fb20e88f2f.png&quot; width=&quot;490&quot; /&gt;
    &lt;figcaption&gt;Empty parameter settings&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;L4rO&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;WtSX&quot;&gt;
    &lt;li id=&quot;Pp1s&quot;&gt;&lt;strong&gt;Name:&lt;/strong&gt; in this field enter a convenient parameter name&lt;/li&gt;
    &lt;li id=&quot;hj5W&quot;&gt;&lt;strong&gt;Type:&lt;/strong&gt; there are 6 different variations for the «Type» field in total:&lt;/li&gt;
  &lt;/ol&gt;
  &lt;ul id=&quot;XSN2&quot;&gt;
    &lt;li id=&quot;EKtm&quot;&gt;String — value is passed in text format&lt;/li&gt;
    &lt;li id=&quot;dRpp&quot;&gt;Number — value is passed in numeric format&lt;/li&gt;
    &lt;li id=&quot;vj7D&quot;&gt;Boolean type — logical value that can only be true or false&lt;/li&gt;
    &lt;li id=&quot;CUDS&quot;&gt;Expression — value can be an expression that is calculated during script execution&lt;/li&gt;
    &lt;li id=&quot;1wg5&quot;&gt;String or expression — user can choose: enter a string or use an expression&lt;/li&gt;
    &lt;li id=&quot;x2DP&quot;&gt;Number or expression — user can choose: enter a number or use an expression&lt;/li&gt;
  &lt;/ul&gt;
  &lt;blockquote id=&quot;R4vj&quot;&gt;&lt;strong&gt;Number or expression / String or expression&lt;/strong&gt; — if you choose one of these options, when calling the function the user will be able to choose the value type through a dropdown list: manual input or using an expression. In other cases only one fixed type of value is displayed without choice&lt;/blockquote&gt;
  &lt;p id=&quot;uzoS&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;dISf&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/bb/1a/bb1acbd0-0ba8-4741-b233-f6b5b8e84635.png&quot; width=&quot;976&quot; /&gt;
    &lt;figcaption&gt;Interface for value selection for the «String or expression» field&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;1OLj&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;dKFR&quot;&gt;
    &lt;li id=&quot;nO5r&quot;&gt;&lt;strong&gt;Description:&lt;/strong&gt; text explanation for the parameter, which is displayed as a hint (&lt;em&gt;question mark in the function interface&lt;/em&gt;)&lt;/li&gt;
    &lt;li id=&quot;i9iU&quot;&gt;&lt;strong&gt;Default value:&lt;/strong&gt; this is an auto-filled value substituted into the parameter when calling the function in the project logic&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;OZnl&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;qYOW&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Visual representation of all parameters when calling the function&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;EQnM&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ed/42/ed424829-1d14-4ed2-b76f-b51d5496ce98.png&quot; width=&quot;1237&quot; /&gt;
    &lt;figcaption&gt;Visual representation of all parameters when calling the function&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;YW0q&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;CJNv&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;lmpP&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;dIxl&quot;&gt;3. Example of filling a function and its call in project logic&lt;/h2&gt;
  &lt;h3 id=&quot;iERi&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;xgqt&quot;&gt;1. Function task - LoadPage_SelAwait_MoveMouseAroundElem&lt;/h3&gt;
  &lt;p id=&quot;Ppmt&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;AP46&quot;&gt;
    &lt;li id=&quot;r6zg&quot;&gt;Load the page specified by user&lt;/li&gt;
    &lt;li id=&quot;4TzA&quot;&gt;Wait for page loading&lt;/li&gt;
    &lt;li id=&quot;dTE0&quot;&gt;Selector waiting&lt;/li&gt;
    &lt;li id=&quot;dO0p&quot;&gt;If an error occurs during function execution, the boolean value &lt;code&gt;false&lt;/code&gt; will be passed to the return variable. If the function executes successfully — &lt;code&gt;true&lt;/code&gt; will be returned&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;yfOn&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;t4QA&quot;&gt;2. Filling function settings&lt;/h3&gt;
  &lt;p id=&quot;SO0C&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;R498&quot;&gt;&lt;strong&gt;Function name:&lt;/strong&gt; LoadPage_SelAwait_MoveMouseAroundElem&lt;/p&gt;
  &lt;p id=&quot;hoiH&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;IN6O&quot;&gt;&lt;strong&gt;Function description: &lt;/strong&gt;Page loading, selector waiting, moves mouse over selector, after the function will return the result of work to variable RESULT_FUNCTION_LOAD&lt;/p&gt;
  &lt;p id=&quot;FRhi&quot;&gt;&lt;br /&gt;&lt;strong&gt;Return value:&lt;/strong&gt; Enable the «Return value» option and specify the variable name — RESULT_FUNCTION_LOAD&lt;/p&gt;
  &lt;p id=&quot;zfPT&quot;&gt;&lt;br /&gt;&lt;strong&gt;Return value description: In the description field you can specify the followin&lt;/strong&gt;g&lt;/p&gt;
  &lt;blockquote id=&quot;Ia2a&quot;&gt;«If any action in the function ends with an error, the boolean value false will be passed to the return variable. If the function executes successfully — true will be returned»&lt;/blockquote&gt;
  &lt;p id=&quot;wxxz&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;T82p&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0d/41/0d414e59-bf96-45b4-8ed3-57f0a6ef4c50.png&quot; width=&quot;495&quot; /&gt;
    &lt;figcaption&gt;Filled function properties&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ulvV&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;cp4R&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;FZPf&quot;&gt;Parameter #1&lt;/h3&gt;
  &lt;p id=&quot;kIgM&quot;&gt;To pass a link to the function add a parameter with type &lt;strong&gt;«String or expression»&lt;/strong&gt;. This will provide flexibility when passing both static strings and expressions&lt;/p&gt;
  &lt;p id=&quot;ggJv&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;MGVU&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/dc/18/dc18f727-cb9c-4048-8a7a-da64bfdbe796.png&quot; width=&quot;488&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Screenshot of filled parameter #1&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;N1Yv&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;znGp&quot;&gt;Parameter #2&lt;/h4&gt;
  &lt;p id=&quot;ptnm&quot;&gt;The second parameter passes selector for the «Element waiting» action. Type — &lt;strong&gt;«String or expression»&lt;/strong&gt; for flexibility. Also a default value is set for convenience and input acceleration&lt;/p&gt;
  &lt;p id=&quot;fXe9&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;tOwN&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6d/84/6d8493e2-7ae3-437b-8632-2413533b4a5d.png&quot; width=&quot;489&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Screenshot of filled parameter #2&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Mgi3&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;dheu&quot;&gt;After filling all parameters and function body press the green «Save changes» button to save the entered settings&lt;/blockquote&gt;
  &lt;p id=&quot;Vvi4&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;U60E&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Ibun&quot;&gt;&lt;strong&gt;After saving changes, BrowserAutomationStudio will automatically redirect you to the created function and add three basic actions:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;IAsV&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;Qqzq&quot;&gt;
    &lt;li id=&quot;QLXc&quot;&gt;Get Function Parameter - &lt;em&gt;LINK_FOR_LOADSITE&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;bg2O&quot;&gt;Get Function Parameter - &lt;em&gt;SELECTOR_INPUT&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;Kbxp&quot;&gt;Return&lt;/li&gt;
  &lt;/ol&gt;
  &lt;ul id=&quot;A7O7&quot;&gt;
    &lt;li id=&quot;S0JC&quot;&gt;The «&lt;strong&gt;Get Function Parameter»&lt;/strong&gt; action is used to receive resources or values passed to the function. With its help inside the function you can access these parameters and use them in the execution logic&lt;/li&gt;
    &lt;li id=&quot;j5JD&quot;&gt;The «&lt;strong&gt;Return»&lt;/strong&gt; action is used to return the result from the function to the main project logic. It completes the function execution and passes the specified value to the variable set when configuring the return result&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;s3Us&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;J6kJ&quot;&gt;3. Calling function into project logic&lt;/h3&gt;
  &lt;p id=&quot;5Bvg&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;uXkU&quot;&gt;&lt;strong&gt;To call a function:&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;OEaR&quot;&gt;
    &lt;li id=&quot;9skg&quot;&gt;Go to - module «Script Logic» &lt;strong&gt;→&lt;/strong&gt; action «&lt;strong&gt;Function Call&lt;/strong&gt;»&lt;/li&gt;
  &lt;/ol&gt;
  &lt;figure id=&quot;FK0M&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/84/85/8485f69c-ac7a-45ed-8195-4c884216917e.png&quot; width=&quot;983&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Call function&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;nShP&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;OAVI&quot;&gt;Then select the function «&lt;strong&gt;LoadPage_SelAwait_MoveMouseAroundElem&lt;/strong&gt;» from the available list&lt;/p&gt;
  &lt;p id=&quot;dokz&quot;&gt;When opening the function call settings, the following four fields are displayed:&lt;/p&gt;
  &lt;ol id=&quot;7nLQ&quot;&gt;
    &lt;li id=&quot;xgcf&quot;&gt;&lt;strong&gt;Function name&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;8hRV&quot;&gt;&lt;strong&gt;Website link&lt;/strong&gt; — parameter #1&lt;/li&gt;
    &lt;li id=&quot;t6qd&quot;&gt;&lt;strong&gt;Selector&lt;/strong&gt; — parameter #2&lt;/li&gt;
    &lt;li id=&quot;nfVp&quot;&gt;&lt;strong&gt;Return value&lt;/strong&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;2tlv&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Fdi9&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/55/c3/55c38d9f-c5c9-40a1-865c-1a435ffea501.png&quot; width=&quot;985&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Resources of function LoadPage_SelAwait_MoveMouseAroundElem&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;V8ib&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;8hWt&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;W4fV&quot;&gt;Filling fields when calling a function&lt;/h4&gt;
  &lt;p id=&quot;5FMC&quot;&gt;Now, to correctly implement the function logic, it is necessary to pass data into it. Below is an example of a filled function when calling it:&lt;/p&gt;
  &lt;p id=&quot;EMNN&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;4oRs&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ec/63/ec63bf9f-11b7-479f-928b-5c9f31bd9aa1.png&quot; width=&quot;985&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Filling in fields when calling the function&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ACzK&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Rja9&quot;&gt;We have completed filling the parameters and called the function. Now we move to its internal logic to configure and refine the actions inside it.&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ObvN&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;AFCC&quot;&gt;To ensure parameters are correctly passed to the function, &lt;strong&gt;be sure to&lt;/strong&gt; execute the «Function Call» action. Otherwise, the parameters will have a value of &amp;#x27;&lt;code&gt;null&lt;/code&gt;&amp;#x27;.&lt;/blockquote&gt;
  &lt;p id=&quot;bCTq&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;nViC&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/b0/47/b047fa20-16cd-46cf-9279-2de95b4fa7ce.png&quot; width=&quot;485&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Execute the «Call function» action&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;aslO&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;LOA3&quot;&gt;Final function code&lt;/h4&gt;
  &lt;p id=&quot;UdTt&quot;&gt;Based on the given task, the final implementation of the function looks as follows:&lt;/p&gt;
  &lt;p id=&quot;EfOF&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;S6dz&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ad/77/ad770cd6-942d-430c-8334-45fd7a19fddb.png&quot; width=&quot;484&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Function code LoadPage_SelAwait_MoveMouseAroundElem &lt;em&gt;(part #1)&lt;/em&gt;&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ucne&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Y601&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d4/02/d4027827-1f89-4b83-a9ae-9fa11f6c2730.png&quot; width=&quot;478&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Function code LoadPage_SelAwait_MoveMouseAroundElem &lt;em&gt;(part #2)&lt;/em&gt;&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;duWa&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;LQvc&quot; data-align=&quot;center&quot;&gt;🎉 The function is ready&lt;/h3&gt;
  &lt;h4 id=&quot;Gpbj&quot; data-align=&quot;center&quot;&gt;Thank you for your attention!&lt;/h4&gt;
  &lt;p id=&quot;mdzJ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;aMF8&quot; data-align=&quot;center&quot;&gt;In this article we examined the process of creating functions in BrowserAutomationStudio: studied their structure, filling procedure and methods of calling them in project logic. This will allow you to organize code more efficiently, reduce duplication and simplify its maintenance.&lt;/p&gt;
  &lt;p id=&quot;xstQ&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Abfi&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Original article project:&lt;/strong&gt; &lt;/p&gt;
  &lt;p id=&quot;c3UP&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685730143-function_show_projecten.xml&quot; target=&quot;_blank&quot;&gt;function_show_project.xml&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;hcKN&quot;&gt;&lt;strong&gt;Additional study materials:&lt;/strong&gt;&lt;br /&gt;1. &lt;a href=&quot;https://teletype.in/@bablosoft/create-first-module-en&quot; target=&quot;_blank&quot;&gt;Step-by-step guide to creating a module in BrowserAutomationStudio&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;https://teletype.in/@bablosoft/Localization-BAS-Modules-en&quot; target=&quot;_blank&quot;&gt;Module localization. How to rename actions in the module&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;R7UP&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Li4w&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KRzi&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/BablosoftOfficialEN&quot; target=&quot;_blank&quot;&gt;English channel&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;asTD&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0IDb&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kPaM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;btNW&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;peCN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IAvV&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>bablosoft:Localization-BAS-Modules-ru</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/Localization-BAS-Modules-ru?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>Локализация модуля. Как переименовать действия в модуле</title><published>2025-06-03T14:10:50.930Z</published><updated>2025-06-11T23:54:17.723Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/73/6e/736e628b-5a83-44a7-83cf-004a88d3e808.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://i.imgur.com/HdPjB1U.png&quot;&gt;В данной статье мы разберем процесс локализации модуля, чтобы все действия модуля были переведены на более пользовательский формат, выглядя аккуратно и интуитивно понятно. Данная статья является дополнением к материалу — как создать свой первый модуль</summary><content type="html">
  &lt;figure id=&quot;Ul3j&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/HdPjB1U.png&quot; width=&quot;1333.3549618320612&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;v2mJ&quot;&gt;В данной статье мы разберем процесс локализации модуля, чтобы все действия модуля были переведены на более пользовательский формат, выглядя аккуратно и интуитивно понятно. Данная статья является дополнением к материалу — &lt;a href=&quot;https://teletype.in/@bablosoft/create-first-module-ru&quot; target=&quot;_blank&quot;&gt;как создать свой первый модуль&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;wk7I&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;QCvr&quot;&gt;Данная статья была подготовлена на основе старой версии интерфейса. Несмотря на возможные визуальные изменения, функциональность и последовательность действий остались актуальными&lt;/p&gt;
  &lt;/section&gt;
  &lt;h3 id=&quot;bflM&quot;&gt;&lt;/h3&gt;
  &lt;p id=&quot;73BR&quot;&gt;&lt;strong&gt;План статьи:&lt;/strong&gt;&lt;/p&gt;
  &lt;nav&gt;
    &lt;ul&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#bflM&quot;&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#X9kw&quot;&gt;1. Краткая структура модуля&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#B3QL&quot;&gt;Описание структуры модуля и его файлов:&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#jo74&quot;&gt;2. Переименовываем действия и параметры в модуле&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#nEux&quot;&gt;Локализация параметров и действий модуля: пошаговая инструкция (8 шагов)&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#iSsq&quot;&gt;3. Результат модуля - «EmulatorModule»&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#O9Ft&quot;&gt;Исходники для практики:&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#Zcde&quot;&gt;Благодарим за ваше внимание&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#CLZh&quot;&gt;Вы можете поделиться своим модулем, как это сделали десятки других авторов ❤️&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;
  &lt;p id=&quot;CAFX&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Q3X3&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;X9kw&quot;&gt;1. Краткая структура модуля&lt;/h2&gt;
  &lt;p id=&quot;Hi0R&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;B3QL&quot;&gt;Описание структуры модуля и его файлов:&lt;/h3&gt;
  &lt;p id=&quot;VYc3&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;iA2d&quot;&gt;Модуль в &lt;strong&gt;BrowserAutomationStudio &lt;/strong&gt;— это набор файлов, каждый из которых отвечает за определённую часть его работы. Эти файлы хранятся в папке модуля и обеспечивают его функциональность, внешний вид и взаимодействие с интерфейсом BAS&lt;/p&gt;
  &lt;ul id=&quot;OYs0&quot;&gt;
    &lt;li id=&quot;WsHp&quot;&gt;&lt;strong&gt;manifest.json&lt;/strong&gt; — данный файл отвечает за общие настройки модуля, его локализацию. Также к нему подключаются различные другие файлы, отвечающие за встроенный код в модуль&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;iZo9&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;uqWD&quot;&gt;&lt;strong&gt;Файлы действий(созданные функции)&lt;/strong&gt; — это файлы, которые содержат основную логику работы каждого конкретного действия в модуле&lt;/p&gt;
  &lt;p id=&quot;Ew7z&quot;&gt;&lt;strong&gt;Каждое действие состоит из 3 файлов:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;bsS3&quot;&gt;
    &lt;li id=&quot;u3zS&quot;&gt;&lt;strong&gt;имя_действия_code.js&lt;/strong&gt; — файл с кодом, который добавляется в скрипт при использовании конкретного действия&lt;/li&gt;
    &lt;li id=&quot;E4HH&quot;&gt;&lt;strong&gt;имя_действия_select.js&lt;/strong&gt; — файл отвечающий за связь между интерфейсом и выполняемыми действиями, включая проверки переменных и другие функциональные аспекты&lt;/li&gt;
    &lt;li id=&quot;t9Vg&quot;&gt;&lt;strong&gt;имя_действия_interface.js&lt;/strong&gt; — файл определяющий интерфейс действия, то есть его внешний вид и настройки в конструкторе&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;cUqQ&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;Yjjl&quot;&gt;Для более углубленного разбора структуры модулей, файлов, можно прочитать руководство по ссылке ниже, мы переходим к следующему пункту статьи. &lt;a href=&quot;https://cheshirecaat.github.io/bas-docs/&quot; target=&quot;_blank&quot;&gt;Подробный разбор структуры модулей&lt;/a&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;X2CM&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;CPyA&quot; data-align=&quot;center&quot;&gt;Рассмотрим процесс локализации на примере модуля «EmulatorModule»&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;6Yfo&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;bfxh&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;jo74&quot;&gt;2. Переименовываем действия и параметры в модуле&lt;/h2&gt;
  &lt;p id=&quot;hKfX&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;nBLD&quot;&gt;В модуле, созданном в рамках &lt;a href=&quot;https://teletype.in/@bablosoft/create-first-module-ru&quot; target=&quot;_blank&quot;&gt;другой статьи&lt;/a&gt;, действия пока не имеют корректных наименований, что свидетельствует о том, что работа над ним ещё не завершена&lt;/p&gt;
  &lt;p id=&quot;eOmM&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;ajiO&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/mYNngOY.png&quot; width=&quot;941&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Созданный ранее модуль «EmulatorModule»&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;o73B&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;icD3&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/UY3CzQp.png&quot; width=&quot;943&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Действие загрузки страницы и эмуляции (Функция #1)&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Iw6X&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Vg1x&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/MQ3y26b.png&quot; width=&quot;933&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Действие скриншота и его сохранение в директорию (Функция #2)&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vRGF&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;nEux&quot;&gt;Локализация параметров и действий модуля: пошаговая инструкция (8 шагов)&lt;/h3&gt;
  &lt;p id=&quot;qYQX&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;1mNv&quot;&gt;&lt;strong&gt;1. Переход в папку с модулем:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;vDCs&quot;&gt;
    &lt;li id=&quot;VNob&quot;&gt;В верхнем меню BrowserAutomationStudio нажмите «Менеджер модулей»&lt;/li&gt;
    &lt;li id=&quot;WTyt&quot;&gt;Найдите и кликните на название своего модуля (в примере  EmulatorModule)&lt;/li&gt;
    &lt;li id=&quot;24FV&quot;&gt;Нажмите кнопку &lt;strong&gt;«Открыть папку содержащую модуль»&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;zd2J&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;uwVD&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/x7EHVzI.png&quot; width=&quot;661&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Интерфейс менеджера модулей&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;wpg8&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;0XsG&quot;&gt;&lt;strong&gt;2. Папка модуля: &lt;/strong&gt;содержит все файлы, отвечающие за работу модуля: его настройки, логику, интерфейс и вспомогательные компоненты&lt;/p&gt;
  &lt;figure id=&quot;YA9g&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/S0vvusf.png&quot; width=&quot;649&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Hgz5&quot;&gt;&lt;strong&gt;3. Откройте файл manifest.json&lt;/strong&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;R48o&quot;&gt;Для открытия файлов &lt;code&gt;.json&lt;/code&gt; удобно использовать редактор кода &lt;a href=&quot;https://code.visualstudio.com/download&quot; target=&quot;_blank&quot;&gt;Visual Studio Code&lt;/a&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;Ns3L&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;MiJA&quot;&gt;&lt;strong&gt;4. &lt;/strong&gt; В файле &lt;code&gt;manifest.json&lt;/code&gt; вашего модуля найдите массив «actions» — он содержит список всех действий, которые использует модуль&lt;/p&gt;
  &lt;p id=&quot;EDIo&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;YlFy&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/ruV4Slp.png&quot; width=&quot;852&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Массив Actions в модуле «EmulatorModule»&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;tg44&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;13PC&quot;&gt;&lt;strong&gt;5. &lt;/strong&gt;Найдите объект &lt;strong&gt;«description»&lt;/strong&gt; в файле &lt;code&gt;manifest.json&lt;/code&gt; и измените значение, чтобы задать нужное название действия в модуле&lt;/p&gt;
  &lt;p id=&quot;DWnk&quot;&gt;Например, в модуле EmulatorModule предусмотрены два действия, которым мы зададим новые, более понятные наименования:&lt;/p&gt;
  &lt;ul id=&quot;bOPJ&quot;&gt;
    &lt;li id=&quot;rAPE&quot;&gt;&lt;strong&gt;Load_site_await_emulation&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;c6hy&quot;&gt;&lt;strong&gt;EmulatorModule_screenshot_and_save_screenshot_to_png&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;oxPL&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;hsn9&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/zn1GxYG.png&quot; width=&quot;1320&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;До/После&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Wwas&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Uyic&quot;&gt;&lt;strong&gt;6. &lt;/strong&gt;Сохраните файл &lt;code&gt;manifest.json&lt;/code&gt; с помощью сочетания клавиш &lt;strong&gt;Ctrl + S&lt;/strong&gt;. После этого изменения вступят в силу — действия в модуле будут отображаться с новыми названиями в интерфейсе BrowserAutomationStudio&lt;/p&gt;
  &lt;p id=&quot;CAhA&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ErJb&quot;&gt;&lt;strong&gt;7. &lt;/strong&gt;Следующим шагом является переименование параметров, используемых в действиях модуля. Для этого переходим к другим файлам модуля:&lt;/p&gt;
  &lt;ul id=&quot;Z2lZ&quot;&gt;
    &lt;li id=&quot;BZGy&quot;&gt;EmulatorModule_screenshot_and_save_screenshot_to_png_&lt;strong&gt;interface.js&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;HuDL&quot;&gt;EmulatorModule_Load_site_await_emulation_&lt;strong&gt;interface.js&lt;/strong&gt; &lt;/li&gt;
  &lt;/ul&gt;
  &lt;blockquote id=&quot;zvKV&quot;&gt; Поле &lt;strong&gt;«description» &lt;/strong&gt;содержит описание параметров модуля&lt;/blockquote&gt;
  &lt;p id=&quot;l56Y&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;yKhw&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/Cdqv8MB.png&quot; width=&quot;1178&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt; Как визуально выглядят поля которые мы изменяем в модуле&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2hK7&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;lQCV&quot;&gt;&lt;strong&gt;8. Готово 🎉. Перейдите в ваш проект с действиями модуля и проверьте результат&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ghBO&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;G5Yj&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;iSsq&quot;&gt;3. Результат модуля - &lt;strong&gt;«EmulatorModule»&lt;/strong&gt;&lt;/h2&gt;
  &lt;p id=&quot;Leq8&quot;&gt;Мы успешно переименовали наши действия, а так же параметры, теперь модуль выглядит более понятным и приятным для вас или ваших пользователей&lt;/p&gt;
  &lt;p id=&quot;Isp3&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;LWlS&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/QgtDUOc.png&quot; width=&quot;931&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Интерфейс модуля  «EmulatorModule»&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;H5RY&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/M8Ui9Qn.png&quot; width=&quot;923&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;tAPD&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/eRWPmea.png&quot; width=&quot;931&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;sKVW&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;O9Ft&quot;&gt;Исходники для практики:&lt;/h3&gt;
  &lt;p id=&quot;Ku0X&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;WQOG&quot;&gt;
    &lt;li id=&quot;oDpS&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685788083-emulatormodule_%D0%BB%D0%BE%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD.zip&quot; target=&quot;_blank&quot;&gt;Модуль из статьи.zip&lt;/a&gt; | &lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685788086-emulator_module_localization.xml&quot; target=&quot;_blank&quot;&gt;Исходник модуля.xml&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;iNhE&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Zcde&quot;&gt;Благодарим за ваше внимание&lt;/h2&gt;
  &lt;p id=&quot;k7zd&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;wfDj&quot;&gt;В данной статье мы рассмотрели процесс локализации модуля в BrowserAutomationStudio: как перевести действия и параметры, а также настроить их для повышения удобства использования. Вы узнали, как работать с файловой структурой модуля, редактировать описания и адаптировать интерфейс под задачи пользователя, делая модуль более понятным и удобным в работе&lt;/p&gt;
  &lt;p id=&quot;XcIy&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;CLZh&quot;&gt;Вы можете поделиться своим модулем, как это сделали десятки других авторов ❤️&lt;/h3&gt;
  &lt;p id=&quot;1BEU&quot;&gt;Ветка модулей на форуме — &lt;a href=&quot;https://community.bablosoft.com/category/45/%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D1%81%D1%8C-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8&quot; target=&quot;_blank&quot;&gt;RU&lt;/a&gt; | &lt;a href=&quot;https://community.bablosoft.com/category/44/share-bas-modules&quot; target=&quot;_blank&quot;&gt;EN&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;strong&gt;Дополнительные материалы для изучения:&lt;/strong&gt;&lt;br /&gt;1. &lt;a href=&quot;https://teletype.in/@bablosoft/create-first-module-ru&quot; target=&quot;_blank&quot;&gt;Пошаговое руководство о создании модуля в BrowserAutomationStudio&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;https://teletype.in/@bablosoft/functions-in-BAS-ru&quot; target=&quot;_blank&quot;&gt;Функции в BrowserAutomationStudio&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;wOUq&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;ASNA&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Li4w&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;P3z5&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/Bablosoft&quot; target=&quot;_blank&quot;&gt;Русскоязычный канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;VSah&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0IDb&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kPaM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube-канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;yabz&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;peCN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IAvV&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>bablosoft:functions-in-BAS-ru</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/functions-in-BAS-ru?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>Функции в BrowserAutomationStudio</title><published>2025-06-03T14:08:51.295Z</published><updated>2025-06-11T23:54:39.859Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/bd/f6/bdf6ebc9-decc-4fa8-8944-adab411cf001.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://i.imgur.com/dYaJygg.png&quot;&gt;В этой статье вы узнаете, как работать с функциями в BrowserAutomationStudio. Мы разберем создание первой функции, ее структуру, правильную настройку и способы вызова в логике проекта</summary><content type="html">
  &lt;figure id=&quot;JTPh&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/dYaJygg.png&quot; width=&quot;1320&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;O9lG&quot;&gt;В этой статье вы узнаете, как работать с функциями в BrowserAutomationStudio. Мы разберем создание первой функции, ее структуру, правильную настройку и способы вызова в логике проекта&lt;/p&gt;
  &lt;p id=&quot;7jwz&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;9r8o&quot;&gt;Данная статья была подготовлена на основе старой версии интерфейса. Несмотря на возможные визуальные изменения, функциональность и последовательность, действий остались актуальными&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;vAcP&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;qFmt&quot;&gt;&lt;strong&gt;План статьи:&lt;/strong&gt;&lt;/p&gt;
  &lt;nav&gt;
    &lt;ul&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#6IA3&quot;&gt;1. Зачем нужны функции, их преимущества
&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#HWmu&quot;&gt;2. Создание функций&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#qGuv&quot;&gt;2. Подробное описание всех разделов&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_1&quot;&gt;&lt;a href=&quot;#A6Sg&quot;&gt;3. Пример заполнения функции и ее вызова в логику проекта&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#Fp3b&quot;&gt;&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#8UEg&quot;&gt;1. Задача функции - LoadPage_SelAwait_MoveMouseAroundElem&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#cHRq&quot;&gt;2. Заполнение настроек функции&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#HyA7&quot;&gt;Параметр #1&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_3&quot;&gt;&lt;a href=&quot;#5KFE&quot;&gt;Параметр #2&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#k4RI&quot;&gt;3. Вызов функции в логику проекта&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_3&quot;&gt;&lt;a href=&quot;#L2jq&quot;&gt;Заполнение полей при вызове функции&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_3&quot;&gt;&lt;a href=&quot;#BZ7e&quot;&gt;Итоговый код функции&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_2&quot;&gt;&lt;a href=&quot;#kYUz&quot;&gt;🎉 Функция готова&lt;/a&gt;&lt;/li&gt;
      &lt;li class=&quot;m_level_3&quot;&gt;&lt;a href=&quot;#a4Aj&quot;&gt;Спасибо за внимание!&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/nav&gt;
  &lt;p id=&quot;vYI5&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;bEu5&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;6IA3&quot;&gt;1. Зачем нужны функции, их преимущества&lt;br /&gt;&lt;/h2&gt;
  &lt;p id=&quot;xDTC&quot;&gt;&lt;strong&gt;Основное предназначение функции — &lt;/strong&gt;упрощение повторного использования логики и облегчение поддержки кода&lt;/p&gt;
  &lt;p id=&quot;pHep&quot;&gt;&lt;br /&gt;Вместо того чтобы копировать один и тот же блок действий в разные части скрипта, вы создаете функцию и используете ее в нужных местах. При этом любое изменение внутри функции автоматически применяется во всех ее вызовах&lt;/p&gt;
  &lt;p id=&quot;6MTX&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;avxz&quot;&gt;Представьте, что вам нужно использовать действие «Спать» в нескольких местах проекта. Один из способов — каждый раз вручную копировать это действие. Однако, если позже потребуется изменить его настройки, придётся редактировать каждую копию отдельно, что отнимает много времени&lt;/p&gt;
  &lt;p id=&quot;MPvV&quot;&gt;&lt;strong&gt;Гораздо эффективнее оформить это действие в виде функции:&lt;/strong&gt;&lt;/p&gt;
  &lt;ol id=&quot;j5Hb&quot;&gt;
    &lt;li id=&quot;k4YP&quot;&gt;Создайте функцию с действием &lt;strong&gt;«Спать»&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;acid&quot;&gt;Настройте ее один раз&lt;/li&gt;
    &lt;li id=&quot;ZON2&quot;&gt;Вызывайте эту функцию в любом месте проекта всего за пару кликов&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;yALx&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;X3Ii&quot;&gt;&lt;strong&gt;Такой подход экономит время и делает ваш проект более структурированным и легко поддерживаемым. Рассмотрим, как правильно создать функцию в BAS и настроить ее&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ptA3&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;z11x&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;HWmu&quot;&gt;2. Создание функций&lt;/h2&gt;
  &lt;p id=&quot;3Shy&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;WTN0&quot;&gt;1. Клик на кнопку инспектора функций&lt;/p&gt;
  &lt;figure id=&quot;5Y0v&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/O5AKuyh.png&quot; width=&quot;439&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Открытие инспектора функций по нажатию&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Q70k&quot;&gt;2. Клик на красный значок с плюсом для создания функции&lt;/p&gt;
  &lt;p id=&quot;yMpl&quot;&gt;3. Клик на кнопку «Подробнее», чтобы отобразить все поля функции&lt;/p&gt;
  &lt;p id=&quot;IaDt&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ba5B&quot;&gt;&lt;strong&gt;Результатом&lt;/strong&gt; выполнения шагов, станет переход в настройки функции:&lt;/p&gt;
  &lt;p id=&quot;qdS0&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;UOC5&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/53dv7c3.png&quot; width=&quot;445&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Настройки функции&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;z48q&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;qGuv&quot;&gt;2. Подробное описание всех разделов&lt;/h3&gt;
  &lt;p id=&quot;aLrk&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;G4ge&quot;&gt;&lt;strong&gt;Имя функции&lt;/strong&gt; — это поле, в котором задается название функции. Рекомендуется использовать понятные и описательные названия, чтобы было легко понять назначение функции и быстро находить ее среди других&lt;/p&gt;
  &lt;p id=&quot;Kshq&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Q2Ws&quot;&gt;Например — &lt;strong&gt;LoadPage_SelAwait_MoveMouseAroundElem&lt;/strong&gt;. В этом названии отражена суть функции:&lt;/p&gt;
    &lt;ol id=&quot;QHbK&quot;&gt;
      &lt;ul id=&quot;8T2Y&quot;&gt;
        &lt;li id=&quot;tcP1&quot;&gt;LoadPage — загрузить страницу&lt;/li&gt;
        &lt;li id=&quot;ZCHl&quot;&gt;SelAwait — ожидание селектора после загрузки страницы&lt;/li&gt;
        &lt;li id=&quot;Go2i&quot;&gt;MoveMouseAroundElem — двигать мышь возле элемента на странице&lt;/li&gt;
        &lt;li id=&quot;6IDd&quot;&gt;«_» — нижнее подчеркивание выполняет роль пробела&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/ol&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Qe8j&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;HiAq&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;nMxe&quot;&gt;&lt;strong&gt;Описание функции&lt;/strong&gt; — чтобы в дальнейшем вы не путались в других функциях, старайтесь оставлять описание&lt;/p&gt;
  &lt;blockquote id=&quot;3HbI&quot;&gt;Этот параметр скрыт при вызове функции и виден только в редакторе функций&lt;/blockquote&gt;
  &lt;p id=&quot;4gtb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;fPc7&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;coec&quot;&gt;&lt;strong&gt;Возвращаемое значение функции &lt;/strong&gt;— это результат, который функция передаёт после выполнения своей логики.&lt;br /&gt;Если вы хотите, чтобы функция возвращала какое-либо значение (например, результат вычислений, путь к файлу, текст и т.д.), необходимо включить опцию &lt;strong&gt;«Возвращаемое значение»&lt;/strong&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;Ar1Y&quot;&gt;После активации этой опции BAS автоматически создает переменную с именем &lt;strong&gt;FUNCTION_RESULT&lt;/strong&gt;, в которую и будет записан результат. При необходимости вы можете переименовать ее в любое удобное имя&lt;/blockquote&gt;
  &lt;p id=&quot;wNNF&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;YyFA&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;qUA8&quot;&gt;&lt;strong&gt;Параметры функции&lt;/strong&gt; — это данные, которые передаются в функцию для её работы. Это могут быть &lt;em&gt;строки, числа, булевы значения, выражения или ресурсы&lt;/em&gt;. Функция использует переданные параметры для выполнения своей логики на основе этих данных&lt;/p&gt;
  &lt;p id=&quot;8Pk6&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;SIpx&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;24d8&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Визуальное отображение всех свойств на примере функции LoadPage_SelAwait_MoveMouseAroundElem&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;kKsk&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;hKpy&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/tMa1Ibj.png&quot; width=&quot;1230&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Визуальное отображение всех свойств на примере функции LoadPage_SelAwait_MoveMouseAroundElem&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2g5L&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;iWB3&quot;&gt;&lt;strong&gt;Настройки параметра функции:&lt;/strong&gt; Нажмите кнопку &lt;strong&gt;«Добавить параметр»&lt;/strong&gt;, чтобы открыть форму с полями для его настройки&lt;/p&gt;
  &lt;p id=&quot;laDO&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;RZiT&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/twOmWyK.png&quot; width=&quot;434&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Пустые настройки параметра&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Q8FD&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;WtSX&quot;&gt;
    &lt;li id=&quot;FwsO&quot;&gt;&lt;strong&gt;Имя:&lt;/strong&gt; в это поле введите удобное имя параметра&lt;/li&gt;
    &lt;li id=&quot;JfDV&quot;&gt;&lt;strong&gt;Тип:&lt;/strong&gt; всего есть 6 разных вариаций для поля «Тип»:&lt;/li&gt;
  &lt;/ol&gt;
  &lt;ul id=&quot;XSN2&quot;&gt;
    &lt;li id=&quot;rRVR&quot;&gt;Строка — значение передаётся в текстовом формате&lt;/li&gt;
    &lt;li id=&quot;PqKk&quot;&gt;Число — значение передаётся в числовом формате&lt;/li&gt;
    &lt;li id=&quot;u4iV&quot;&gt;Булевый тип — логическое значение, которое может быть только &lt;code&gt;true&lt;/code&gt; или &lt;code&gt;false&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;2pai&quot;&gt;Выражение — значение может быть выражением, которое рассчитывается при выполнении скрипта&lt;/li&gt;
    &lt;li id=&quot;Beh2&quot;&gt;Строка или выражение — &lt;em&gt;пользователь может выбрать:&lt;/em&gt; ввести строку или использовать выражение&lt;/li&gt;
    &lt;li id=&quot;xhxb&quot;&gt;Число или выражение — &lt;em&gt;пользователь может выбрать:&lt;/em&gt; ввести число или использовать выражение&lt;/li&gt;
  &lt;/ul&gt;
  &lt;blockquote id=&quot;gJR0&quot;&gt;&lt;strong&gt;Число или выражение&lt;/strong&gt; / &lt;strong&gt;Строка или выражение&lt;/strong&gt; — если выбрать одну из этих опций, при вызове функции пользователь сможет выбрать тип значения через выпадающий список: ввод вручную или использование выражения.&lt;br /&gt;В остальных случаях отображается только один фиксированный тип значения без выбора&lt;/blockquote&gt;
  &lt;p id=&quot;ExTN&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;DnE4&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/GoutVbw.png&quot; width=&quot;962&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Интерфейс выбора значения для поля «Строка или выражение»&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;r5t4&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;dKFR&quot;&gt;
    &lt;li id=&quot;f5yi&quot;&gt;&lt;strong&gt;Описание:&lt;/strong&gt; текстовое пояснение для параметра, которое отображается в виде подсказки &lt;em&gt;(знак вопроса в интерфейсе функции)&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;D43l&quot;&gt;&lt;strong&gt;Значение по умолчанию:&lt;/strong&gt; это автозаполняемое значение, подставляемое в параметр при вызове функции в логике проекта&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;hXxJ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;fJyA&quot; data-align=&quot;center&quot;&gt;Визуальное отображение всех параметров при вызове функции&lt;/p&gt;
  &lt;p id=&quot;yeAl&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;hFk5&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/5394WOm.png&quot; width=&quot;1287&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Визуальное отображение всех параметров при вызове функции&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qC2Q&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;FItf&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;A6Sg&quot;&gt;3. Пример заполнения функции и ее вызова в логику проекта&lt;/h2&gt;
  &lt;h3 id=&quot;Fp3b&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;8UEg&quot;&gt;1. Задача функции - LoadPage_SelAwait_MoveMouseAroundElem&lt;/h3&gt;
  &lt;p id=&quot;ndZb&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;AP46&quot;&gt;
    &lt;li id=&quot;Uy46&quot;&gt;Загружать указанную страницу пользователем&lt;/li&gt;
    &lt;li id=&quot;jKCU&quot;&gt;Ожидать Загрузки страницы&lt;/li&gt;
    &lt;li id=&quot;AC4M&quot;&gt;Ожидание селектора&lt;/li&gt;
    &lt;li id=&quot;ACoD&quot;&gt;Если в процессе выполнения функции произойдет ошибка, в возвращаемую переменную будет передано булевое значение &lt;code&gt;false&lt;/code&gt;. Если же функция выполнится успешно — вернется &lt;code&gt;true&lt;/code&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;FNQJ&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;cHRq&quot;&gt;2. Заполнение настроек функции&lt;/h3&gt;
  &lt;p id=&quot;Nor6&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Qs7m&quot;&gt;&lt;strong&gt;Имя функции:&lt;/strong&gt; LoadPage_SelAwait_MoveMouseAroundElem&lt;/p&gt;
  &lt;p id=&quot;RvYL&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;P3Bk&quot;&gt;&lt;strong&gt;Описание функции:&lt;/strong&gt; Загрузка страницы, ожидание селектора, двигает мышкой по селектору, после функция вернет результат работы в переменную RESULT_FUNCTION_LOAD&lt;/p&gt;
  &lt;p id=&quot;P6ZC&quot;&gt;&lt;br /&gt;&lt;strong&gt;Возвращаемое значение: &lt;/strong&gt;Включите опцию «Возвращаемое значение» и укажите имя переменной — RESULT_FUNCTION_LOAD&lt;/p&gt;
  &lt;p id=&quot;JhEJ&quot;&gt;&lt;br /&gt;&lt;strong&gt;Описание возвращаемого значения: &lt;/strong&gt;В поле описания можно указать следующее&lt;/p&gt;
  &lt;blockquote id=&quot;uykP&quot;&gt;«Если какое-либо действие в функции завершится с ошибкой, в возвращаемую переменную будет передано булевое значение false. Если функция выполнится успешно — будет возвращено true»&lt;/blockquote&gt;
  &lt;p id=&quot;E5lm&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;HeoA&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/OK9JNv8.png&quot; width=&quot;445&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Заполненные свойства функции&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Joiz&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Mig2&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;HyA7&quot;&gt;Параметр #1&lt;/h3&gt;
  &lt;p id=&quot;udgF&quot;&gt;Для передачи ссылки в функцию добавьте параметр с типом &lt;strong&gt;«Строка или выражение»&lt;/strong&gt;. Это обеспечит гибкость при передаче как статических строк, так и выражений&lt;/p&gt;
  &lt;p id=&quot;WEDv&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Zh7g&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/SRmahJ1.png&quot; width=&quot;437&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Скриншот заполненного параметра #1&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;hkDo&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;5KFE&quot;&gt;Параметр #2&lt;/h4&gt;
  &lt;p id=&quot;gBta&quot;&gt;Второй параметр передает селектор для действия «Ожидание элемента».         Тип  — &lt;strong&gt;«Строка или выражение»&lt;/strong&gt; для гибкости. Также задано значение по умолчанию для удобства и ускорения ввода&lt;/p&gt;
  &lt;p id=&quot;ZItZ&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;9FVe&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/0bhef90.png&quot; width=&quot;513&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Скриншот заполненного параметра #2&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;yxkE&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;49gy&quot;&gt;После заполнения всех параметров и тела функции нажмите зеленую кнопку «Сохранить изменения», чтобы зафиксировать внесенные настройки&lt;/blockquote&gt;
  &lt;p id=&quot;iuuu&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;DR5w&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;eo2h&quot;&gt;&lt;strong&gt;После сохранения изменений, BrowserAutomationStudio автоматически перенаправит вас в созданную функцию и добавит три базовых действия:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;rFEy&quot;&gt;&lt;/p&gt;
  &lt;ol id=&quot;Qqzq&quot;&gt;
    &lt;li id=&quot;U8zJ&quot;&gt;Получить Параметр Функции - &lt;em&gt;LINK_FOR_LOADSITE&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;TcY5&quot;&gt;Получить Параметр Функции - &lt;em&gt;SELECTOR_INPUT&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;pRrv&quot;&gt;Return&lt;/li&gt;
  &lt;/ol&gt;
  &lt;ul id=&quot;A7O7&quot;&gt;
    &lt;li id=&quot;hYuF&quot;&gt;Действие &lt;strong&gt;«Получить Параметр Функции»&lt;/strong&gt; используется для приёма переданных в функцию ресурсов или значений. С его помощью внутри функции можно обращаться к этим параметрам и использовать их в логике выполнения&lt;/li&gt;
    &lt;li id=&quot;dliI&quot;&gt;Действие &lt;strong&gt;«Return»&lt;/strong&gt; используется для возврата результата из функции в основную логику проекта. Оно завершает выполнение функции и передаёт указанное значение в переменную, заданную при настройке возвращаемого результата&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Csmz&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;k4RI&quot;&gt;3. Вызов функции в логику проекта&lt;/h3&gt;
  &lt;p id=&quot;SyaI&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;nam4&quot;&gt;&lt;strong&gt;Что бы вызвать функцию:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;CSzk&quot;&gt;Перейдите в - модуль «Логика скрипта» &lt;strong&gt;→&lt;/strong&gt; действие &lt;strong&gt;«Вызов функции»&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;UR6F&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;QSGP&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/IvjzIBI.png&quot; width=&quot;963&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Вызов функции&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Lgga&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;1qEB&quot;&gt;Затем выберите функцию &lt;strong&gt;«LoadPage_SelAwait_MoveMouseAroundElem»&lt;/strong&gt; из доступного списка&lt;/p&gt;
  &lt;p id=&quot;VwxA&quot;&gt;При открытии настроек вызова функции отображаются следующие четыре поля:&lt;/p&gt;
  &lt;ol id=&quot;A4cJ&quot;&gt;
    &lt;li id=&quot;rzdS&quot;&gt;&lt;strong&gt;Название функции&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;uZN8&quot;&gt;&lt;strong&gt;Ссылка на сайт&lt;/strong&gt; — параметр №1&lt;/li&gt;
    &lt;li id=&quot;9VEL&quot;&gt;&lt;strong&gt;Селектор&lt;/strong&gt; — параметр №2&lt;/li&gt;
    &lt;li id=&quot;3cEb&quot;&gt;&lt;strong&gt;Возвращаемое значение&lt;/strong&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;sHRD&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;bsr3&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/BuHFN4G.png&quot; width=&quot;952&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Ресурсы функции LoadPage_SelAwait_MoveMouseAroundElem&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;bMSt&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;L2jq&quot;&gt;Заполнение полей при вызове функции&lt;/h4&gt;
  &lt;p id=&quot;hmz0&quot;&gt;Теперь, чтобы корректно реализовать логику функции, необходимо передать в нее данные. Ниже приведен пример заполненной функции при ее вызове:&lt;/p&gt;
  &lt;p id=&quot;7EpK&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;TKvC&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/GCrcs1w.png&quot; width=&quot;965&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Заполнение полей при вызове функции&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;PrqZ&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;IC0E&quot;&gt;Мы завершили заполнение параметров и вызвали функцию. Теперь переходим к её внутренней логике, чтобы настроить и доработать действия внутри нее&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;oPCg&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;03io&quot;&gt;Чтобы параметры были правильно переданы функции, &lt;strong&gt;обязательно&lt;/strong&gt; выполните действие «Вызов функции». В противном случае параметры будут иметь значение &lt;code&gt;&amp;#x27;null&lt;/code&gt;&lt;/blockquote&gt;
  &lt;figure id=&quot;Q2JC&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/D6HggF1.png&quot; width=&quot;509&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Выполнить действие «Вызов функции»&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;gc2u&quot;&gt;&lt;/p&gt;
  &lt;h4 id=&quot;BZ7e&quot;&gt;Итоговый код функции&lt;/h4&gt;
  &lt;p id=&quot;3Dkf&quot;&gt;Исходя из поставленной задачи, итоговая реализация функции выглядит следующим образом:&lt;/p&gt;
  &lt;p id=&quot;3hT9&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;zW4B&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/boD32nT.png&quot; width=&quot;509&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Код функции LoadPage_SelAwait_MoveMouseAroundElem&lt;em&gt; (часть #1)&lt;/em&gt;&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Z6vV&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;esw4&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/47oK4OI.png&quot; width=&quot;502&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Код функции LoadPage_SelAwait_MoveMouseAroundElem&lt;em&gt; (часть #2)&lt;/em&gt;&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VlA1&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;kYUz&quot; data-align=&quot;center&quot;&gt;🎉 Функция готова&lt;/h3&gt;
  &lt;h4 id=&quot;a4Aj&quot; data-align=&quot;center&quot;&gt;Спасибо за внимание!&lt;/h4&gt;
  &lt;p id=&quot;jYmU&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;IGZ6&quot; data-align=&quot;center&quot;&gt;В данной статье мы рассмотрели процесс создания функций в BrowserAutomationStudio: изучили их структуру, порядок заполнения и способы вызова в логике проекта. Это позволит вам организовать код более эффективно, сократить дублирование и упростить его сопровождение&lt;/p&gt;
  &lt;p id=&quot;3k6y&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;QXoe&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Исходный проект статьи:&lt;/strong&gt; &lt;/p&gt;
  &lt;p id=&quot;Kf7k&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685742182-function_show_project.xml&quot; target=&quot;_blank&quot;&gt;function_show_project.xml&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;mfIQ&quot;&gt;&lt;br /&gt;&lt;strong&gt;Дополнительные материалы для изучения:&lt;/strong&gt;&lt;br /&gt;1. &lt;a href=&quot;https://teletype.in/@bablosoft/create-first-module-ru&quot; target=&quot;_blank&quot;&gt;Пошаговое руководство о создании модуля в BrowserAutomationStudio&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;https://teletype.in/@bablosoft/Localization-BAS-Modules-ru&quot; target=&quot;_blank&quot;&gt;Локализация модуля. Как переименовать действия в модуле&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;PVwO&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Li4w&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;P3z5&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/Bablosoft&quot; target=&quot;_blank&quot;&gt;Русскоязычный канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;JYY9&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0IDb&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kPaM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube-канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;pwfN&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;peCN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IAvV&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>bablosoft:create-first-module-en</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/create-first-module-en?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>Step-by-step guide to building a module in BAS</title><published>2025-06-02T14:34:03.798Z</published><updated>2025-06-11T23:55:20.027Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img3.teletype.in/files/a6/31/a63159ef-9f72-4afd-9a99-1db0bc05607a.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://i.imgur.com/6qaMjAt.jpeg&quot;&gt;In this article you will learn how to create modules in BrowserAutomationStudio step by step, using a simple “Page Emulation” module as an example</summary><content type="html">
  &lt;figure id=&quot;01ss&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/6qaMjAt.jpeg&quot; width=&quot;1179&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pvj9&quot;&gt;In this article you will learn how to create modules in BrowserAutomationStudio step by step, using a simple «Page Emulation» module as an example&lt;/p&gt;
  &lt;p id=&quot;L94N&quot;&gt;Within this material we will develop a basic module that includes several key actions — from emulating browser behavior to saving screenshots. This example will help you understand the structure of modules and the principles of their creation&lt;/p&gt;
  &lt;p id=&quot;4El6&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;3MBM&quot;&gt;This article was prepared based on the old version of the interface. Despite possible visual changes, the functionality and sequence of actions remain relevant&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;WItJ&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;pCYb&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/gcW0eLi.png&quot; width=&quot;978&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Module catalog with added module from the current article&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Jm9Z&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;meis&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/M4E6HpC.png&quot; width=&quot;943&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Interface of the developed module&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Pbtf&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Ls0p&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;hWeA&quot; data-align=&quot;center&quot;&gt;1.  What are modules and their advantages&lt;/h2&gt;
  &lt;p id=&quot;UGNb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;3beU&quot;&gt;&lt;strong&gt;Module&lt;/strong&gt; — this is a set of functions, united in one place. It helps structure the project, speeds up development and allows to reuse code in different BAS projects&lt;/p&gt;
  &lt;blockquote id=&quot;3HZw&quot;&gt;If in simple words — imagine a small packing box. In it you can put different things: dishes, microphone, cup, so that it would be convenient to carry things. So, &lt;strong&gt;module&lt;/strong&gt; — this is exactly such a box. Inside it are located different functions, and each performs its task: cup — for drinking, microphone — for recording sound. &lt;strong&gt;Exactly the&lt;/strong&gt; &lt;strong&gt;same way functions in a module&lt;/strong&gt; perform concrete actions inside your script&lt;/blockquote&gt;
  &lt;p id=&quot;8GVI&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;vMDO&quot;&gt;The entire toolbar of BrowserAutomationStudio represents a catalog of diverse modules, each of which is intended for performing specific tasks&lt;/p&gt;
  &lt;p id=&quot;XqMJ&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;ueTi&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/JsLaGFZ.png&quot; width=&quot;981&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;BrowserAutomationStudio module catalog&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;9KpW&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;7rPG&quot;&gt;Advantages of Modules:&lt;/p&gt;
  &lt;ul id=&quot;LnXP&quot;&gt;
    &lt;li id=&quot;yBuL&quot;&gt;&lt;strong&gt;Time saving &lt;/strong&gt;— with the help of modules you get rid of the necessity to create the same functions from scratch every time. It&amp;#x27;s enough to develop a module once and use it in any BAS projects where it is required&lt;/li&gt;
    &lt;li id=&quot;tUO8&quot;&gt;&lt;strong&gt;Optimization and readability of code &lt;/strong&gt;— modules allow to «hide» complex code behind one convenient cube. Your project will become to look neater and more visual&lt;/li&gt;
    &lt;li id=&quot;jIB2&quot;&gt;&lt;strong&gt;Improved support for code updating &lt;/strong&gt;— if it&amp;#x27;s necessary to change functionality in separate parts, it&amp;#x27;s enough to make changes in the module, update it and the project actions&lt;/li&gt;
    &lt;li id=&quot;Okl1&quot;&gt;&lt;strong&gt;Convenient testing&lt;/strong&gt; — modules can be tested separately from the main project, which simplifies debugging and error fixing&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;YrfD&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;v1SJ&quot;&gt;&lt;strong&gt;Module technology &lt;/strong&gt;— key to simplifying everyday work. Let&amp;#x27;s figure out how to create a module step by step on the example of &lt;strong&gt;Emulator Module&lt;/strong&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;t0Pc&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;lXoC&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;yBYR&quot; data-align=&quot;center&quot;&gt;2.  Creating a module for page emulation Emulator Module&lt;/h2&gt;
  &lt;p id=&quot;tCge&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;XtcB&quot;&gt;Task of the module&lt;/h3&gt;
  &lt;ul id=&quot;75n0&quot;&gt;
    &lt;li id=&quot;CP69&quot;&gt;Go to the specified web page. After its loading the module should emulate user activity, while the duration of work is set by the user&lt;/li&gt;
    &lt;li id=&quot;HBa0&quot;&gt;Take a screenshot by the specified selector, and save it in the project directory&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;uqzN&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;NfLj&quot;&gt;For creating a module it&amp;#x27;s necessary to understand how functions work in BrowserAutomationStudio. You can familiarize yourself with their work in this article: &lt;a href=&quot;https://teletype.in/@bablosoft/functions-in-BAS-en&quot; target=&quot;_blank&quot;&gt;More about functions&lt;/a&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;exet&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;FfiT&quot;&gt;In BrowserAutomationStudio actions in the module are implemented through functions, we need to &lt;strong&gt;create a function&lt;/strong&gt; and &lt;strong&gt;fill it&lt;/strong&gt;. From the task of the Emulator Module module, it can be understood that we need to create &lt;strong&gt;two functions&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;jeFk&quot;&gt;
    &lt;li id=&quot;9xSF&quot;&gt;&lt;strong&gt;Function №1&lt;/strong&gt;: Will go to the site page &lt;strong&gt;→&lt;/strong&gt; Waiting for Full Loading of the page &lt;strong&gt;→&lt;/strong&gt; action «Start emulation of inactivity»&lt;/li&gt;
    &lt;li id=&quot;EP9Y&quot;&gt;&lt;strong&gt;Function №2&lt;/strong&gt;: Screenshot &lt;strong&gt;→&lt;/strong&gt; saving screenshot &lt;strong&gt;→&lt;/strong&gt; output information to log &lt;strong&gt;→&lt;/strong&gt; return to the module user in variable the path to screenshote&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;maOA&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;DRMk&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/hjHVkpw.png&quot; width=&quot;543&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Module function diagram&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;07DG&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Fv8x&quot;&gt;Module project&lt;/h3&gt;
  &lt;p id=&quot;5fh6&quot;&gt;&lt;br /&gt;To quickly demonstrate module creation, we prepared the &lt;strong&gt;Emulator_Module&lt;/strong&gt; project, containing the main logic&lt;/p&gt;
  &lt;p id=&quot;A3OH&quot;&gt;Also &lt;strong&gt;two functions&lt;/strong&gt; were added to the project in advance, which we created earlier. We omitted their implementation in order to immediately proceed to demonstration of the module&amp;#x27;s work&lt;/p&gt;
  &lt;p id=&quot;tMS9&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;xogH&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;C9Xu&quot;&gt;Function №1&lt;/h3&gt;
  &lt;p id=&quot;Xm95&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;8URB&quot;&gt;&lt;strong&gt;Task&lt;/strong&gt;: go to the page specified by the module user (parameter #1), emulate work for the specified amount of time (parameter #2)&lt;/p&gt;
  &lt;ol id=&quot;CiFk&quot;&gt;
    &lt;li id=&quot;VuuY&quot;&gt;&lt;strong&gt;Function name:&lt;/strong&gt; Load_site_await_emulation&lt;/li&gt;
    &lt;li id=&quot;IPXE&quot;&gt;&lt;strong&gt;Function description:&lt;/strong&gt; Action of page loading and emulation&lt;/li&gt;
    &lt;li id=&quot;aTco&quot;&gt;&lt;strong&gt;Return value:&lt;/strong&gt; (This option is not required for the current task)&lt;/li&gt;
    &lt;li id=&quot;bcYn&quot;&gt;&lt;strong&gt;Parameter #1:&lt;/strong&gt; User enters link to the site. Type — «&lt;strong&gt;String or expression»&lt;/strong&gt;, to give the module user maximum freedom of action&lt;/li&gt;
    &lt;li id=&quot;pJgc&quot;&gt;&lt;strong&gt;Parameter #2:&lt;/strong&gt; User selects type «&lt;strong&gt;Number or expression»&lt;/strong&gt; by analogy with the first parameter&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;KC0x&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;gos0&quot; data-align=&quot;center&quot;&gt;Final view of function №1&lt;/h3&gt;
  &lt;p id=&quot;KCNy&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;OfgB&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/YPUG0Wm.png&quot; width=&quot;483&quot; /&gt;
    &lt;figcaption&gt;Function №1 with filled parameters&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;eL3w&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;lnbD&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Parameter №1&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;nntT&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/ee/b7/eeb76890-dc2a-4eba-9e2a-a9df8ec382a7.png&quot; width=&quot;490&quot; /&gt;
    &lt;figcaption&gt;Parameter #1 with entered values&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;xNHv&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;3oYD&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Parameter №2&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;m4B4&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/0c/4b/0c4b811b-5077-46f2-9dd9-1c24a52d02d9.png&quot; width=&quot;494&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Parameter #2 with entered values&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Moab&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;GTi9&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Function code&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;rGV4&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/43/9e/439e970e-27ac-47b0-a569-2c451c5f2255.png&quot; width=&quot;484&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Function Code&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;cRND&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;y9Zp&quot;&gt;&lt;strong&gt;Important!&lt;/strong&gt; When using third-party modules your module becomes dependent on them. If the needed module is not installed in the project (for you or for the end user), the work of your module will be disrupted&lt;/blockquote&gt;
  &lt;p id=&quot;2Y1b&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;hcXC&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;jbuy&quot;&gt;Function №2&lt;/h3&gt;
  &lt;p id=&quot;sl6L&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;CphY&quot;&gt;&lt;strong&gt;Task:&lt;/strong&gt; Take a screenshot by the selector passed by the module user, then save the screenshot and output to log the path to the screenshot (parameter #1)&lt;/p&gt;
  &lt;ol id=&quot;uGZX&quot;&gt;
    &lt;li id=&quot;K3qF&quot;&gt;&lt;strong&gt;Function Name:&lt;/strong&gt; screenshot_and_save_screenshot_to_png&lt;/li&gt;
    &lt;li id=&quot;gnl2&quot;&gt;&lt;strong&gt;Function description:&lt;/strong&gt; This action will take a screenshot of the entire screen, after which it will save it in the project directory with .png format&lt;/li&gt;
    &lt;li id=&quot;Mg2T&quot;&gt;&lt;strong&gt;Return value:&lt;/strong&gt; Screenshot saving path. The module user will get back in variable «MODULE_EMUL_SCREENSHOT_PATH» the location of the screenshot&lt;/li&gt;
    &lt;li id=&quot;ZTIy&quot;&gt;&lt;strong&gt;Parameter #1:&lt;/strong&gt; The module user should pass selector for the «Screenshot» action&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;Oh0u&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;oBzt&quot;&gt;&lt;strong&gt;Parameters of function № 2 differ from function № 1:&lt;/strong&gt;&lt;/p&gt;
    &lt;ul id=&quot;amhF&quot;&gt;
      &lt;li id=&quot;CCam&quot;&gt;In parameter Selector_for_screenshot option «&lt;strong&gt;Default value»&lt;/strong&gt; is added&lt;/li&gt;
      &lt;li id=&quot;wTaN&quot;&gt;Besides that, function № 2 has a &lt;strong&gt;return value&lt;/strong&gt; — the module passes the path to the saved screenshot into a variable&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;p id=&quot;ourD&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;humX&quot; data-align=&quot;center&quot;&gt;Final view of function №2&lt;/h3&gt;
  &lt;p id=&quot;GuF9&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;vv0m&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/75/64/75641d29-cd9f-4114-993d-1ba0b1a7aa81.png&quot; width=&quot;496&quot; /&gt;
    &lt;figcaption&gt;Function №2 with filled parameters&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KzoL&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;3ICb&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Filled Parameter #1&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;eFTo&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1c/a7/1ca7cc1a-2dee-4905-ad3b-acfe84b3f351.png&quot; width=&quot;460&quot; /&gt;
    &lt;figcaption&gt;Parameter #1 with entered values&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;sHw8&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Ly1w&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Function code&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;LhVk&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/05/78/05786c08-5df6-4665-a3e5-e50fe46e84d9.png&quot; width=&quot;483&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;&lt;em&gt;Function Code (Part 1)&lt;/em&gt;&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;rDsW&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/21/c2/21c20067-8d63-4ee2-a1bf-1a7e25e70d41.png&quot; width=&quot;485&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Function Code (Part 2)&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NShQ&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;VUbW&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;hGfB&quot;&gt;Additionally to functions:&lt;/h3&gt;
  &lt;p id=&quot;8ymX&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ANAv&quot;&gt;&lt;strong&gt;1. Passing resources to module functions&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;AjKA&quot;&gt;When writing functions for your module, to pass resources to the function, it&amp;#x27;s necessary to call it using the «&lt;strong&gt;Function call»&lt;/strong&gt; action (module «&lt;strong&gt;Script logic»&lt;/strong&gt; → action «&lt;strong&gt;Function call»&lt;/strong&gt;) and fill the parameters with the needed resources&lt;/p&gt;
  &lt;blockquote id=&quot;zqRv&quot;&gt;⚠️ &lt;strong&gt;Important:&lt;/strong&gt; if you don&amp;#x27;t perform the «Function call» action, parameters will not be passed, and their values will remain &lt;strong&gt;null&lt;/strong&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;3CtL&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;GPLW&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/67/aa/67aacc2f-e1ab-454b-b074-d1b9f9cde024.png&quot; width=&quot;481&quot; /&gt;
    &lt;figcaption&gt;Press this button to pass resources to function parameters&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;r3jt&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;U4VO&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;U3vz&quot;&gt;2. &lt;strong&gt;Testing module logic&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ZdBm&quot;&gt;For convenience of testing it&amp;#x27;s recommended to use the «MAIN» function. It executes during debugging, but when compiling the module it&amp;#x27;s automatically excluded from the final build&lt;/p&gt;
  &lt;p id=&quot;NKc6&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;OkqS&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;YAih&quot;&gt;&lt;strong&gt;3. Useful tips when creating modules&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;EPzb&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;xNvP&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/oKPVLsE.png&quot; width=&quot;1427&quot; /&gt;
    &lt;figcaption&gt;«Tip» - Function settings in module interface&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;0Bsn&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;wDZt&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;1bSC&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/EJnHPng.png&quot; width=&quot;1437.9999999999998&quot; /&gt;
    &lt;figcaption&gt;«Tip» - How parameter is displayed in module&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Es9C&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;z2Y1&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;6ouO&quot; data-align=&quot;center&quot;&gt;3.  Installation and use of module&lt;/h2&gt;
  &lt;p id=&quot;VnEX&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;OOKk&quot; data-align=&quot;center&quot;&gt;After preparing two functions, the next stage is their integration and compilation into a full-fledged module&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;KpGt&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;jthc&quot;&gt;Eight steps to module compilation&lt;/h3&gt;
  &lt;p id=&quot;igHO&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;fP3l&quot;&gt;&lt;strong&gt;1. Complete work on the script&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;vEre&quot;&gt;Module installation is impossible while the script is running&lt;/p&gt;
  &lt;p id=&quot;Zexj&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;P7oK&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;oABa&quot;&gt;&lt;strong&gt;2. Go to the «Module Manager» window&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;lsfr&quot;&gt;&lt;strong&gt;Location:&lt;/strong&gt; top panel of BrowserAutomationStudio, button «Module Manager»&lt;/p&gt;
  &lt;p id=&quot;3XZM&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;5oEP&quot;&gt;&lt;strong&gt;In the «Module Manager» tool the following settings are available:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;dj7O&quot;&gt;
    &lt;li id=&quot;kY5d&quot;&gt;Create / Install a module&lt;/li&gt;
    &lt;li id=&quot;G5C6&quot;&gt;Search&lt;/li&gt;
    &lt;li id=&quot;Tku1&quot;&gt;View all existing modules&lt;/li&gt;
    &lt;li id=&quot;ga9y&quot;&gt;Disable/enable module using combobox to the right of the namee&lt;/li&gt;
    &lt;li id=&quot;xR2j&quot;&gt;Open folder with module by clicking on module title&lt;/li&gt;
    &lt;li id=&quot;zol4&quot;&gt;See version, name and description of module&lt;br /&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;AS9p&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;pkYf&quot;&gt;3. To compile the module press the «Create module» button&lt;/h3&gt;
  &lt;p id=&quot;8dd9&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;auah&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;bOg5&quot;&gt;&lt;strong&gt;4. Selection of functions for compilation&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;vUaK&quot;&gt;Earlier, at the development stage, two functions were created. Now comes the next step — their compilation into a full-fledged module&lt;/p&gt;
  &lt;p id=&quot;Adgk&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;w4wo&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e7/27/e727c0c0-c03c-48d0-a145-7f4475b07741.png&quot; width=&quot;729&quot; /&gt;
    &lt;figcaption&gt;Selection of functions for compilation&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;RHFL&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;q4r2&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;qLIz&quot;&gt;&lt;strong&gt;5. Module description and its name&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;yk4z&quot;&gt;Click on the «&lt;strong&gt;Show more»&lt;/strong&gt; button to expand and see all available fields&lt;/p&gt;
  &lt;blockquote id=&quot;yUMy&quot;&gt;In the image below on the left the corresponding fields are shown, as well as their appearance in the module interface&lt;/blockquote&gt;
  &lt;p id=&quot;Yyfd&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;uBom&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/kMT3lZo.png&quot; width=&quot;1373&quot; /&gt;
    &lt;figcaption&gt;«Tip» - Example of compilation settings in module interface&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;16zK&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;ktvx&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;fifQ&quot;&gt;&lt;strong&gt;6. Load logo for the module&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;Izij&quot;&gt;Regardless of the original logo size, it will be automatically scaled to 32×32 pixel format&lt;/p&gt;
  &lt;p id=&quot;7PFk&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Yo9N&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;l4OL&quot;&gt;&lt;strong&gt;7. Selection of additional parameters&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;2U2D&quot;&gt;When going to the page with additional module compilation parameters two checkboxes are displayed:&lt;/p&gt;
  &lt;ul id=&quot;fpZN&quot;&gt;
    &lt;li id=&quot;jMpK&quot;&gt;&lt;em&gt;Random function name (recommended)&lt;/em&gt; — if the same function names are used in different modules, this can lead to conflicts. Enabling this option helps avoid such situations&lt;/li&gt;
    &lt;li id=&quot;v6cB&quot;&gt;&lt;em&gt;Install module immediately after creation&lt;/em&gt; — this option allows to automatically install the compiled module, and when updating automatically replaces the old version with the new one, and installs the updated one in the project&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;5w2O&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;wjm4&quot;&gt;&lt;strong&gt;&lt;em&gt;We&amp;#x27;ll leave both checkmarks active and proceed to the finale of module compilation&lt;/em&gt;&lt;/strong&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;Gl29&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;9L61&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Xhbv&quot;&gt;&lt;strong&gt;8. Finale — module is compiled and installed in the project&lt;/strong&gt;&lt;/h3&gt;
  &lt;ul id=&quot;IDhY&quot;&gt;
    &lt;li id=&quot;mQSx&quot;&gt;After pressing the «&lt;strong&gt;Finish»&lt;/strong&gt; button — BrowserAutomationStudio compiled the module and automatically opened the folder where it is located in &lt;code&gt;.zip&lt;/code&gt; format&lt;/li&gt;
    &lt;li id=&quot;X2lx&quot;&gt;The module automatically installed in our project. This can be checked by opening the «&lt;strong&gt;Module manager»&lt;/strong&gt; window&lt;/li&gt;
    &lt;li id=&quot;X1hX&quot;&gt;The module also shows up in the catalog of other modules&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;jAmy&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;06Y3&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/5uE4RQG.png&quot; width=&quot;772&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;🎉 Successfully added module&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;oM7e&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;epMU&quot;&gt;Additional information:&lt;/h3&gt;
  &lt;ul id=&quot;bZl1&quot;&gt;
    &lt;li id=&quot;hmkr&quot;&gt;If you need to update the module without going through all the steps again, in the compilation dialog box press the «&lt;strong&gt;Skip»&lt;/strong&gt; button&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;kikr&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Td25&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/bhRfp9j.png&quot; width=&quot;731&quot; /&gt;
    &lt;figcaption&gt;Quick module compilation by pressing one button&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;x5wR&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;3etp&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;E1PK&quot;&gt;Thank you for your attention&lt;/h2&gt;
  &lt;p id=&quot;Q4Ui&quot;&gt;In this article we examined a simple module consisting of several functions. However, imagine how much time can be saved if you start creating modules and combining them with more complex everyday algorithms!&lt;/p&gt;
  &lt;p id=&quot;Jb21&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;jdfR&quot;&gt;Source files for practice:&lt;/h3&gt;
  &lt;ol id=&quot;RDax&quot;&gt;
    &lt;li id=&quot;b09z&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685704514-emulatormodule_en.zip&quot; target=&quot;_blank&quot;&gt;Module from article.zip&lt;/a&gt; | &lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685704518-emulator_moduleen.xml&quot; target=&quot;_blank&quot;&gt;Module source file.xml&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;KWUT&quot;&gt;You can find ideas for modules at the following &lt;a href=&quot;https://www.npmjs.com/&quot; target=&quot;_blank&quot;&gt;link&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h3 id=&quot;seIN&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;gPBl&quot;&gt;You can share your module, as dozens of other authors have done ❤️&lt;/h3&gt;
  &lt;p id=&quot;DJ5F&quot;&gt;Module thread on the forum — &lt;a href=&quot;https://community.bablosoft.com/category/44/share-bas-modules&quot; target=&quot;_blank&quot;&gt;EN&lt;/a&gt; | &lt;a href=&quot;https://community.bablosoft.com/category/45/%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D1%81%D1%8C-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8&quot; target=&quot;_blank&quot;&gt;RU&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;strong&gt;Additional study materials:&lt;/strong&gt;&lt;br /&gt;1. &lt;a href=&quot;https://teletype.in/@bablosoft/functions-in-BAS-en&quot; target=&quot;_blank&quot;&gt;Functions in BrowserAutomationStudio&lt;/a&gt;&lt;br /&gt;2. &lt;a href=&quot;https://teletype.in/@bablosoft/Localization-BAS-Modules-en&quot; target=&quot;_blank&quot;&gt;Module localization. How to rename actions in the module&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;iT1r&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;adGj&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Li4w&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;KRzi&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/BablosoftOfficialEN&quot; target=&quot;_blank&quot;&gt;English channel&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;rcNk&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0IDb&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kPaM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;AGoJ&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;peCN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IAvV&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>bablosoft:create-first-module-ru</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/create-first-module-ru?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>Пошаговое руководство по созданию модуля в BAS</title><published>2025-06-02T12:34:49.228Z</published><updated>2025-06-12T02:34:42.742Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/bc/94/bc946a03-68fb-4cb1-8b53-96d819bfd557.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://i.imgur.com/aOipyDJ.jpeg&quot;&gt;В этой статье вы узнаете, как пошагово создавать модули в BrowserAutomationStudio на примере простого модуля «Эмуляция страницы»</summary><content type="html">
  &lt;figure id=&quot;WMsI&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/aOipyDJ.jpeg&quot; width=&quot;1157.0209923664122&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;pSnD&quot;&gt;В этой статье вы узнаете, как пошагово создавать модули в BrowserAutomationStudio на примере простого модуля «Эмуляция страницы»&lt;/p&gt;
  &lt;p id=&quot;MjQ2&quot;&gt;В рамках материала мы разработаем базовый модуль, включающий несколько ключевых действий — от эмуляции поведения браузера до сохранения скриншотов. Этот пример поможет вам понять структуру модулей и принципы их создания&lt;/p&gt;
  &lt;p id=&quot;vMoI&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;RDQO&quot;&gt;Данная статья была подготовлена на основе старой версии интерфейса. Несмотря на возможные визуальные изменения, функциональность и последовательность действий остались актуальными&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Mgzd&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;trgb&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/K8JHjtI.png&quot; width=&quot;936&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Каталог модулей с добавленным модулем из текущей статьи&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;2jJ3&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;tLwD&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7a/f5/7af59bb6-bb2d-4dfd-9d1f-3d1c5a4971e8.png&quot; width=&quot;941&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Интерфейс разработанного модуля&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;PScm&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;XJch&quot; data-align=&quot;center&quot;&gt;1.  Что такое модули и их преимущества&lt;/h2&gt;
  &lt;p id=&quot;GbFm&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;byzM&quot;&gt;&lt;strong&gt;Модуль&lt;/strong&gt; — это набор функций, объединенных в одном месте. Он помогает структурировать проект, ускоряет разработку и позволяет повторно использовать код в разных проектах BAS&lt;/p&gt;
  &lt;blockquote id=&quot;dUKe&quot;&gt;Если простыми словами — представьте себе небольшую упаковочную коробку. В неё можно сложить разные вещи: посуду, микрофон, чашку, чтобы было удобно переносить вещи. Так вот, &lt;strong&gt;модуль&lt;/strong&gt; — это и есть такая коробка. Внутри нее находятся разные функции, и каждая выполняет свою задачу: чашка — для питья, микрофон — для записи звука. &lt;strong&gt;Точно так же и функции в модуле&lt;/strong&gt; выполняют конкретные действия внутри вашего скрипта&lt;/blockquote&gt;
  &lt;p id=&quot;dxO8&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;CiLH&quot;&gt;Вся панель инструментов BrowserAutomationStudio представляет собой каталог разнообразных модулей, каждый из которых предназначен для выполнения определенных задач&lt;/p&gt;
  &lt;p id=&quot;vBXi&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;e6F5&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/iiHf1C9.png&quot; width=&quot;820&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Каталог модулей BrowserAutomationStudio&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qLBD&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;6bjw&quot;&gt;Преимущества Модулей:&lt;/p&gt;
  &lt;ul id=&quot;LnXP&quot;&gt;
    &lt;li id=&quot;mtGO&quot;&gt;&lt;strong&gt;Экономия времени&lt;/strong&gt; — с помощью модулей вы избавляетесь от необходимости каждый раз создавать одни и те же функции с нуля. Достаточно один раз разработать модуль и использовать его в любых проектах BAS, где он требуется&lt;/li&gt;
    &lt;li id=&quot;YHQA&quot;&gt;&lt;strong&gt;Оптимизация и читабельность кода&lt;/strong&gt; — модули позволяют «спрятать» сложный код за одним удобным кубиком. Ваш проект станет выглядеть аккуратнее и нагляднее&lt;/li&gt;
    &lt;li id=&quot;CvZU&quot;&gt;&lt;strong&gt;Улучшенная поддержка обновления кода&lt;/strong&gt; — если необходимо изменить функциональность в отдельных частях, достаточно внести изменения в модуль, обновить его и действия проекта&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;OYfv&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;K401&quot;&gt;&lt;strong&gt;Технология модулей &lt;/strong&gt;— ключ к упрощению повседневной работы. Давайте разберемся, как пошагово создать модуль на примере &lt;strong&gt;Emulator Module&lt;/strong&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;jjQ6&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;7jwb&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;TWp2&quot; data-align=&quot;center&quot;&gt;2.  Создание модуля для эмуляции страниц Emulator Module&lt;/h2&gt;
  &lt;p id=&quot;eeSS&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;9SlR&quot;&gt;Задача модуля&lt;/h3&gt;
  &lt;ul id=&quot;75n0&quot;&gt;
    &lt;li id=&quot;1iOB&quot;&gt;Перейти на указанную веб-страницу. После ее загрузки модуль должен эмулировать активность пользователя, при этом продолжительность работы задаётся пользователем&lt;/li&gt;
    &lt;li id=&quot;QqJk&quot;&gt;Сделать скриншот по указанному селектору, и сохранить его в директорию проекта&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;5G4c&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;uVFf&quot;&gt;Для создания модуля необходимо понимать, как работают функции в BrowserAutomationStudio. Ознакомиться с их работой вы можете в этой статье: &lt;a href=&quot;https://teletype.in/@bablosoft/functions-in-BAS-ru&quot; target=&quot;_blank&quot;&gt;Подробнее о функциях&lt;/a&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;bgvg&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;lOM6&quot;&gt;В BrowserAutomationStudio действия в модуле реализованы через функции, нам нужно &lt;strong&gt;создать функцию&lt;/strong&gt; и &lt;strong&gt;заполнить ее&lt;/strong&gt;. Из задачи модуля Emulator Module, можно понять, что нам нужно создать &lt;strong&gt;две функции&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;jeFk&quot;&gt;
    &lt;li id=&quot;ulQ3&quot;&gt;&lt;strong&gt;Функция №1:&lt;/strong&gt; Перейдет на страницу сайта &lt;strong&gt;→&lt;/strong&gt; Ожидание Полной Загрузки страницы &lt;strong&gt;→&lt;/strong&gt; действие «Начать эмуляцию бездействия»&lt;/li&gt;
    &lt;li id=&quot;F4DH&quot;&gt;&lt;strong&gt;Функция №2:&lt;/strong&gt; Скриншот &lt;strong&gt;→&lt;/strong&gt; сохранение скриншота &lt;strong&gt;→&lt;/strong&gt; вывод информации в лог &lt;strong&gt;→&lt;/strong&gt; вернуть пользователю модуля в переменную путь к скриншоту&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;cE4O&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;nunl&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/VJY6st1.png&quot; width=&quot;489&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Схема функций модуля&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;g55L&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;QRGe&quot;&gt;Проект модуля&lt;/h3&gt;
  &lt;p id=&quot;PnHc&quot;&gt;Чтобы быстро продемонстрировать создание модуля, мы подготовили проект &lt;strong&gt;Emulator_Module&lt;/strong&gt;, содержащий основную логику&lt;/p&gt;
  &lt;p id=&quot;Kcnf&quot;&gt;Также в проект заранее добавлены &lt;strong&gt;две функции&lt;/strong&gt;, которые мы создавали ранее. &lt;em&gt;Их реализацию мы опустили, чтобы сразу перейти к демонстрации работы модуля&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Raqc&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;0jnP&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Znwy&quot;&gt;Функция №1&lt;/h3&gt;
  &lt;p id=&quot;2lKy&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;7og9&quot;&gt;&lt;strong&gt;Задача:&lt;/strong&gt; перейти на страницу указанную пользователем модуля &lt;em&gt;(параметр #1)&lt;/em&gt;, эмулировать работу указанное число времени &lt;em&gt;(параметр #2)&lt;/em&gt;&lt;/p&gt;
  &lt;ol id=&quot;CiFk&quot;&gt;
    &lt;li id=&quot;blMk&quot;&gt;&lt;strong&gt;Имя функции:&lt;/strong&gt; Load_site_await_emulation&lt;/li&gt;
    &lt;li id=&quot;fdrc&quot;&gt;&lt;strong&gt;Описание функции:&lt;/strong&gt; Действие загрузки страницы и эмуляции&lt;/li&gt;
    &lt;li id=&quot;uAVX&quot;&gt;&lt;strong&gt;Возвращаемое значение:&lt;/strong&gt; (&lt;em&gt;Эта опция не требуется для текущей задачи)&lt;/em&gt;&lt;/li&gt;
    &lt;li id=&quot;jcla&quot;&gt;&lt;strong&gt;Параметр #1:&lt;/strong&gt; Пользователь вводит ссылку на сайт. Тип — «&lt;strong&gt;Строка или выражение»&lt;/strong&gt;, чтобы дать пользователю модуля максимальную свободу действий&lt;/li&gt;
    &lt;li id=&quot;VK89&quot;&gt;&lt;strong&gt;Параметр #2:&lt;/strong&gt; Пользователь выбирает тип «&lt;strong&gt;Число или выражение»&lt;/strong&gt; по аналогии с первым параметром&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;wCW0&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;LkP3&quot; data-align=&quot;center&quot;&gt;Итоговый вид функции №1&lt;/h3&gt;
  &lt;p id=&quot;iJ6a&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;WoXl&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/C8xLfwV.png&quot; width=&quot;486&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Функция №1 с заполненными параметрами&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;814D&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ezNB&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Параметр №1&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;3v1o&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/haldYTY.png&quot; width=&quot;494&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Параметр #1 с введенным значениями&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Tn2K&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;t7We&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Параметр №2&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;WPlk&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/rKjDTN4.png&quot; width=&quot;490&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Параметр #2 с введенным значениями&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;FsHE&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;cAFx&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Код функции&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;HPKp&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/hIdBdFA.png&quot; width=&quot;507&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Код функции&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;m0i6&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;XxIR&quot;&gt;&lt;strong&gt;Важно!&lt;/strong&gt; При использовании сторонних модулей ваш модуль становится от них зависим. Если нужный модуль не установлен в проекте (у вас или у конечного пользователя), работа вашего модуля будет нарушена&lt;/blockquote&gt;
  &lt;p id=&quot;MqyP&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;sCCX&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;7AAO&quot;&gt;Функция №2&lt;/h3&gt;
  &lt;p id=&quot;U16A&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Nhpi&quot;&gt;&lt;strong&gt;Задача:&lt;/strong&gt; Сделать скриншот по переданному пользователем модуля селектору, после сохранить скриншот и вывести в лог путь к скриншоту &lt;em&gt;(параметр #1)&lt;/em&gt;&lt;/p&gt;
  &lt;ol id=&quot;uGZX&quot;&gt;
    &lt;li id=&quot;qLQP&quot;&gt;&lt;strong&gt;Имя функции:&lt;/strong&gt; screenshot_and_save_screenshot_to_png&lt;/li&gt;
    &lt;li id=&quot;A3So&quot;&gt;&lt;strong&gt;Описание функции:&lt;/strong&gt; Данное действие сделает скриншот всего экрана, после чего сохранит его в директорию проекта с форматом .png&lt;/li&gt;
    &lt;li id=&quot;Jtzr&quot;&gt;&lt;strong&gt;Возвращаемое значение:&lt;/strong&gt; Путь сохранения скриншота. Пользователю модуля вернется в переменную «MODULE_EMUL_SCREENSHOT_PATH» место размещения скриншота&lt;/li&gt;
    &lt;li id=&quot;vYRn&quot;&gt;&lt;strong&gt;Параметр #1:&lt;/strong&gt; Пользователь модуля должен передать селектор для действия «Скриншот»&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p id=&quot;KwF1&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;VgJr&quot;&gt;&lt;strong&gt;Параметры функции № 2 отличаются от функции № 1:&lt;/strong&gt;&lt;/p&gt;
    &lt;ul id=&quot;amhF&quot;&gt;
      &lt;li id=&quot;a0w2&quot;&gt;В параметре Selector_for_screenshot добавлена опция &lt;strong&gt;«Значение по умолчанию»&lt;/strong&gt;&lt;/li&gt;
      &lt;li id=&quot;RxjQ&quot;&gt;Кроме того, функция № 2 имеет &lt;strong&gt;возвращаемое значение&lt;/strong&gt; — модуль передает путь к сохранённому скриншоту в переменную&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/section&gt;
  &lt;p id=&quot;3eyD&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;ptBy&quot; data-align=&quot;center&quot;&gt;Итоговый вид функции №2&lt;/h3&gt;
  &lt;p id=&quot;Mls7&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;xqon&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/41aJSLQ.png&quot; width=&quot;514&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Функция №2 с заполненными параметрами&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;lVge&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ZsUL&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Заполненный Параметр #1&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;saJc&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/2MEl7H1.png&quot; width=&quot;491&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Параметр #1 с введенным значениями&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;9XIb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Zg2C&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Код функции&lt;/strong&gt;&lt;/p&gt;
  &lt;figure id=&quot;UIls&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/fT2npSJ.png&quot; width=&quot;550&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Код функции &lt;em&gt;(часть 1)&lt;/em&gt;&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;SYcm&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/t9sYXlM.png&quot; width=&quot;539&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Код функции (часть 2)&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;k4Lg&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;G8Wr&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;jBOr&quot;&gt;Дополнительно к функциям:&lt;/h3&gt;
  &lt;p id=&quot;2lPC&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;zNMg&quot;&gt;&lt;strong&gt;1. Передача ресурсов в функции модуля&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Bm58&quot;&gt;При написании функций для вашего модуля, чтобы передать ресурсы в функцию, необходимо вызвать ее с помощью действия &lt;strong&gt;«Вызов функции»&lt;/strong&gt; (модуль &lt;strong&gt;«Логика скрипта»&lt;/strong&gt; → действие &lt;strong&gt;«Вызов функции»&lt;/strong&gt;) и заполнить параметры нужными ресурсами&lt;/p&gt;
  &lt;blockquote id=&quot;jmJo&quot;&gt;⚠️ &lt;strong&gt;Важно:&lt;/strong&gt; если вы не выполните действие «Вызов функции», параметры не будут переданы, и их значения останутся &lt;strong&gt;null&lt;/strong&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;rfiG&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;w8kT&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/Li4lvVN.png&quot; width=&quot;540&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Нажмите эту кнопку, чтобы передать ресурсы в параметры функции&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5wBo&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;wBXi&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;NBKR&quot;&gt;&lt;strong&gt;2. Тестирование логики модуля&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;d0rh&quot;&gt;Для удобства тестирования рекомендуется использовать функцию «MAIN». Она выполняется во время отладки, но при компиляции модуля автоматически исключается из финальной сборки&lt;/p&gt;
  &lt;p id=&quot;LdzZ&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;FuIC&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;RanQ&quot;&gt;&lt;strong&gt;3. Полезные подсказки при создании модулей&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;dtVn&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;1qeC&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/2q6mwzq.png&quot; width=&quot;1422&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;«Подсказка» - Настройки функции в интерфейсе модуля&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;I5dn&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;r0DT&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;XVTZ&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/UZv5Nx1.png&quot; width=&quot;1434.52466367713&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;«Подсказка» - Как параметр отображается в модуле&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Utup&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;aiyM&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;tsW6&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Ll02&quot; data-align=&quot;center&quot;&gt;3.  Установка и использование модуля&lt;/h2&gt;
  &lt;p id=&quot;QONi&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0,   0%,  var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;oB16&quot; data-align=&quot;center&quot;&gt;После подготовки двух функций, следующим этапом является их интеграция и компиляция в полноценный модуль&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;IsAf&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;aqrx&quot;&gt;Восемь шагов к компиляции модуля&lt;/h3&gt;
  &lt;p id=&quot;ymAm&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;p5pq&quot;&gt;&lt;strong&gt;1. Завершите работу над скриптом&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;IdoX&quot;&gt;Установка модуля невозможна, пока выполняется скрипт&lt;/p&gt;
  &lt;p id=&quot;hgQS&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;6mDH&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;rV3C&quot;&gt;&lt;strong&gt;2. Перейдите в окно «Менеджер Модулей»&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;3ep3&quot;&gt;&lt;strong&gt;Расположение:&lt;/strong&gt; верхняя панель BrowserAutomationStudio, кнопка «Менеджер Модулей»&lt;/p&gt;
  &lt;p id=&quot;9GaL&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ICgS&quot;&gt;&lt;strong&gt;В инструменте «Менеджер Модулей» доступны следующие настройки:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;dj7O&quot;&gt;
    &lt;li id=&quot;dq8X&quot;&gt;Создать / Установить модуль&lt;/li&gt;
    &lt;li id=&quot;S5xR&quot;&gt;Поиск&lt;/li&gt;
    &lt;li id=&quot;wUBE&quot;&gt;Просмотреть все существующие модули&lt;/li&gt;
    &lt;li id=&quot;WARi&quot;&gt;Отключить/включить модуль с помощью комбобокса справа от названия&lt;/li&gt;
    &lt;li id=&quot;fDik&quot;&gt;Открыть папку с модулем, кликнув по заголовку модуля&lt;/li&gt;
    &lt;li id=&quot;Sprm&quot;&gt;Увидеть версию, название и описание модуля&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;h5aC&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;DdvQ&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;uAD8&quot;&gt;3. Для компиляции модуля нажмите кнопку «&lt;strong&gt;Создать модуль»&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;9GnA&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;sQyy&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;XrvW&quot;&gt;&lt;strong&gt;4. Выбор функций для компиляции&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;PGKZ&quot;&gt;Ранее, на этапе разработки, были созданы две функции. Теперь наступает следующий шаг — их компиляция в полноценный модуль&lt;/p&gt;
  &lt;p id=&quot;8wYI&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;jhwU&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/d0WAzas.png&quot; width=&quot;729&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Выбор функций для компиляции&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;5jzT&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;Ykps&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;yvq0&quot;&gt;&lt;strong&gt;5. Описание модуля и его название&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;DjBi&quot;&gt;Нажмите на кнопку «&lt;strong&gt;Показать больше»&lt;/strong&gt;, чтобы раскрыть и увидеть все доступные поля&lt;/p&gt;
  &lt;blockquote id=&quot;AdBG&quot;&gt;На изображении ниже слева показаны соответствующие поля, а также их внешний вид в интерфейсе модуля&lt;/blockquote&gt;
  &lt;p id=&quot;wsvq&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;U3v1&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/M9dXod2.png&quot; width=&quot;1503.052987598647&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;«Подсказка» - Пример настроек компиляции в интерфейсе модуля&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IORb&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;3PX7&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;ch8i&quot;&gt;&lt;strong&gt;6. Загрузите логотип для модуля&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;SaEZ&quot;&gt;Независимо от исходного размера логотипа, он будет автоматически масштабирован до формата 32×32 пикселя&lt;/p&gt;
  &lt;p id=&quot;jFVx&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;S26q&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;sLKf&quot;&gt;&lt;strong&gt;7. Выбор дополнительных параметров&lt;/strong&gt;&lt;/h3&gt;
  &lt;p id=&quot;BMVp&quot;&gt;При переходе на страницу с дополнительными параметрами компиляции модуля отображаются два флажка (чекбокса):&lt;/p&gt;
  &lt;ul id=&quot;fpZN&quot;&gt;
    &lt;li id=&quot;0FjI&quot;&gt;&lt;em&gt;Случайное название функции (рекомендуется)&lt;/em&gt; — если в разных модулях используются одинаковые названия функций, это может привести к конфликтам. Включение этой опции помогает избежать подобных ситуаций&lt;/li&gt;
    &lt;li id=&quot;oBV7&quot;&gt;&lt;em&gt;Установить модуль сразу после создания&lt;/em&gt; — эта опция позволяет автоматически установить скомпилированный модуль, а при обновлении автоматически заменяет старую версию на новую, и устанавливает обновленную в проект&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;GDJb&quot;&gt;&lt;/p&gt;
  &lt;blockquote id=&quot;0QTn&quot;&gt;&lt;em&gt;&lt;strong&gt;Оставим две галочки активными и перейдем к финалу компиляции модуля&lt;/strong&gt;&lt;/em&gt;&lt;/blockquote&gt;
  &lt;p id=&quot;w2Rp&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;VWsK&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;8xDD&quot;&gt;&lt;strong&gt;8. Финал — модуль скомпилирован и установлен в проект&lt;/strong&gt;&lt;/h3&gt;
  &lt;ul id=&quot;IDhY&quot;&gt;
    &lt;li id=&quot;XLcI&quot;&gt;После нажатия кнопки «&lt;strong&gt;Finish»&lt;/strong&gt; — BrowserAutomationStudio скомпилировал модуль и автоматически открыл папку, где он находится в формате &lt;code&gt;.zip&lt;/code&gt;&lt;/li&gt;
    &lt;li id=&quot;MPCe&quot;&gt;Модуль автоматически установился в наш проект. Это можно проверить, открыв окно &lt;strong&gt;«Менеджер модулей»&lt;/strong&gt;&lt;/li&gt;
    &lt;li id=&quot;su1B&quot;&gt;Модуль так же показывается в каталоге других модулей&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;vxsh&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;PldA&quot; class=&quot;m_custom&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/shaheo6.png&quot; width=&quot;808&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;🎉 Успешно добавленный модуль&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Mm0W&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;JZvJ&quot;&gt;&lt;strong&gt;Дополнительная информация:&lt;/strong&gt;&lt;/h3&gt;
  &lt;ul id=&quot;bZl1&quot;&gt;
    &lt;li id=&quot;lFFm&quot;&gt;Если вам нужно обновить модуль без повторного прохождения всех шагов, в диалоговом окне компиляции нажмите кнопку &lt;strong&gt;«Пропустить»&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;b02h&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;8gTt&quot; class=&quot;m_original&quot; data-caption-align=&quot;center&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/BYtvzQg.png&quot; width=&quot;723&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Быстрая компиляция модуля по нажатию одной кнопки&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Z7TC&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;eg5e&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;KpdD&quot;&gt;Благодарим за ваше внимание&lt;/h2&gt;
  &lt;p id=&quot;e0Tp&quot;&gt;В данной статье мы рассмотрели простой модуль, состоящий из нескольких функций. Однако представьте, сколько времени можно сэкономить, если вы начнете создавать модули и комбинировать их с более сложными повседневными алгоритмами!&lt;/p&gt;
  &lt;p id=&quot;B0Y4&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;lElV&quot;&gt;Исходники для практики:&lt;/h3&gt;
  &lt;ol id=&quot;RDax&quot;&gt;
    &lt;li id=&quot;xRYE&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685685781-emulatormodule_ru.zip&quot; target=&quot;_blank&quot;&gt;Модуль из статьи.zip&lt;/a&gt; | &lt;a href=&quot;https://community.bablosoft.com/assets/uploads/files/1749685685785-emulator_module.xml&quot; target=&quot;_blank&quot;&gt;Исходник модуля.xml&lt;/a&gt;&lt;/li&gt;
    &lt;li id=&quot;IEGF&quot;&gt;Идеи для модулей можно найти по следующей &lt;a href=&quot;https://www.npmjs.com/&quot; target=&quot;_blank&quot;&gt;ссылке&lt;/a&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;h3 id=&quot;Rqsq&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;CLZh&quot;&gt;Вы можете поделиться своим модулем, как это сделали десятки других авторов ❤️&lt;/h3&gt;
  &lt;p id=&quot;1BEU&quot;&gt;Ветка модулей на форуме — &lt;a href=&quot;https://community.bablosoft.com/category/45/%D0%B4%D0%B5%D0%BB%D0%B8%D1%82%D0%B5%D1%81%D1%8C-%D0%BC%D0%BE%D0%B4%D1%83%D0%BB%D1%8F%D0%BC%D0%B8&quot; target=&quot;_blank&quot;&gt;RU&lt;/a&gt; | &lt;a href=&quot;https://community.bablosoft.com/category/44/share-bas-modules&quot; target=&quot;_blank&quot;&gt;EN&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;KCxC&quot;&gt;&lt;br /&gt;&lt;strong&gt;Дополнительные материалы для изучения:&lt;/strong&gt;&lt;br /&gt;1. &lt;a href=&quot;https://teletype.in/@bablosoft/functions-in-BAS-ru&quot; target=&quot;_blank&quot;&gt;Функции в BrowserAutomationStudio&lt;/a&gt;  &lt;br /&gt;2. &lt;a href=&quot;https://teletype.in/@bablosoft/Localization-BAS-Modules-ru&quot; target=&quot;_blank&quot;&gt;Локализация модуля. Как переименовать действия в модуле&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;LZvx&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Li4w&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;P3z5&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/Bablosoft&quot; target=&quot;_blank&quot;&gt;Русскоязычный канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;gfvh&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0IDb&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kPaM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube-канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;MrMr&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;peCN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IAvV&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>bablosoft:AutomationPlugins-en</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/AutomationPlugins-en?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>AutomationPlugins — a service for spoofing browser fingerprints in Puppeteer, Playwright, and other frameworks</title><published>2025-05-08T22:47:35.347Z</published><updated>2025-05-22T13:49:48.901Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/b1/b4/b1b49c44-04ae-4958-8fdf-edb439a88f87.png"></media:thumbnail><category term="automation-plugins" label="AutomationPlugins"></category><summary type="html">&lt;img src=&quot;https://i.imgur.com/whRijvu.png&quot;&gt;Change browser fingerprints in 5 minutes — without rewriting code, with AutomationPlugins. Supports Puppeteer, Playwright, Selenium, and any CDP frameworks. Over 150,000 real fingerprints — bypass anti-bots and stay invisible.</summary><content type="html">
  &lt;figure id=&quot;r0Jy&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/whRijvu.png&quot; width=&quot;1576.7245409015025&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;WjAx&quot; data-align=&quot;center&quot;&gt;About the product&lt;/h2&gt;
  &lt;p id=&quot;xjiC&quot;&gt;&lt;br /&gt;Every time you visit a website, your browser leaves a &lt;strong&gt;unique digital trace&lt;/strong&gt; — a browser fingerprint that includes dozens of parameters:&lt;/p&gt;
  &lt;ul id=&quot;qBCV&quot;&gt;
    &lt;li id=&quot;Qy4Q&quot;&gt;&lt;strong&gt;Graphic data&lt;/strong&gt; (Canvas and WebGL)&lt;/li&gt;
    &lt;li id=&quot;COEC&quot;&gt;&lt;strong&gt;System characteristics&lt;/strong&gt; (User-Agent, language, platform)&lt;/li&gt;
    &lt;li id=&quot;bCN6&quot;&gt;&lt;strong&gt;Screen parameters&lt;/strong&gt; (resolution, list of fonts and plugins)&lt;/li&gt;
    &lt;li id=&quot;ooJ3&quot;&gt;&lt;strong&gt;Time zone, hardware, and text rendering features&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;wbuX&quot;&gt;This data forms a unique identifier that allows websites and anti-bot systems to:&lt;/p&gt;
  &lt;ul id=&quot;oVet&quot;&gt;
    &lt;li id=&quot;joSg&quot;&gt;Detect suspicious activity&lt;/li&gt;
    &lt;li id=&quot;FQ8x&quot;&gt;Track sessions without cookies&lt;/li&gt;
    &lt;li id=&quot;rusz&quot;&gt;Identify automated actions (bots)&lt;/li&gt;
    &lt;li id=&quot;7wfs&quot;&gt;Block multi-accounting&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;AQi6&quot;&gt;Even when using proxies, cookies, and a spoofed User-Agent, your browser fingerprint still gives you away. You become an easily identifiable bot — &lt;strong&gt;websites can quickly detect your activity&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Yur3&quot;&gt;There is a solution!&lt;br /&gt;&lt;strong&gt;AutomationPlugins &lt;/strong&gt;—is a simple and universal way to spoof browser fingerprints in popular frameworks like Puppeteer, Playwright, Selenium, and others that use the CDP (Chrome DevTools Protocol)&lt;br /&gt;Integration with the FingerprintSwitcher service provides access to an extensive database of &lt;strong&gt;150,000+ real fingerprints&lt;/strong&gt;, allowing you to bypass anti-bot protections and emulate the behavior of real users&lt;/p&gt;
  &lt;p id=&quot;6QZX&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;UQZ2&quot; data-align=&quot;center&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;HETG&quot; data-align=&quot;center&quot;&gt;What AutomationPlugins does&lt;/h3&gt;
  &lt;p id=&quot;FRgG&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;NLKq&quot;&gt;&lt;strong&gt;AutomationPlugins &lt;/strong&gt;allows you to integrate the &lt;strong&gt;FingerprintSwitcher&lt;/strong&gt; service directly into the frameworks and libraries you need, such as Puppeteer, Playwright, Selenium, and others&lt;br /&gt;With it, you can automatically obtain new browser fingerprints and use them in your projects — to spoof Canvas, WebGL, fonts, language, timezone, and dozens of other parameters. This makes your bot&amp;#x27;s behavior indistinguishable from a real user&lt;/p&gt;
  &lt;p id=&quot;k19A&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;mtA0&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/yEcECwY.jpeg&quot; width=&quot;1354&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;3ZxX&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;5eup&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;LeWb&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;GulJ&quot; data-align=&quot;center&quot;&gt;How it works?&lt;/h2&gt;
  &lt;p id=&quot;gTZ2&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ejWy&quot;&gt;If you already have an existing project, you won&amp;#x27;t need to rewrite the code — just replace a couple of lines, and the browser will automatically launch with a unique fingerprint&lt;/p&gt;
  &lt;p id=&quot;j78E&quot;&gt;Everything works as before: you keep all the automation logic, but gain more &lt;strong&gt;anonymity, flexibility, and protection&lt;/strong&gt; against anti-bot systems&lt;/p&gt;
  &lt;p id=&quot;8O4b&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;zqFe&quot;&gt;Example: how FingerprintSwitcher works in Puppeteer&lt;/h3&gt;
  &lt;p id=&quot;d2Pl&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;sZCZ&quot;&gt;Let&amp;#x27;s say you already have a project in &lt;strong&gt;Puppeteer&lt;/strong&gt;&lt;br /&gt;Without fingerprint spoofing, the browser always leaves the same digital trace — making you vulnerable to tracking and anti-bot systems&lt;/p&gt;
  &lt;p id=&quot;xNj8&quot;&gt;But once you integrate &lt;strong&gt;FingerprintSwitcher&lt;/strong&gt;, every launch will appear as a new unique device: with a different Canvas, WebGL, language, timezone, and other parameters&lt;/p&gt;
  &lt;p id=&quot;2tOJ&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;73Lf&quot;&gt;Example: before and after&lt;/h3&gt;
  &lt;p id=&quot;LNdT&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;qgfr&quot;&gt;&lt;strong&gt;🔴 Without fingerprint:&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;F21m&quot; data-lang=&quot;javascript&quot;&gt;// The browser launches with the same fingerprint
// It forms a persistent digital trace
// This makes your automation vulnerable to detection
const puppeteer = require(&amp;#x27;puppeteer&amp;#x27;);

(async () =&amp;gt; {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(&amp;#x27;https://example.com&amp;#x27;);

  console.log(&amp;#x27;Page title:&amp;#x27;, await page.title());
  await browser.close();
})();&lt;/pre&gt;
  &lt;p id=&quot;HVdQ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ZQCn&quot;&gt;&lt;strong&gt;🟢 With fingerprint:&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;wOW4&quot; data-lang=&quot;javascript&quot;&gt;const { plugin } = require(&amp;#x27;puppeteer-with-fingerprints&amp;#x27;);

// 🗝️ Specify the key for the FingerprintSwitcher service
// Leave the string empty — the free plan will be activated automatically
plugin.setServiceKey(&amp;#x27;&amp;#x27;);

(async () =&amp;gt; {
  // 🌀 Fetch a real browser fingerprint from the FingerprintSwitcher
  const fingerprint = await plugin.fetch({ tags: [&amp;#x27;Windows&amp;#x27;, &amp;#x27;Chrome&amp;#x27;] });

  // 🧬 Attach the obtained fingerprint to the next browser launch
  plugin.useFingerprint(fingerprint);

  // 🎭 Launch the browser with the spoofed fingerprint
  const browser = await plugin.launch();

  // Proceed as usual with Puppeteer
  const page = await browser.newPage();
  await page.goto(&amp;#x27;https://bablosoft.com&amp;#x27;);

  // Output the page title as an example of operation
  console.log(&amp;#x27;Page title:&amp;#x27;, await page.title());

  // Close the browser
  await browser.close();
})();&lt;/pre&gt;
  &lt;p id=&quot;BapQ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;HErK&quot;&gt;Why is this convenient?&lt;/p&gt;
  &lt;ul id=&quot;EshD&quot;&gt;
    &lt;li id=&quot;4c8c&quot;&gt;Quick start. Integration takes just 5 minutes&lt;/li&gt;
    &lt;li id=&quot;qp4r&quot;&gt;No need to rewrite logic. Only the browser initialization is changed&lt;/li&gt;
    &lt;li id=&quot;hvdQ&quot;&gt;Compatibility with the free version of FingerprintSwitcher. You can try it without any costs&lt;/li&gt;
    &lt;li id=&quot;F0qr&quot;&gt;Increase your project&amp;#x27;s anti-detection in just a few minutes&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Y9V2&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;jfgY&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;baRu&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;lA18&quot; data-align=&quot;center&quot;&gt;Documentation&lt;/h2&gt;
  &lt;p id=&quot;m1Dw&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;gqkl&quot;&gt;For each plugin, a detailed installation and usage guide is available. Follow the appropriate link in the repository to get started:&lt;/p&gt;
  &lt;p id=&quot;JCyp&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;s4xs&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/CheshireCaat/puppeteer-with-fingerprints&quot; target=&quot;_blank&quot;&gt;Puppeteer → puppeteer-with-fingerprints&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;PUs1&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/CheshireCaat/selenium-with-fingerprints&quot; target=&quot;_blank&quot;&gt;Selenium → selenium-with-fingerprints&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;QoZN&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/CheshireCaat/playwright-with-fingerprints&quot; target=&quot;_blank&quot;&gt;Playwright → playwright-with-fingerprints&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;Vzej&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/CheshireCaat/browser-with-fingerprints&quot; target=&quot;_blank&quot;&gt;Any CDP library → browser-with-fingerprints&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;1GkG&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Qm2s&quot; data-align=&quot;center&quot;&gt;Even if your framework is not listed — &lt;strong&gt;the universal plugin with CDP support&lt;/strong&gt; will still work&lt;/p&gt;
  &lt;p id=&quot;Cguz&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;0mua&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;nA86&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;AutomationPlugin — the final step toward full anonymity&lt;/strong&gt;&lt;br /&gt;Each launch appears as a new device. Enhance the anti-detection of your project and get unique fingerprints through FingerprintSwitcher&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;h35u&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;08iw&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;VSNV&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1kF6GQN.png&quot; width=&quot;66&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;B5lo&quot; data-align=&quot;center&quot;&gt;Pricing plans&lt;/h2&gt;
  &lt;p id=&quot;vBKt&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;VVzg&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/niUU0JR.png&quot; width=&quot;1501.3425990271023&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;wVnb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;0jiH&quot; data-align=&quot;center&quot;&gt;Take your project’s protection to the next level — start now&lt;/p&gt;
  &lt;h3 id=&quot;3lSE&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://fp.bablosoft.com/#pricing&quot; target=&quot;_blank&quot;&gt;Buy a subscription or start using it for free &lt;/a&gt;&lt;/h3&gt;
  &lt;p id=&quot;b56A&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;eKIq&quot;&gt;&lt;strong&gt;What you get with your purchase:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;NDTd&quot;&gt;&lt;strong&gt;🗝️  API Key &lt;/strong&gt;that unlocks the ability to change browser fingerprints through&lt;strong&gt; FingerprintSwitcher&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;nDBq&quot;&gt;🌀 &lt;strong&gt;Access to over 150,000+ real fingerprints&lt;/strong&gt; collected from actual devices and regularly updated&lt;/p&gt;
  &lt;p id=&quot;yCYd&quot;&gt;🧬 &lt;strong&gt;Complete browser fingerprint replacement&lt;/strong&gt;&lt;br /&gt; Change dozens of parameters — graphics card, audio, language, battery, WebRTC, User-Agent, Canvas, Fonts, Geolocation, Timezone, and more&lt;/p&gt;
  &lt;p id=&quot;G3zs&quot;&gt;👁  &lt;strong&gt;Bypass tracking and anti-bots&lt;/strong&gt;&lt;br /&gt; Reduces the likelihood of blockages and helps bypass protections based on fingerprint analysis&lt;/p&gt;
  &lt;p id=&quot;Xg0k&quot;&gt;🧩 &lt;strong&gt;Integration into BAS, Puppeteer, Playwright, and other frameworks&lt;/strong&gt; — set up in just a few clicks&lt;/p&gt;
  &lt;p id=&quot;ydCb&quot;&gt;🔍&lt;strong&gt; FingerprintDetector — tracking analysis tool:&lt;/strong&gt;&lt;br /&gt; Receive a visual report on all the tracking techniques used by the website&lt;/p&gt;
  &lt;p id=&quot;SGv5&quot;&gt;📊 &lt;strong&gt;Detailed statistics with an overall tracking score:&lt;/strong&gt;&lt;br /&gt; The report includes grouping by actions (loading, text input, clicks), by method type, and by threat level&lt;/p&gt;
  &lt;p id=&quot;t4M0&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;v5kf&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;tHrv&quot; data-align=&quot;center&quot;&gt;Start with the free plan — test the product&lt;/h3&gt;
  &lt;p id=&quot;DWFd&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;mzcs&quot;&gt;FingerprintSwitcher is available for free — just get started without a key and see how fingerprint switching works&lt;/p&gt;
  &lt;pre id=&quot;PHqQ&quot; data-lang=&quot;javascript&quot;&gt;const { plugin } = require(&amp;#x27;puppeteer-with-fingerprints&amp;#x27;);

// 🗝️ Укажите ключ от сервиса FingerprintSwitcher
// Или оставьте строку пустой — бесплатный тариф активируется автоматически
plugin.setServiceKey(&amp;#x27;&amp;#x27;);

(async () =&amp;gt; {
  // 🌀 Получаем реальный отпечаток браузера с базы FingerprintSwitcher
  const fingerprint = await plugin.fetch({ tags: [&amp;#x27;Windows&amp;#x27;, &amp;#x27;Chrome&amp;#x27;] });

  // 🧬 Подключаем полученный отпечаток к следующему запуску браузера
  plugin.useFingerprint(fingerprint);

  // 🎭 Запускаем браузер с подменённым отпечатком
  const browser = await plugin.launch();
&lt;/pre&gt;
  &lt;p id=&quot;sR7V&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;2fH5&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;gUP9&quot; data-align=&quot;center&quot;&gt;One key — access to everything&lt;/h2&gt;
  &lt;p id=&quot;ni4A&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;R5MN&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/yFXdMLb.png&quot; width=&quot;1221&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;TqKk&quot;&gt;With your purchase, you receive a &lt;strong&gt;single license key&lt;/strong&gt; that provides immediate access to three powerful products:&lt;/p&gt;
  &lt;ul id=&quot;wSPp&quot;&gt;
    &lt;li id=&quot;aylo&quot;&gt;&lt;strong&gt;FingerprintSwitcher&lt;/strong&gt; — changes the browser fingerprint, ensuring the uniqueness of each session&lt;/li&gt;
    &lt;li id=&quot;bZIz&quot;&gt;&lt;strong&gt;FingerprintDetector&lt;/strong&gt; — analyzes tracking methods on websites and shows how you are identified&lt;/li&gt;
    &lt;li id=&quot;owkQ&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/topic/9135/fingerprintmanager-1-0-0-has-been-released&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;FingerprintManager&lt;/strong&gt;&lt;/a&gt;— a full-fledged anti-detect browser for manual profile management. All your profiles are stored locally on your PC, ensuring security and protection against hacks and data leaks&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;28xz&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;XZuq&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/topic/9135/fingerprintmanager-1-0-0-has-been-released&quot; target=&quot;_blank&quot;&gt;Learn more about FingerprintManager&lt;/a&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;JX4R&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://fp.bablosoft.com/#pricing&quot; target=&quot;_blank&quot;&gt;Buy a subscription or start using it for free&lt;/a&gt;&lt;/h3&gt;
  &lt;p id=&quot;vX2v&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;PjIc&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;YEDv&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;uro1&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;WWG6&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;7vkM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/BablosoftOfficialEN&quot; target=&quot;_blank&quot;&gt;English channel&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;IrT6&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/Bablosoft&quot; target=&quot;_blank&quot;&gt;Russian-speaking channel&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;z10C&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;F9yx&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vPXn&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube-канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;e02H&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;VBFk&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Iw4H&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;snlA&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;lq9Y&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;VyHn&quot; data-align=&quot;center&quot;&gt;&lt;em&gt;Bablosoft Team with ❤️ to community&lt;/em&gt;&lt;/p&gt;

</content></entry><entry><id>bablosoft:AutomationPlugins-ru</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/AutomationPlugins-ru?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>AutomationPlugins — сервис для подмены отпечатков браузера в Puppeteer, Playwright и других фреймворках</title><published>2025-05-08T22:17:13.159Z</published><updated>2025-05-22T14:00:48.631Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/58/3f/583f2718-f2fc-4547-aa32-d4f375d5587d.png"></media:thumbnail><category term="automation-plugins" label="AutomationPlugins"></category><summary type="html">&lt;img src=&quot;https://i.imgur.com/NIhnZA0.png&quot;&gt;Меняйте отпечатки браузера за 5 минут — без переписывания кода, с AutomationPlugins. Поддерживаются Puppeteer, Playwright, Selenium и любые CDP-фреймворки. Более 150 000 реальных отпечатков — обходите антиботы и оставайтесь невидимыми.</summary><content type="html">
  &lt;figure id=&quot;QjJ3&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/NIhnZA0.png&quot; width=&quot;1524.838063439065&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Wq93&quot; data-align=&quot;center&quot;&gt;О продукте&lt;/h2&gt;
  &lt;p id=&quot;dw6B&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;wPqg&quot;&gt;Каждый раз, когда вы посещаете сайт, ваш браузер оставляет &lt;strong&gt;уникальный цифровой след&lt;/strong&gt; — браузерный отпечаток, который включает десятки параметров:&lt;/p&gt;
  &lt;ul id=&quot;bUX0&quot;&gt;
    &lt;li id=&quot;BRYj&quot;&gt; &lt;strong&gt;Графические данные&lt;/strong&gt; (Canvas и WebGL)&lt;/li&gt;
    &lt;li id=&quot;7ylB&quot;&gt;&lt;strong&gt;Системные характеристики&lt;/strong&gt; (User-Agent, язык, платформа)&lt;/li&gt;
    &lt;li id=&quot;PpFD&quot;&gt;&lt;strong&gt;Экранные параметры&lt;/strong&gt; (разрешение, список шрифтов и плагинов)&lt;/li&gt;
    &lt;li id=&quot;YOi0&quot;&gt;&lt;strong&gt;Временная зона, железо и особенности рендеринга текста&lt;/strong&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;W6Zt&quot;&gt;Эти данные формируют &lt;strong&gt;уникальный идентификатор&lt;/strong&gt;, позволяющий сайтам и антибот системам:&lt;/p&gt;
  &lt;ul id=&quot;mj2D&quot;&gt;
    &lt;li id=&quot;sZit&quot;&gt;Распознавать подозрительную активность&lt;/li&gt;
    &lt;li id=&quot;y1gL&quot;&gt;Отслеживать сессии без куки&lt;/li&gt;
    &lt;li id=&quot;gDAp&quot;&gt;Выявлять автоматизированные действия (ботов)&lt;/li&gt;
    &lt;li id=&quot;EUeE&quot;&gt;Блокировать мультиаккаунты&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;zC2f&quot;&gt;Даже при использовании &lt;strong&gt;прокси, куки и подмененного User-Agent&lt;/strong&gt;, &lt;strong&gt;браузерный отпечаток все равно выдает вас. &lt;/strong&gt;Вы становитесь легко идентифицируемым ботом — сайты легко распознают вашу активность&lt;/p&gt;
  &lt;p id=&quot;rblU&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;Z0GB&quot; data-align=&quot;center&quot;&gt;Решение есть!&lt;/h3&gt;
  &lt;p id=&quot;Equ8&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;gnuW&quot;&gt;&lt;strong&gt;AutomationPlugins — &lt;/strong&gt;это простой и универсальный способ подмены отпечатков браузера в популярных фреймворках, таких как Puppeteer, Playwright, Selenium и других, использующих CDP (Chrome DevTools Protocol)&lt;br /&gt;Интеграция с сервисом &lt;strong&gt;FingerprintSwitcher&lt;/strong&gt; обеспечивает доступ к обширной базе из более чем &lt;strong&gt;150 000+ реальных отпечатков&lt;/strong&gt;, что позволяет обходить антибот защиты и эмулировать поведение настоящих пользователей&lt;/p&gt;
  &lt;p id=&quot;BusZ&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;h3 id=&quot;CAjS&quot; data-align=&quot;center&quot;&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;Ij55&quot; data-align=&quot;center&quot;&gt;Что делает AutomationPlugins&lt;/h3&gt;
  &lt;p id=&quot;KUMP&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Dha2&quot;&gt;&lt;strong&gt;AutomationPlugins&lt;/strong&gt; позволяет интегрировать сервис &lt;strong&gt;FingerprintSwitcher&lt;/strong&gt; напрямую в нужные вам фреймворки и библиотеки, такие как Puppeteer, Playwright, Selenium и другие&lt;br /&gt;С его помощью вы можете автоматически получать новые отпечатки браузера и использовать их в своих проектах — для подмены Canvas, WebGL, шрифтов, языка, timezone и десятков других параметров. Это делает поведение вашего бота неотличимым от реального пользователя&lt;/p&gt;
  &lt;p id=&quot;4pIN&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;lQLW&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/JRzh0nq.jpeg&quot; width=&quot;1385.1478494623657&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;XNwf&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Wk0r&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;0Guj&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;5R43&quot; data-align=&quot;center&quot;&gt;Как это работает?&lt;/h2&gt;
  &lt;p id=&quot;qGVG&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;T7Y2&quot;&gt;Если у вас уже есть готовый проект, переписывать код не потребуется. Достаточно заменить всего пару строк, чтобы браузер автоматически запускался с уникальным отпечатком&lt;/p&gt;
  &lt;p id=&quot;sbnX&quot;&gt;Все работает как раньше: вы сохраняете всю логику автоматизации, но при этом получаете больше &lt;strong&gt;анонимности&lt;/strong&gt;, &lt;strong&gt;гибкости&lt;/strong&gt; и защиты от антибот систем&lt;/p&gt;
  &lt;p id=&quot;zqOe&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;PLRC&quot;&gt;Пример: как работает FingerprintSwitcher в Puppeteer&lt;/h3&gt;
  &lt;p id=&quot;EBaN&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;fdBX&quot;&gt;Допустим, у вас уже есть проект на &lt;strong&gt;Puppeteer&lt;/strong&gt;&lt;br /&gt;Без подмены отпечатка браузер всегда оставляет один и тот же цифровой след, что делает вас уязвимым для трекинга и антибот систем&lt;/p&gt;
  &lt;p id=&quot;Z3uH&quot;&gt;Но стоит подключить &lt;strong&gt;FingerprintSwitcher&lt;/strong&gt;, и каждый запуск будет выглядеть как новое уникальное устройство: с другим Canvas, WebGL, языком, timezone и другими параметрами&lt;/p&gt;
  &lt;p id=&quot;22bb&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;vLaG&quot;&gt;Пример: до и после&lt;/h3&gt;
  &lt;p id=&quot;adqK&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;2g7w&quot;&gt;&lt;strong&gt;🔴 Без отпечатка:&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;x0OF&quot; data-lang=&quot;javascript&quot;&gt;// Браузер запускается с одним и тем же отпечатком
// он формирует устойчивый цифровой след  
// это делает вашу автоматизацию уязвимой для обнаружения
const puppeteer = require(&amp;#x27;puppeteer&amp;#x27;);

(async () =&amp;gt; {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(&amp;#x27;https://example.com&amp;#x27;);

  console.log(&amp;#x27;Page title:&amp;#x27;, await page.title());
  await browser.close();
})();&lt;/pre&gt;
  &lt;p id=&quot;TxGx&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;r8hs&quot;&gt;&lt;strong&gt;🟢 С отпечатком:&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;uNZa&quot; data-lang=&quot;javascript&quot;&gt;const { plugin } = require(&amp;#x27;puppeteer-with-fingerprints&amp;#x27;);

// 🗝️ Укажите ключ от сервиса FingerprintSwitcher
// Или оставьте строку пустой — бесплатный тариф активируется автоматически
plugin.setServiceKey(&amp;#x27;&amp;#x27;);

(async () =&amp;gt; {
  // 🌀 Получаем реальный отпечаток браузера с базы FingerprintSwitcher
  const fingerprint = await plugin.fetch({ tags: [&amp;#x27;Windows&amp;#x27;, &amp;#x27;Chrome&amp;#x27;] });

  // 🧬 Подключаем полученный отпечаток к следующему запуску браузера
  plugin.useFingerprint(fingerprint);

  // 🎭 Запускаем браузер с подменённым отпечатком
  const browser = await plugin.launch();

  // Работаем как обычно с Puppeteer
  const page = await browser.newPage();
  await page.goto(&amp;#x27;https://bablosoft.com&amp;#x27;);

  // Выводим заголовок страницы как пример работы
  console.log(&amp;#x27;Page title:&amp;#x27;, await page.title());

  // Закрываем браузер
  await browser.close();
})();&lt;/pre&gt;
  &lt;p id=&quot;mNUO&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;DXM7&quot;&gt;Почему это удобно?&lt;/p&gt;
  &lt;ul id=&quot;hJx6&quot;&gt;
    &lt;li id=&quot;wQVq&quot;&gt;&lt;strong&gt;Быстрый старт.&lt;/strong&gt; Внедрение занимает 5 минут&lt;/li&gt;
    &lt;li id=&quot;1obD&quot;&gt;&lt;strong&gt;Никаких переписок логики.&lt;/strong&gt; Меняется только инициализация браузера&lt;/li&gt;
    &lt;li id=&quot;FyQW&quot;&gt;&lt;strong&gt;Совместимость с бесплатной версией FingerprintSwitcher.&lt;/strong&gt; Можно попробовать без затрат&lt;/li&gt;
    &lt;li id=&quot;H0hv&quot;&gt;Повышение анти-детекта вашего проекта в считанные минуты&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;nBjo&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;sSfp&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;debc&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;pEH2&quot; data-align=&quot;center&quot;&gt;Документация&lt;/h2&gt;
  &lt;p id=&quot;rIqK&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ypdP&quot;&gt;Для каждого плагина доступна подробная инструкция по установке и использованию. Перейдите по нужной ссылке в репозитории, чтобы начать&lt;/p&gt;
  &lt;p id=&quot;xSsQ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;58p7&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/CheshireCaat/puppeteer-with-fingerprints&quot; target=&quot;_blank&quot;&gt;Puppeteer → puppeteer-with-fingerprints&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;4eob&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/CheshireCaat/selenium-with-fingerprints&quot; target=&quot;_blank&quot;&gt;Selenium → selenium-with-fingerprints&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;bQaD&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/CheshireCaat/playwright-with-fingerprints&quot; target=&quot;_blank&quot;&gt;Playwright → playwright-with-fingerprints&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;cN7t&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://github.com/CheshireCaat/browser-with-fingerprints&quot; target=&quot;_blank&quot;&gt;Любая CDP-библиотека → browser-with-fingerprints&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;fNOK&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;0oOT&quot; data-align=&quot;center&quot;&gt;&lt;em&gt;Даже если ваш фреймворк не в списке — &lt;strong&gt;универсальный плагин&lt;/strong&gt; с CDP поддержкой всё равно подойдет&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Qv7T&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;xScG&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;HoAC&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;AutomationPlugin — финальный шаг к полной анонимности.&lt;/strong&gt;&lt;br /&gt; Каждый запуск выглядит как новое устройство. Усильте анти-детект своего проекта и получайте уникальные отпечатки через FingerprintSwitcher&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;C1EQ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;iXVa&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;EvGu&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;L3dj&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1kF6GQN.png&quot; width=&quot;66&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;D7bu&quot; data-align=&quot;center&quot;&gt;Тарифные планы и стоимость&lt;/h2&gt;
  &lt;p id=&quot;PxaP&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;uFs0&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/NYAoS96.png&quot; width=&quot;1286.7060458651843&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;h1HO&quot; data-align=&quot;center&quot;&gt;Поднимите защиту проекта на новый уровень — начните прямо сейчас&lt;/p&gt;
  &lt;h3 id=&quot;xcXj&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://fp.bablosoft.com/#pricing&quot; target=&quot;_blank&quot;&gt;Купить подписку или начать использовать бесплатно &lt;/a&gt;&lt;/h3&gt;
  &lt;p id=&quot;5kES&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;eZc0&quot;&gt;&lt;strong&gt;Что вы получаете при покупке:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;URyY&quot;&gt;&lt;strong&gt;🗝️ API Ключ&lt;/strong&gt;, который открывает возможности смены отпечатков браузера через &lt;strong&gt;FingerprintSwitcher&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;37k1&quot;&gt;🌀 &lt;strong&gt;Доступ к более чем 150 000+ реальных отпечатков&lt;/strong&gt;, собранных с настоящих устройств и регулярно обновляемых&lt;/p&gt;
  &lt;p id=&quot;EWd3&quot;&gt;🧬 &lt;strong&gt;Полная подмена отпечатка браузера:&lt;/strong&gt;&lt;br /&gt; Изменение десятков параметров — видеокарта, аудио, язык, батарея, WebRTC, User-Agent, Canvas, Fonts, Geolocation, Timezone и другие&lt;/p&gt;
  &lt;p id=&quot;Okia&quot;&gt;👁 &lt;strong&gt;Обход слежки и антиботов:&lt;/strong&gt;&lt;br /&gt; Снижает вероятность блокировок, помогает пройти защиты, основанные на анализе отпечатков&lt;/p&gt;
  &lt;p id=&quot;58jV&quot;&gt;🧩 &lt;strong&gt;Интеграция в BAS, Puppeteer, Playwright и другие фреймворки&lt;/strong&gt; — настройка за пару кликов&lt;/p&gt;
  &lt;p id=&quot;U1Wx&quot;&gt;🔍 &lt;strong&gt;FingerprintDetector — инструмент анализа трекинга:&lt;/strong&gt;&lt;br /&gt; Получайте наглядный отчёт обо всех техниках слежения, которые применяет сайт&lt;/p&gt;
  &lt;p id=&quot;Vj6z&quot;&gt;📊 &lt;strong&gt;Подробная статистика с общей оценкой степени отслеживания:&lt;/strong&gt;&lt;br /&gt; Отчёт содержит группировку по действиям (загрузка, ввод текста, клик), по типу метода и по уровню опасности&lt;/p&gt;
  &lt;p id=&quot;tOyY&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;4k4M&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Начните с бесплатного тарифа&lt;/strong&gt; — протестируйте продукт&lt;/h3&gt;
  &lt;p id=&quot;Aez4&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;qJtO&quot;&gt;&lt;strong&gt;FingerprintSwitcher&lt;/strong&gt; доступен бесплатно — просто начните без ключа и проверьте, как работает подмена отпечатков&lt;/p&gt;
  &lt;pre id=&quot;M9S8&quot; data-lang=&quot;javascript&quot;&gt;const { plugin } = require(&amp;#x27;puppeteer-with-fingerprints&amp;#x27;);

// 🗝️ Укажите ключ от сервиса FingerprintSwitcher
// Или оставьте строку пустой — бесплатный тариф активируется автоматически
plugin.setServiceKey(&amp;#x27;&amp;#x27;);

(async () =&amp;gt; {
  // 🌀 Получаем реальный отпечаток браузера с базы FingerprintSwitcher
  const fingerprint = await plugin.fetch({ tags: [&amp;#x27;Windows&amp;#x27;, &amp;#x27;Chrome&amp;#x27;] });

  // 🧬 Подключаем полученный отпечаток к следующему запуску браузера
  plugin.useFingerprint(fingerprint);

  // 🎭 Запускаем браузер с подменённым отпечатком
  const browser = await plugin.launch();
&lt;/pre&gt;
  &lt;p id=&quot;WFYR&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;1Roi&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;sOVY&quot; data-align=&quot;center&quot;&gt;Один ключ — доступ ко всему&lt;/h2&gt;
  &lt;p id=&quot;aalv&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;W1rv&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/yFXdMLb.png&quot; width=&quot;1568&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VerD&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Qid9&quot;&gt;При покупке вы получаете &lt;strong&gt;единый лицензионный ключ&lt;/strong&gt;, который открывает доступ сразу к трем мощным продуктам:&lt;/p&gt;
  &lt;ul id=&quot;wSPp&quot;&gt;
    &lt;li id=&quot;a8Q5&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://fp.bablosoft.com/&quot; target=&quot;_blank&quot;&gt;FingerprintSwitcher&lt;/a&gt;&lt;/strong&gt; — подменяет отпечаток браузера, обеспечивая уникальность каждого запуска&lt;/li&gt;
    &lt;li id=&quot;JMYi&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://fp.bablosoft.com/&quot; target=&quot;_blank&quot;&gt;FingerprintDetector&lt;/a&gt;&lt;/strong&gt; — анализирует методы слежения на сайтах и показывает, как вас идентифицируют&lt;/li&gt;
    &lt;li id=&quot;tnlG&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/topic/9133/%D0%B2%D1%8B%D0%BF%D1%83%D1%89%D0%B5%D0%BD%D0%B0-1-0-0-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F-fingerprintmanager&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;FingerprintManager&lt;/strong&gt;&lt;/a&gt;— это полноценный анти-детект браузер для ручной работы с профилями. Все ваши профили хранятся локально на вашем ПК, что гарантирует безопасность и защищённость от взломов и утечек данных&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;xW45&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;ZmqU&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/topic/9133/%D0%B2%D1%8B%D0%BF%D1%83%D1%89%D0%B5%D0%BD%D0%B0-1-0-0-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F-fingerprintmanager&quot; target=&quot;_blank&quot;&gt;Узнать подробнее о FingerprintManager&lt;/a&gt;&lt;/h3&gt;
  &lt;h3 id=&quot;yvIS&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://fp.bablosoft.com/#pricing&quot; target=&quot;_blank&quot;&gt;Купить подписку или начать использовать бесплатно &lt;/a&gt;&lt;/h3&gt;
  &lt;p id=&quot;8u00&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;QoL7&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;ODX5&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Li4w&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;dkTX&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/Bablosoft&quot; target=&quot;_blank&quot;&gt;Русскоязычный канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;XWk4&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/BablosoftOfficialEN&quot; target=&quot;_blank&quot;&gt;Англоязычный канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;qdMO&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0IDb&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kPaM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube-канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;hDC5&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;peCN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IAvV&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;xV7r&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;UrQU&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;jKbS&quot; data-align=&quot;center&quot;&gt;&lt;em&gt;Bablosoft Team with ❤️ to community&lt;/em&gt;&lt;/p&gt;

</content></entry><entry><id>bablosoft:FingerprintManager-en</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/FingerprintManager-en?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>FingerprintManager — anti-detect browser with enhanced security</title><published>2025-05-07T14:55:56.681Z</published><updated>2025-05-22T14:04:53.318Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/de/60/de6036da-e997-4ec0-af89-fdb86d87c924.png"></media:thumbnail><category term="fingerprint-manager" label="FingerprintManager"></category><summary type="html">&lt;img src=&quot;https://i.imgur.com/UhmV5f7.png&quot;&gt;FingerprintManager — anti-detect browser with advanced automation. Create hundreds of profiles, change fingerprints, set up automatic emulation of real user behavior, and automate everything via BrowserAutomationStudio.</summary><content type="html">
  &lt;figure id=&quot;27Va&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/UhmV5f7.png&quot; width=&quot;1487&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;ISv8&quot; data-align=&quot;center&quot;&gt;About the product&lt;/h2&gt;
  &lt;p id=&quot;CQGm&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;jf5g&quot;&gt;&lt;strong&gt;FingerprintManager&lt;/strong&gt; — is an anti-detect browser for working with multiple profiles, fully integrated into BrowserAutomationStudio for both manual and automated control&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;oeMU&quot;&gt;&lt;a href=&quot;https://bablosoft.com/shop/BrowserAutomationStudio#&quot; target=&quot;_blank&quot;&gt;BrowserAutomationStudio (BAS)&lt;/a&gt; —  is a visual automation builder that allows you to create both simple and complex programs without needing programming skills. It provides a user-friendly interface that makes the development process accessible to everyone&lt;/p&gt;
    &lt;p id=&quot;IqLD&quot;&gt;The logic is built from visual blocks, and the main advantage — is &lt;strong&gt;completely free access&lt;/strong&gt; and the ability to start creating your program right away&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;JNXs&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;4izo&quot;&gt;Advantages:&lt;/p&gt;
  &lt;p id=&quot;GDpC&quot;&gt;&lt;strong&gt;1. Full integration with &lt;a href=&quot;https://bablosoft.com/shop/BrowserAutomationStudio#&quot; target=&quot;_blank&quot;&gt;BrowserAutomationStudio&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Automate any actions within profiles or manage them manually — all in one solution with maximum flexibility and convenience&lt;/p&gt;
  &lt;p id=&quot;IomV&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;SJNO&quot;&gt;&lt;strong&gt;2. Maximum security of your data&lt;/strong&gt;&lt;br /&gt;All profiles are stored locally, only on your PC. No data is transferred to any server — no risk of leaks or server hacks&lt;/p&gt;
  &lt;p id=&quot;zGxo&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;2Er7&quot;&gt;&lt;strong&gt;3. Unlimited number of profiles&lt;/strong&gt;&lt;br /&gt;Create as many profiles as you want — no restrictions&lt;/p&gt;
  &lt;p id=&quot;zEn1&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;RuRi&quot;&gt;&lt;strong&gt;4. Unique digital fingerprints&lt;/strong&gt;&lt;br /&gt;Each profile appears as a separate, real user with a unique browser configuration&lt;/p&gt;
  &lt;p id=&quot;cP6V&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;T8dm&quot;&gt;&lt;strong&gt;5. Realistic fingerprint emulation&lt;/strong&gt;&lt;br /&gt;Genuine fingerprints from real devices are used. The highest level of authenticity&lt;/p&gt;
  &lt;p id=&quot;Hnnj&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;MQLM&quot;&gt;&lt;strong&gt;6. IP change with tunneling&lt;br /&gt;&lt;/strong&gt;Modern tunneling technology ensures stable and secure work with proxy servers&lt;/p&gt;
  &lt;p id=&quot;Ro5v&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;4mRt&quot;&gt;&lt;strong&gt;7. Mass profile creation&lt;br /&gt;&lt;/strong&gt;Create dozens or even hundreds of profiles in just a few clicks&lt;/p&gt;
  &lt;p id=&quot;rSQe&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ohdj&quot;&gt;&lt;strong&gt;8. Human-like behavior&lt;br /&gt;&lt;/strong&gt;Set up activity emulation for all profiles — they will automatically visit websites, interact with content, and generate believable activity indistinguishable from real user behavior&lt;/p&gt;
  &lt;p id=&quot;FyqM&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;30OU&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;eRE1&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;FingerprintManager&lt;/strong&gt; is designed so that you can start working without unnecessary instructions. Everything is intuitive — from the first launch to advanced customization&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;eCqz&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;z1JE&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;5O8Z&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;Oxtc&quot; data-align=&quot;center&quot;&gt;Main Menu&lt;/h2&gt;
  &lt;p id=&quot;KPHM&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;z6T5&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Edit and launch profiles with ease&lt;/strong&gt; — the preview feature shows the last screenshot so you know exactly where you left off before closing the profile&lt;/p&gt;
  &lt;p id=&quot;r3AV&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Y3Ug&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/9y6FWEP.png&quot; width=&quot;1262.627906976744&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;ET8N&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;9eCn&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;xmUF&quot; data-align=&quot;center&quot;&gt;Profile Creation&lt;/h2&gt;
  &lt;p id=&quot;eBQ5&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;xOdf&quot; data-align=&quot;center&quot;&gt;Create an &lt;strong&gt;unlimited number of profiles&lt;/strong&gt; in just a few clicks! The intuitive interface allows you to quickly create a single profile or launch bulk &lt;strong&gt;creation of multiple profiles&lt;/strong&gt; at once&lt;/p&gt;
  &lt;p id=&quot;uPcq&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;tjCe&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/dqt7vd3.png&quot; width=&quot;1214&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;p0q5&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;yUvL&quot; data-align=&quot;center&quot;&gt;Profile Editing&lt;/h2&gt;
  &lt;p id=&quot;BJS8&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;rThd&quot; data-align=&quot;center&quot;&gt;Edit your profile the way you need: configure proxy settings, add necessary extensions, update the digital fingerprint, and change the profile photo — &lt;strong&gt;all in one convenient interface&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;FVxB&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;UYOr&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/U7Pj1zT.png&quot; width=&quot;1213&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;qqh9&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;3IiR&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;99NO&quot; data-align=&quot;center&quot;&gt;Profiles that are indistinguishable from real ones!&lt;/h2&gt;
  &lt;p id=&quot;9rsc&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;NMVi&quot; data-align=&quot;center&quot;&gt;The «Humanlike» feature allows you to build a believable history of website visits, making your profile appear as a real user&lt;/p&gt;
  &lt;p id=&quot;bsiL&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;riSQ&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3LNW2nk.png&quot; width=&quot;1213&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vjg0&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;RYqY&quot;&gt;Set up human-like behavior for dozens of accounts at once. In the morning, it&amp;#x27;s you working — at night, the profiles automatically browse websites, creating a believable activity history&lt;/p&gt;
  &lt;p id=&quot;M8vy&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;rnEm&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;lJwX&quot; data-align=&quot;center&quot;&gt;Mass Profile Automation&lt;/h2&gt;
  &lt;p id=&quot;s8YX&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;NFLI&quot;&gt;Want to automate work with dozens or hundreds of accounts? Although &lt;strong&gt;FingerprintManager &lt;/strong&gt;is primarily designed for manual control, you can easily integrate it with &lt;a href=&quot;https://bablosoft.com/shop/BrowserAutomationStudio#&quot; target=&quot;_blank&quot;&gt;BrowserAutomationStudio&lt;/a&gt; for full automation&lt;/p&gt;
  &lt;p id=&quot;wExd&quot;&gt;Create a script in BAS to &lt;strong&gt;automate routine tasks&lt;/strong&gt; — and conveniently collect and manage the results through FingerprintManager&lt;/p&gt;
  &lt;p id=&quot;b9u7&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;h3zc&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;vXrS&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;dwtO&quot; data-align=&quot;center&quot;&gt;Start using it now&lt;/h2&gt;
  &lt;p id=&quot;PnaH&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;3pad&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;r04O&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9b/24/9b242018-19b6-4811-8eaa-5ba809510def.png&quot; width=&quot;40&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vZwv&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://community.bablosoft.com/topic/9135/fingerprintmanager-1-0-0-has-been-released&quot; target=&quot;_blank&quot;&gt;Download FingerprintManager&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Fuvw&quot; data-align=&quot;center&quot;&gt;An active key from the &lt;a href=&quot;https://fp.bablosoft.com/#home&quot; target=&quot;_blank&quot;&gt;FingerprintSwitcher&lt;/a&gt; product is required to run the program&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;Vcbj&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;WxBC&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;kUPw&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;1Uut&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1kF6GQN.png&quot; width=&quot;66&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;Zihb&quot; data-align=&quot;center&quot;&gt;Pricing plans&lt;/h2&gt;
  &lt;p id=&quot;T9li&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;R0tJ&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/niUU0JR.png&quot; width=&quot;1501.3425990271023&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;SFQR&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;VILO&quot; data-align=&quot;center&quot;&gt;Take your project’s protection to the next level — start now&lt;/p&gt;
  &lt;h3 id=&quot;FBwQ&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://fp.bablosoft.com/#pricing&quot; target=&quot;_blank&quot;&gt;Buy a subscription&lt;/a&gt;&lt;/h3&gt;
  &lt;p id=&quot;53VE&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;lBRw&quot;&gt;&lt;strong&gt;What you get with your purchase:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Ah8O&quot;&gt;&lt;strong&gt;🗝️  API Key &lt;/strong&gt;that unlocks the ability to change browser fingerprints through&lt;strong&gt; FingerprintSwitcher&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;Tvha&quot;&gt;🌀 &lt;strong&gt;Access to over 150,000+ real fingerprints&lt;/strong&gt; collected from actual devices and regularly updated&lt;/p&gt;
  &lt;p id=&quot;YoAI&quot;&gt;🧬 &lt;strong&gt;Complete browser fingerprint replacement&lt;/strong&gt;&lt;br /&gt; Change dozens of parameters — graphics card, audio, language, battery, WebRTC, User-Agent, Canvas, Fonts, Geolocation, Timezone, and more&lt;/p&gt;
  &lt;p id=&quot;WLqx&quot;&gt;👁  &lt;strong&gt;Bypass tracking and anti-bots&lt;/strong&gt;&lt;br /&gt; Reduces the likelihood of blockages and helps bypass protections based on fingerprint analysis&lt;/p&gt;
  &lt;p id=&quot;ujD5&quot;&gt;🧩 &lt;strong&gt;Integration into BAS, Puppeteer, Playwright, and other frameworks&lt;/strong&gt; — set up in just a few clicks&lt;/p&gt;
  &lt;p id=&quot;Jn87&quot;&gt;🔍&lt;strong&gt; FingerprintDetector — tracking analysis tool:&lt;/strong&gt;&lt;br /&gt; Receive a visual report on all the tracking techniques used by the website&lt;/p&gt;
  &lt;p id=&quot;i07q&quot;&gt;📊 &lt;strong&gt;Detailed statistics with an overall tracking score:&lt;/strong&gt;&lt;br /&gt; The report includes grouping by actions (loading, text input, clicks), by method type, and by threat level&lt;/p&gt;
  &lt;p id=&quot;3LJR&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;G7Fu&quot; data-align=&quot;center&quot;&gt;One key — access to everything&lt;/h3&gt;
  &lt;p id=&quot;ZJL4&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;W1rv&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/yFXdMLb.png&quot; width=&quot;1503&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;juVn&quot;&gt;With your purchase, you receive a single license key that grants access to three powerful products:&lt;/p&gt;
  &lt;ul id=&quot;PkQ2&quot;&gt;
    &lt;li id=&quot;x1MU&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://fp.bablosoft.com/#home&quot; target=&quot;_blank&quot;&gt;FingerprintSwitcher&lt;/a&gt;&lt;/strong&gt; — changes the browser fingerprint, ensuring the uniqueness of each session&lt;/li&gt;
    &lt;li id=&quot;ri1q&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://fp.bablosoft.com/#home&quot; target=&quot;_blank&quot;&gt;FingerprintDetector&lt;/a&gt;&lt;/strong&gt; — analyzes tracking methods on websites and shows how you are identified&lt;/li&gt;
    &lt;li id=&quot;wNVl&quot;&gt;&lt;strong&gt;FingerprintManager&lt;/strong&gt; — a full-fledged anti-detect browser for manual profile management. All your profiles are stored locally on your PC, ensuring security and protection from hacks and data leaks&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;aRen&quot;&gt;One key provides access to all products, available in your &lt;a href=&quot;https://bablosoft.com/personal/license/FingerprintSwitcher&quot; target=&quot;_blank&quot;&gt;personal account&lt;/a&gt; after purchase&lt;/p&gt;
  &lt;p id=&quot;0WLD&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;pevi&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Li4w&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;BLT0&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/BablosoftOfficialEN&quot; target=&quot;_blank&quot;&gt;English channel&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;dkTX&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/Bablosoft&quot; target=&quot;_blank&quot;&gt;Russian-speaking channel&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;Rjp4&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0IDb&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kPaM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube-канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;jOR4&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;peCN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IAvV&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;nOmJ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ZLuT&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;jKbS&quot; data-align=&quot;center&quot;&gt;&lt;em&gt;Bablosoft Team with ❤️ to community&lt;/em&gt;&lt;/p&gt;

</content></entry><entry><id>bablosoft:FingerprintManager-ru</id><link rel="alternate" type="text/html" href="https://teletype.in/@bablosoft/FingerprintManager-ru?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=bablosoft"></link><title>FingerprintManager — анти-детект браузер с повышенной безопасностью</title><published>2025-05-07T13:51:52.524Z</published><updated>2025-06-05T10:53:32.537Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img1.teletype.in/files/48/00/48005afc-c288-46df-8845-620ec4af93fc.png"></media:thumbnail><category term="fingerprint-manager" label="FingerprintManager"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/0f/0d/0f0d5dd2-30be-4069-afde-973d0719e06d.png&quot;&gt;FingerprintManager — анти-детект браузер с продвинутой автоматизацией. Создавайте сотни профилей, меняйте отпечатки, настройте автоматическую эмуляцию поведения реальных пользователей и автоматизируйте все через BrowserAutomationStudio.</summary><content type="html">
  &lt;figure id=&quot;g6X8&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/l2YY5av.png&quot; width=&quot;1488&quot; /&gt;
  &lt;/figure&gt;
  &lt;h2 id=&quot;ISv8&quot; data-align=&quot;center&quot;&gt;О продукте&lt;/h2&gt;
  &lt;p id=&quot;3Olb&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;jf5g&quot;&gt;&lt;strong&gt;FingerprintManager&lt;/strong&gt; — это анти-детект браузер для работы с множеством профилей, с полной интеграцией в &lt;a href=&quot;https://bablosoft.com/shop/BrowserAutomationStudio#&quot; target=&quot;_blank&quot;&gt;BrowserAutomationStudio&lt;/a&gt; для ручного и автоматизированного управления&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;oeMU&quot;&gt;&lt;a href=&quot;https://bablosoft.com/shop/BrowserAutomationStudio#&quot; target=&quot;_blank&quot;&gt;BrowserAutomationStudio (BAS)&lt;/a&gt; — это визуальный конструктор для автоматизации, позволяющий создавать как простые, так и сложные программы без необходимости обладать навыками программирования. Он обеспечивает удобный интерфейс, который делает процесс разработки доступным для всех&lt;/p&gt;
    &lt;p id=&quot;IqLD&quot;&gt;Логика собирается из наглядных блоков, а главное преимущество — &lt;strong&gt;полностью бесплатный доступ&lt;/strong&gt; и возможность начать создание своей программы прямо сейчас&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;JNXs&quot;&gt;Преимущества:&lt;/p&gt;
  &lt;p id=&quot;GDpC&quot;&gt;&lt;strong&gt;1. Полная интеграция с &lt;a href=&quot;https://bablosoft.com/shop/BrowserAutomationStudio#&quot; target=&quot;_blank&quot;&gt;BrowserAutomationStudio&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;Автоматизируйте любые действия в профилях или управляйте ими вручную — всё в одном решении с максимальной гибкостью и удобством&lt;/p&gt;
  &lt;p id=&quot;tjOE&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;SJNO&quot;&gt;&lt;strong&gt;2. Максимальная безопасность ваших данных&lt;/strong&gt;&lt;br /&gt;Все профили хранятся локально, только на вашем ПК. Никакой передачи на сервер, никакого риска утечек или взломов серверов&lt;/p&gt;
  &lt;p id=&quot;1WBE&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;2Er7&quot;&gt;&lt;strong&gt;3. Безлимит на профили&lt;/strong&gt;&lt;br /&gt;Создавайте сколько угодно профилей — никаких ограничений&lt;/p&gt;
  &lt;p id=&quot;zjIK&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;RuRi&quot;&gt;&lt;strong&gt;4. Уникальные цифровые отпечатки&lt;/strong&gt;&lt;br /&gt;Каждый профиль выглядит как отдельный, реальный пользователь с неповторимой конфигурацией браузера&lt;/p&gt;
  &lt;p id=&quot;bHZw&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;T8dm&quot;&gt;&lt;strong&gt;5. Реалистичная эмуляция отпечатков&lt;/strong&gt;&lt;br /&gt;Используются настоящие отпечатки с реальных устройств. Высочайший уровень достоверности&lt;/p&gt;
  &lt;p id=&quot;ryGE&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;MQLM&quot;&gt;&lt;strong&gt;6. Смена IP с туннелированием&lt;/strong&gt;&lt;br /&gt;Современная технология туннелирования гарантирует стабильную и безопасную работу с прокси-серверами&lt;/p&gt;
  &lt;p id=&quot;ygH6&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;4mRt&quot;&gt;&lt;strong&gt;7. Массовое создание профилей&lt;/strong&gt;&lt;br /&gt;Создавайте десятки или сотни профилей в пару кликов&lt;/p&gt;
  &lt;p id=&quot;RZyO&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ohdj&quot;&gt;&lt;strong&gt;8. Человекоподобное поведение&lt;/strong&gt;&lt;br /&gt;Настройте эмуляцию активности для всех профилей — они будут автоматически посещать сайты, взаимодействовать с контентом и создавать правдоподобную активность, не отличимую от поведения живого пользователя&lt;/p&gt;
  &lt;p id=&quot;ylBl&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(34,  84%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;eRE1&quot; data-align=&quot;center&quot;&gt;FingerprintManager спроектирован так, чтобы вы могли начать работу без лишних инструкций. Всё интуитивно — от первого запуска до тонкой настройки&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;IVmJ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;n8SC&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;C4rX&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;eCqz&quot; data-align=&quot;center&quot;&gt;Главное меню&lt;/h2&gt;
  &lt;p id=&quot;48TJ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;z6T5&quot; data-align=&quot;center&quot;&gt;&lt;strong&gt;Редактируйте и запускайте профили с удобством&lt;/strong&gt; — функция предпросмотра показывает последний скриншот, чтобы вы точно знали, на чем остановились перед закрытием профиля&lt;/p&gt;
  &lt;p id=&quot;38ZT&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;MjAn&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c7/fc/c7fc6347-699c-4246-9707-f96a12a1a4fd.png&quot; width=&quot;1318&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;hRQZ&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;ckzG&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;xmUF&quot; data-align=&quot;center&quot;&gt;Создание профилей&lt;/h2&gt;
  &lt;p id=&quot;x7t5&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;xOdf&quot; data-align=&quot;center&quot;&gt;Создавайте &lt;strong&gt;неограниченное количество профилей&lt;/strong&gt; всего за несколько кликов! В интуитивно понятном интерфейсе вы можете как быстро создать одиночный профиль, так и запустить массовое создание &lt;strong&gt;нескольких профилей&lt;/strong&gt; одновременно&lt;/p&gt;
  &lt;p id=&quot;SHkO&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;dWxd&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/ZDWADOD.png&quot; width=&quot;1149&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;MzxV&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;aPNS&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;yUvL&quot; data-align=&quot;center&quot;&gt;Редактирование профиля&lt;/h2&gt;
  &lt;p id=&quot;2mlY&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;rThd&quot; data-align=&quot;center&quot;&gt;Редактируйте профиль так, как вам нужно: настройте работу прокси, добавьте необходимые расширения, обновите цифровой отпечаток и смените фото профиля – &lt;strong&gt;все в одном удобном интерфейсе&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;FZuL&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;sVrj&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/08/68/0868cabc-6a70-454b-a932-b5bda25972f3.png&quot; width=&quot;1322&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;g4ho&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;Bn1E&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;99NO&quot; data-align=&quot;center&quot;&gt;Профили, которые не отличишь от живых!&lt;/h2&gt;
  &lt;p id=&quot;Xb77&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;NMVi&quot; data-align=&quot;center&quot;&gt;Функция &lt;strong&gt;«Человекоподобного поведения»&lt;/strong&gt; позволяет нарастить правдоподобную историю посещений сайтов, чтобы ваш профиль выглядел правдоподобным пользователем&lt;/p&gt;
  &lt;p id=&quot;38RQ&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;KtkC&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/2f/3c/2f3cb015-10bb-4c72-9d70-1902369cfeb2.png&quot; width=&quot;1152&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vjg0&quot; data-align=&quot;center&quot;&gt;Настройте человекоподобное поведение сразу на десятки аккаунтов. Утром работаете вы — ночью профили автоматически серфят по сайтам, формируя правдоподобную историю активности&lt;/p&gt;
  &lt;p id=&quot;x6QX&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;uCBt&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;lJwX&quot; data-align=&quot;center&quot;&gt;Массовая автоматизация профилей&lt;/h2&gt;
  &lt;p id=&quot;GvNY&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;bi8D&quot;&gt;Хотите автоматизировать работу с десятками и сотнями аккаунтов? Хотя &lt;strong&gt;FingerprintManager&lt;/strong&gt; изначально предназначен для ручного управления, вы легко можете интегрировать его с &lt;a href=&quot;https://bablosoft.com/shop/BrowserAutomationStudio&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;BrowserAutomationStudio&lt;/strong&gt; &lt;/a&gt;для полной автоматизации&lt;/p&gt;
  &lt;p id=&quot;7kz5&quot;&gt;Создайте в BAS скрипт для автоматизации рутинных задач — а результаты удобно собирайте и управляйте ими через FingerprintManager&lt;/p&gt;
  &lt;p id=&quot;mqo0&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;QDyN&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;4VVY&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;dwtO&quot; data-align=&quot;center&quot;&gt;Начните использовать уже сейчас&lt;/h2&gt;
  &lt;p id=&quot;CqPS&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;r04O&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9b/24/9b242018-19b6-4811-8eaa-5ba809510def.png&quot; width=&quot;40&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;LhV2&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://community.bablosoft.com/topic/9133/%D0%B2%D1%8B%D0%BF%D1%83%D1%89%D0%B5%D0%BD%D0%B0-1-0-0-%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F-fingerprintmanager&quot; target=&quot;_blank&quot;&gt;&lt;strong&gt;Скачать FingerprintManager&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;C0DF&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(24,  24%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;Fuvw&quot; data-align=&quot;center&quot;&gt;Для работы программы необходим активный ключ от продукта &lt;a href=&quot;https://fp.bablosoft.com/&quot; target=&quot;_blank&quot;&gt;FingerprintSwitcher&lt;/a&gt;&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;sOVY&quot; data-align=&quot;center&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;etIC&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;tv1D&quot; data-align=&quot;center&quot;&gt;Один ключ — доступ ко всему&lt;/h3&gt;
  &lt;p id=&quot;g3dc&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;W1rv&quot; class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/yFXdMLb.png&quot; width=&quot;1444&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VerD&quot;&gt;При покупке вы получаете &lt;strong&gt;единый лицензионный ключ&lt;/strong&gt;, который открывает доступ сразу к трем мощным продуктам:&lt;/p&gt;
  &lt;ul id=&quot;wSPp&quot;&gt;
    &lt;li id=&quot;a8Q5&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://fp.bablosoft.com/&quot; target=&quot;_blank&quot;&gt;FingerprintSwitcher&lt;/a&gt;&lt;/strong&gt; — подменяет отпечаток браузера, обеспечивая уникальность каждого запуска&lt;/li&gt;
    &lt;li id=&quot;JMYi&quot;&gt;&lt;strong&gt;&lt;a href=&quot;https://fp.bablosoft.com/&quot; target=&quot;_blank&quot;&gt;FingerprintDetector&lt;/a&gt;&lt;/strong&gt; — анализирует методы слежения на сайтах и показывает, как вас идентифицируют&lt;/li&gt;
    &lt;li id=&quot;tnlG&quot;&gt;&lt;strong&gt;FingerprintManager&lt;/strong&gt;— это полноценный анти-детект браузер для ручной работы с профилями. Все ваши профили хранятся локально на вашем ПК, что гарантирует безопасность и защищённость от взломов и утечек данных&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;rNxJ&quot;&gt;Ко всем продуктам подходит один ключ доступный в &lt;a href=&quot;https://bablosoft.com/personal/license/FingerprintSwitcher&quot; target=&quot;_blank&quot;&gt;личном кабинете&lt;/a&gt; после покупки&lt;/p&gt;
  &lt;p id=&quot;jrsQ&quot;&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p id=&quot;MwXQ&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;Li4w&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/TY3NJtq.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;P3z5&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/Bablosoft&quot; target=&quot;_blank&quot;&gt;Русскоязычный канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;BLT0&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://t.me/BablosoftOfficialEN&quot; target=&quot;_blank&quot;&gt;Англоязычный канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;lJqH&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;0IDb&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/1M3bMsh.png&quot; width=&quot;48&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;kPaM&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;mailto:youtube.com/@browserautomationstudio3109&quot; target=&quot;_blank&quot;&gt;YouTube-канал&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;IOIR&quot;&gt;&lt;/p&gt;
  &lt;figure id=&quot;peCN&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://i.imgur.com/3EztEhm.png&quot; width=&quot;42&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;IAvV&quot; data-align=&quot;center&quot;&gt;&lt;a href=&quot;https://x.com/BablosoftGroup&quot; target=&quot;_blank&quot;&gt;Twitter&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;H3yy&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;FfVv&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;jKbS&quot; data-align=&quot;center&quot;&gt;&lt;em&gt;Bablosoft Team with ❤️ to community&lt;/em&gt;&lt;/p&gt;

</content></entry></feed>