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。但是,你提到你无法在腾讯视频创作平台上自动登录。这可能是由于以下原因:
Cookie有关联的其他属性: cookie不仅包含name和value,还有其他一些可能影响其功能的属性,如domain、path、expiry、secure和httpOnly。在你保存和加载cookie时,应确保所有这些属性都被正确地处理。你的现有代码只处理了name和value,可能需要增加其他属性的处理。
Cookie有特殊的验证或加密机制: 有些网站为了安全,可能会在服务端对cookie进行某种特殊的验证或者加密,简单的复制和粘贴可能不会奏效。这种情况下,你可能需要找到这种验证或加密机制,并在你的代码中进行相应的处理。
Cookie有时效性: 有些cookie有时效性,过了一定时间就会失效。你需要确定你保存的cookie在加载时还是有效的。
腾讯视频创作平台可能有反自动化策略: 有些网站可能会使用一些技术来防止自动化操作。这可能会影响到你的自动登录功能。在这种情况下,你可能需要使用更高级的技术来进行自动化操作。
我建议你检查这些可能的原因,看看是否可以找到问题所在。如果你确定这些都不是问题,那么你可能需要进一步调查你的代码或网站的行为,看看是否有其他可能的原因。
以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:
从你提供的代码看,读取了腾讯视频创作平台的cookies后无法实现自动登录,这很可能是由于:
为了解决这个问题,你可以尝试以下方法: