VMLogin指纹浏览器

定制更多浏览器/子账号

定制更多的VMLoign浏览器数量和子账号的增量套餐

%E5%AE%9A%E5%88%B6%E5%A5%97%E9%A4%90%E8%B4%B9%E7%94%A8 1

VMLogin免费注册试用: 联系客服激活领取3天全功能版本试用。

VMLogin账号注册:点击注册

VMLogin浏览器已购买的套餐是否可以降级或暂停?

  1. 套餐未到期时:
    在套餐有效期内,您只能进行套餐升级,不能降级或暂停套餐。
  2. 降级套餐:
    如果需要降级套餐,必须等到当前套餐到期后才能进行。若在套餐到期后暂时不使用,可以选择暂停续费,直到需要使用时再进行续费。续费后的有效期将从付款当天起,延长一个月。

问:VMLogin指纹浏览器自动化测试工具 能做什么?

答:通俗点说就是可以结合VMLogin 浏览器进行批量遛号、养号、留评和加购等操作!

能够实现 VMLogin 用户配置浏览器的一些自动化控制操作,如:打开指定网页、寻找网页中指定的位置进行输入文字/点击等操作,并且可以执行用户自定义的JS脚本等功能。


注意:要使用完整的功能,必须要VMLogin软件版本和AutoBrowserTool软件版本是最新版。

AutoBrowserTool工具下载地址(依托于VMLogin浏览器配套使用):点击下载

VMLogin防关联指纹浏览器下载地址:点击下载


我们来看看测试工具的主界面:点击 工具界面中的 Demo 示例 链接会生成一个简单的示例动作列表。

image 8

一、VMLogin 自动化测试设置里的 IP 和 端口值 ,对应的是VMLogin 客户端上设置对应值。

在客户端【我的帐户】——浏览器自动化设置中——打开【启用浏览器自动化设置】——并点击【保存设置】

QQ%E6%88%AA%E5%9B%BE20210715155038

二、VMLogin API token 是用户的API令牌

这个需要用户登陆到Web后台,在帐号管理->我的帐户,查看token

image 14

下面讲解一下各种动作定义:

  • 打开网址:内容填写网址,例:https://www.vmlogin.cc
  • 设置窗口大小:内容格式 800,600
  • 隐式等待:内容时间为毫秒 1000 = 1秒
  • 强制等待:内容时间为毫秒 1000 = 1秒
  • FindElementByID:可以填写html控件的id值
image 6
  • FindElementByXPath:此项是解决有些html控件没有id值的问题,例如://input[@name=”password” and @type=”password”]
image 7
  • SendKey:发送文字,支持中英文
  • 点击:如果前面有使用FindElementByID/FindElementByXPath找到过控件,那这里内容为空就可以直接点击上次找到的控件,也可以写html控件id值
  • 截图:保存当前网页显示的内容为 bmp 文件,内容可以是保存的 bmp 文件全路径,内容为空则会保存在安装目录下的一个文件夹中
  • SwitchToFrame:如果网页中有多个Frame,可以用这个命令来切换要使用哪个 Frame.
  • ExecuteScript:内容可以填写JaveScript 脚本代码,这个执行不会等会脚本执行就会返回。
  • ExecuteScriptByASync:内容可以填写JaveScript 脚本代码,这个执行是阻塞等待脚本执行完成。
  • PAGE_DOWN:网页下拉。
  • End:进程结束的测试。
  • Refresh:刷新页面。
  • FindElementByLinkText:通过文本链接去查找元素点击。
  • getAttributeToOpen:获取指定名称所对应的属性值,获取属性去打开。
  • ExitBrowser:自动化结束后自动关闭浏览器。

VMLogin浏览器自动化工具案例脚本(之前视频中的案例):

