使用cookies无法免密登录腾讯视频创作平台

java selenium无法通过cookies免密登录腾讯视频创作平台
这是我的代码,首先通过扫码获取cookies并保存:


public class TencentVideoScanQR {
    public WebDriver webDriver;

    @BeforeClass
    public void SetupEnv(){
        Path p1 = Paths.get("src", "drivers", "chromedriver.exe");
        System.setProperty("webdriver.chrome.driver", p1.toAbsolutePath().toString());
        // 创建浏览器实例
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        webDriver = new ChromeDriver(options);
    }


    @Test
    public void ScanQR() throws InterruptedException {
        webDriver.manage().window().maximize();
        webDriver.get("https://mp.v.qq.com");
        Thread.sleep(60000);
        Set<Cookie> cookiedata = webDriver.manage().getCookies();
        System.out.println(cookiedata);
        try {
            File Coo = new File("C:\\Users\\30595\\Desktop\\TencentVideoCookies.txt"); // 相对路径,如果没有则要建立一个新的output.txt文件
            if (!Coo.exists()) {
                Coo.createNewFile(); // 创建新文件,有同名的文件的话直接覆盖
            }
            FileWriter fileWriter = new FileWriter(Coo);
            BufferedWriter bufferedWriter = new BufferedWriter(fileWriter);
            for (Cookie cookie : cookiedata) {
                bufferedWriter.write((
                        cookie.getName() + ";" +
                                cookie.getValue()));
                bufferedWriter.newLine();
            }
            //bufferedWriter.flush(); // 把缓存区内容压入文件
            bufferedWriter.close();
            fileWriter.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @AfterClass
    public void tearDownEnv() throws InterruptedException {
        webDriver.quit();
    }

}

再通过读取cookies进行免密登录,但遇到了问题无法自动登录,但是同样的代码可以登录小红书抖音以及微信公众号,很奇怪:

public class TencentVideoLogin {
    public WebDriver webDriver;

    @BeforeClass
    public void SetupEnv(){
        Path p1 = Paths.get("src", "drivers", "chromedriver.exe");
        System.setProperty("webdriver.chrome.driver", p1.toAbsolutePath().toString());
        // 创建浏览器实例

        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        webDriver = new ChromeDriver(options);
    }

    @Test
    public void LoginTencentVideo() throws InterruptedException {
        webDriver.get("https://mp.v.qq.com");
        Set<Cookie> cookiedata1 = webDriver.manage().getCookies();
        //Thread.sleep(10000);
        System.out.println(cookiedata1);
        BufferedReader bufferedReader;
        try {
            File cookieFile = new File("C:\\Users\\30595\\Desktop\\TencentVideoCookies.txt");
            FileReader fileReader = new FileReader(cookieFile);
            bufferedReader = new BufferedReader(fileReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                StringTokenizer stringTokenizer = new StringTokenizer(line, ";");
                while (stringTokenizer.hasMoreTokens()) {
                    String name = stringTokenizer.nextToken();
                    String value = stringTokenizer.nextToken();
                    Cookie cookie = new Cookie(name, value);
                    webDriver.manage().addCookie(cookie);
                }
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        webDriver.navigate().refresh();
        Set<Cookie> cookiedata = webDriver.manage().getCookies();
        System.out.println(cookiedata);


    }

    @AfterClass
    public void tearDownEnv() throws InterruptedException {
        Thread.sleep(30000);
        webDriver.quit();
    }
}

你说你同样的代码可以登陆小红书,不能腾讯创作,肯定是两个平台处理逻辑还有cookie所需要的字段不一样,这有什么好奇怪的

三、Cookie登录方法及问题解决技巧[VG发布]

可以借鉴下
https://www.bilibili.com/video/av562133631/?vd_source=41ce89b72d6490d28844437ca70b639a

来自NewBing和LP的编写:
你的代码看起来已经正确的保存和加载了cookie。但是,你提到你无法在腾讯视频创作平台上自动登录。这可能是由于以下原因:

  1. Cookie有关联的其他属性: cookie不仅包含name和value,还有其他一些可能影响其功能的属性,如domain、path、expiry、secure和httpOnly。在你保存和加载cookie时,应确保所有这些属性都被正确地处理。你的现有代码只处理了name和value,可能需要增加其他属性的处理。

  2. Cookie有特殊的验证或加密机制: 有些网站为了安全,可能会在服务端对cookie进行某种特殊的验证或者加密,简单的复制和粘贴可能不会奏效。这种情况下,你可能需要找到这种验证或加密机制,并在你的代码中进行相应的处理。

  3. Cookie有时效性: 有些cookie有时效性,过了一定时间就会失效。你需要确定你保存的cookie在加载时还是有效的。

  4. 腾讯视频创作平台可能有反自动化策略: 有些网站可能会使用一些技术来防止自动化操作。这可能会影响到你的自动登录功能。在这种情况下,你可能需要使用更高级的技术来进行自动化操作。

我建议你检查这些可能的原因,看看是否可以找到问题所在。如果你确定这些都不是问题,那么你可能需要进一步调查你的代码或网站的行为,看看是否有其他可能的原因。

以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:

从你提供的代码看,读取了腾讯视频创作平台的cookies后无法实现自动登录,这很可能是由于:

  1. Cookies失效。Cookies有一定的有效期,如果从扫码获取到登录为止的时间过长,Cookies有可能已失效,无法实现免密登录。
  2. 关键Cookies丢失。并非网站所有的Cookies都与登录验证有关,如果扫码获取时未能获取到关键的登录验证Cookies,也会导致免密登录失败。
  3. 登录验证方式变更。有些网站会定期更换登录验证方式,如果更换期间重新获取Cookies,新Cookies可能无法免密登录。
  4. 其他未知原因。也有可能是其他一些难以排查的技术原因导致的。

为了解决这个问题,你可以尝试以下方法:

  1. 缩短扫码获取Cookies和读取Cookies登录的时间间隔,尽量确保Cookies在有效期内。
  2. 多次扫码获取Cookies,整合更多关键Cookies后再登录。有些网站关键Cookies信息量较大,一次扫码未必能获取全。
  3. 尝试更新ChromeDriver版本,有时selenium版本和ChromeDriver版本不匹配也会引起自动登录失败的问题。
  4. 使用浏览器开发者工具分析网络请求,找出登录时发送的关键请求与参数,自行构造这些请求进行登录。这种方法可以绕过Cookies验证登录。