[{"content":"https:\/\/www.amazon.com\/","type":0},{"content":"5000","type":3},{"content":"twotabsearchtextbox","type":4},{"content":"Thermos cup","type":6},{"content":"1000","type":3},{"content":"nav-search-submit-text","type":4},{"content":"","type":7},{"content":"2000","type":3},{"content":"window.scrollTo(0,500)","type":10},{"content":"500","type":3},{"content":"window.scrollTo(500,1000)","type":10},{"content":"500","type":3},{"content":"window.scrollTo(1000,500)","type":10},{"content":"500","type":3},{"content":"window.scrollTo(500,0)","type":10},{"content":"500","type":3},{"content":"Simple Modern Kona Insulated Travel Mug Tumbler with Flip Lid Stainless Steel Coffee Cup Thermos, 16oz, Pattern: Carrara Marble","type":15},{"content":"","type":7},{"content":"color_name_3","type":4},{"content":"","type":7},{"content":"size_name_0","type":4},{"content":"","type":7},{"content":"window.scrollTo(0,500)","type":10},{"content":"500","type":3},{"content":"window.scrollTo(500,1000)","type":10},{"content":"500","type":3},{"content":"window.scrollTo(1000,500)","type":10},{"content":"500","type":3},{"content":"window.scrollTo(500,0)","type":10},{"content":"500","type":3},{"content":"exports_desktop_qualifiedBuybox_atc_feature_div","type":4},{"content":"","type":7},{"content":"10000","type":3},{"content":"","type":17}]


如果需用更多的更灵活的定制,请用代理集成我们指纹浏览器自动化APILocal REST API 接口文档说明

这里介绍启个抛砖引玉,可以根据自己的行业做出任何的工具功能。

浏览器自动化允许您在VMLogin浏览器配置文件中自动执行任务。从创建简单的自动化脚本到复杂的Web爬虫,可以搜索、收集Web数据并与之交互。


VMLogin浏览器自动化基于Selenium WebDriver,同时也支持Puppeteer等自动化框架:通常情况下,如果您运行Selenium代码,首先将连接到Chrome驱动,然后设置您所需要的功能。而将VMLogin与Selenium代码结合使用时,您无需这样操作。您将使用Web Driver程序,通过本地端口连接到VMLogin应用或某浏览器配置文件,设置所需功能,在预定义的浏览器配置文件中执行Selenium命令。

当然你也可以脱离 Selenium WebDriver 和 Puppeteer 自动化框架,可以直接调用我们的API来执行自动化操作。

支持的语言:

Selenium框架提供了多种可搭配使用的语言,因此VMLogin浏览器自动化也可以在多种编码语言上运行。但是目前,我们仅为Java和Python供技术支持。

VMLogin API token 是用户的API令牌:

这个需要用户登陆到Web后台,在帐号管理->我的帐户,查看token

此图片的alt属性为空;文件名为image-14.png

定义VMLogin端口:

您需要提前定义软件端口以使用自动化。以下是定义端口的方法:

1111111

在软件《我的帐户》中打开启用浏览器自动化设置,并在监听端口中设置能使用端口,这里默认是35000,另外你也可以设置一个访问密码。

随后,您就可以通过定义的端口连接到VMLogin防关联浏览器了。


  • VMLogin 本地 API 接口进行常规自动化操作:点击查看
  • VMLogin自动化的网络优化,提升Window长时间自动化稳定性的方法点击查看
  • VMLogin自动化测试工具点击下载
  • API多线程运行优化工具点击下载     (下载后放到安装根目录下即可。功能是:API操作会在独立进程里处理,缓解程序崩的情况)


接口还可以传入代理服务器信息,如果传入代理信息会覆盖配置文件里的代理信息,这种覆盖是临时性的,不会真的修改配置文件,只对自动化接口有效:

http://127.0.0.1:35000/api/v1/profile/start?automation=true&profileId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&proxytype=socks5&proxyserver=ip&proxyport=1080&proxyusername=&proxypassword=

注意:接口有线上接口地址本地客户端接口地址之分,两个基地址不要混用:

20230620114152
20230620114202
代理类型可能是这三种:
proxytype=socks5
proxytype=socks4
proxytype=http
proxytype=https

代理用户名和密码可以不传为空。

Python 案例一: 

(刚安装 python ,先用 cmd 进 Python\Scripts 目录,运行 pip install selenium  和 pip install requests)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import requests

mla_profile_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
mla_url = 'http://127.0.0.1:35000/api/v1/profile/start?skiplock=true&profileId='+mla_profile_id

resp = requests.get(mla_url)
json = resp.json()

#判断json status 返回状态 如果是ERROR 终止进程并提示错误
errorcode='ERROR'

statuscode=json['status'] #json 返回状态

if errorcode==statuscode:
    print(json['value']) #打印错误信息
    quit() #终止程序
    
print(json['value'])

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", json['value'][7:])
chrome_driver = r"chromedriver.exe"
#http://chromedriver.storage.googleapis.com/92.0.4515.107/chromedriver_win32.zip
#下载 chromedriver 文件放到python目录
driver = webdriver.Chrome(chrome_driver, options=chrome_options)

driver.get('https://www.bing.com/')
executor_url = driver.command_executor._url
session_id = driver.session_id
print(executor_url)
print(session_id)
print('ok it is done')

driver.quit()

Python 案例二: 

(selenium 4 版本要使用以下的代码,上面的代码 在 selenium 4 中会报错)

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import requests
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager


mla_profile_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
mla_url = 'http://127.0.0.1:35000/api/v1/profile/start?skiplock=true&profileId='+mla_profile_id

resp = requests.get(mla_url)
json = resp.json()

#判断json status 返回状态 如果是ERROR 终止进程并提示错误
errorcode='ERROR'

statuscode=json['status'] #json 返回状态

if errorcode==statuscode:
    print(json['value']) #打印错误信息
    quit() #终止程序
      
print(json['value'])

chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", json['value'][7:])

service = ChromeService(executable_path=json['chromedriver'])

driver = webdriver.Chrome( service=service ,options=chrome_options)

driver.get(' 
executor_url = driver.command_executor._url
session_id = driver.session_id
print(executor_url)
print(session_id)
print('ok it is done')

#driver.quit()

chromedriver 文件在每个内核安装目录中都有,使用 API 启努浏览器接口 /api/v1/profile/start 也会返回 chromedriver 文件全路径位置。

selenium 防检测可以在浏览器配置-》其它配置-》自定义启动浏览器参数 里设置 --disable-blink-features=AutomationControlled   会起到一定做用。

注意一下使用VMLogin指纹浏览器内核版本要和chromedriver 版本不对应,会造成自动化失败。

chromedriver.exe在软件安装目录下的chrome文件夹中的对应内核目录里有附带。

如果不能关闭浏览器,可以使用  http://127.0.0.1:35000/api/v1/profile/stop?profileId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  接口来关闭指定配置的浏览器进程。

如果你运行代码只能打开浏览器,并没有打开网站,那可能要把chromedriver.exe复制到你的 python 安装目录里了,还有一种可能是你选了移动仿真模式。

JAVA 案例:

package com.example;

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.util.HashMap;
import java.util.Map;

public class VMLoginDemo {
    private static final String BASE_URL = "http://127.0.0.1:35000/api/v1";
    private static final ObjectMapper objectMapper = new ObjectMapper();

    public static void main(String[] args) {
        try {
            // 启动浏览器配置文件
            String profileId = "your-profile-id"; // 替换为您的实际配置文件ID
            Map<String, String> response = startBrowser(profileId);
            
            if (response != null && "OK".equals(response.get("status"))) {
                // 连接已启动的浏览器
                String debuggerAddress = response.get("value").replace("http://", "");
                connectToBrowser(debuggerAddress, response.get("chromedriver"));
            }
        } catch (Exception e) {
            System.err.println("发生错误: " + e.getMessage());
            e.printStackTrace();
        }
    }

    private static Map<String, String> startBrowser(String profileId) throws Exception {
        String url = BASE_URL + "/profile/start";
        Map<String, Object> params = new HashMap<>();
        params.put("profileId", profileId);
        params.put("skiplock", false);
        params.put("block", true);

        // 构建请求URL
        StringBuilder urlBuilder = new StringBuilder(url);
        urlBuilder.append("?");
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            urlBuilder.append(entry.getKey())
                    .append("=")
                    .append(entry.getValue())
                    .append("&");
        }
        String finalUrl = urlBuilder.toString().replaceAll("&$", "");

        try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
            HttpGet request = new HttpGet(finalUrl);
            
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                HttpEntity entity = response.getEntity();
                if (entity != null) {
                    String result = EntityUtils.toString(entity);
                    System.out.println("API响应: " + result);
                    return objectMapper.readValue(result, Map.class);
                }
            }
        }
        return null;
    }

    private static void connectToBrowser(String debuggerAddress, String chromeDriverPath) {
        // 设置ChromeDriver路径
        System.setProperty("webdriver.chrome.driver", chromeDriverPath);

        // 配置Chrome选项
        ChromeOptions options = new ChromeOptions();
        options.setExperimentalOption("debuggerAddress", debuggerAddress);

        // 创建WebDriver实例
        WebDriver driver = new ChromeDriver(options);

        try {
            // 打开VMLogin网站
            driver.get("https://www.vmlogin.cc/");
            System.out.println("成功打开VMLogin网站!");
            
            // 等待一段时间,以便查看结果
            Thread.sleep(5000);
        } catch (Exception e) {
            System.err.println("操作浏览器时发生错误: " + e.getMessage());
        } finally {
            // 关闭浏览器
            driver.quit();
        }
    }
} 

Google身份验证器(二步验证) 帮助用户为账户增加额外的安全保护。开启二步验证后,即使密码被盗,您的账号也能得到有效保护。

二步验证设置

开启二步验证后,登录您的VMLogin账号时,将需要完成以下两步验证:

  1. 输入您的 密码
  2. 输入从 Google身份验证器(手机应用)生成的验证码。

二步验证操作流程

  1. 下载并安装Google身份验证器
    在您的手机上下载 Google身份验证器 应用。
  2. 绑定VMLogin账号
    打开VMLogin网页端后台,进入 我的账户,选择 开启Google身份验证器(二步验证),并扫描二维码。
  3. 输入密码和验证码
    输入您的VMLogin密码,并在Google身份验证器中查看验证码,输入验证码完成绑定。
  4. 成功绑定
    绑定成功后,您每次登录时将需要输入Google身份验证器提供的验证码。

注意事项:

  1. 账号安全建议
    为了保护您的VMLogin账号,建议尽早启用二步验证,绑定后可以随时关闭。如果密码被盗,启用二步验证可以防止其他人绑定您的账号。
  2. 二维码备份
    绑定时,请妥善保存您的二维码,避免泄露给他人。
  3. 不要删除Google身份验证器账户
    绑定后,请确保不要删除Google身份验证器的账户,否则可能会导致无法接收验证码,进而无法登录VMLogin。
  4. 换绑功能
    如果更换手机,您可以通过 “换绑” 按钮将账号绑定到新的设备,换绑时需要提供原手机生成的验证码。
  5. 导出账户到其他手机
    可以将Google身份验证器账号导出到其他手机,通过新设备查看验证码。导出时,点击 “...”“导出账号” → 扫描新手机上的二维码进行完成。

导出Google身份验证器到其他手机

  1. 点击 “...” 按钮,然后选择 “导出账号”,并确认操作。
  2. 使用新手机扫描二维码完成导出。

注意:

  • iPhone设备:在导出时,您可以选择是否“移除或保留”所有已导出的账号。
  • Android设备:导出时,默认保留原手机中的账号,若需要移除,需手动删除。

如遇绑定问题,请随时联系VMLogin客服进行处理。


通过启用Google身份验证器的二步验证,您将为VMLogin账号增加额外的安全层级,确保账号安全,防止未经授权的访问。

VMLogin指纹浏览器是一款通过模拟不同设备的软硬件指纹信息,实现一台电脑同时多开浏览器分身,每个防关联浏览器独立IP,适用于跨境电商亚马逊、TikTok、eBay,社媒营销FB、Twitter、Google等全球网站平台。  本产品版权归 VMLogin 所有。更多阅读请查看:官方博客博客资讯跨境新闻