百度 cookie 获取

抓百度指数之类数据的时候需要登陆获取cookie,本文章介绍两种基于无头浏览器的方式模拟登录百度,获取cookie的方式。


casperjs代码

var casper = require('casper').create();
casper.userAgent('Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36 SE 2.X MetaSr 1.0');

casper.start('https://passport.baidu.com/v2/?login', function() {
	this.fill('form[id="TANGRAM__PSP_3__form"]', {
		'userName' : '填入账号',
		'password' : '填入密码'
	}, false); // false不立即提交表单,这边设置成true的话,会弹出验证码,必须false
});

casper.then(function() {
	// 点击事件
	this.click('input[id="TANGRAM__PSP_3__submit"]');
	this.echo('login...');
});

casper.then(function() {
	this.wait(3000, function() {
		this.capture("baidu.png");
	});
});
casper.run();
截图可以看到登陆后的首页。

另外一个无头浏览器htmlunit写法

maven依赖,就一个。
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.44.0</version>
</dependency>

package com.hyh.casperjs.demo;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.Set;

import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.htmlunit.HtmlUnitDriver;

import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebRequest;

public class BaiduCookie {

	/**
	 * 获取百度cookie
	 */
	public static String getSinaCookie(String username, String password)
			throws Exception {
		StringBuilder sb = new StringBuilder();
		HtmlUnitDriver driver = new HtmlUnitDriver();
		driver.setJavascriptEnabled(true);
		driver.get("https://passport.baidu.com/v2/?login");

		WebElement userName = driver
				.findElementByCssSelector("input[id=TANGRAM__PSP_3__userName]");
		userName.sendKeys(username);
		WebElement pass = driver
				.findElementByCssSelector("input[id=TANGRAM__PSP_3__password]");
		pass.sendKeys(password);
		WebElement submit = driver
				.findElementByCssSelector("input[id=TANGRAM__PSP_3__submit]");
		submit.click();

		Set<Cookie> cookieSet = driver.manage().getCookies();
		driver.close();
		for (Cookie cookie : cookieSet) {
			sb.append(cookie.getName() + "=" + cookie.getValue() + ";");
		}
		String cookie = sb.toString();
		System.out.println(cookie);
		return cookie;
	}

	/**
	 * 看看能不能访问登录之后跳转的主页
	 * 
	 * 这边只是做个测试代码,懒得使用HttpClient,HttpURLConnection去抓了,为什么不使用上面那个HtmlUnitDriver类,
	 * 因为我随便百度到WebClient设置cookie,所以懒得再去百度下HtmlUnitDriver如何设置cookie。
	 * 
	 * 大家可以根据自己需要去选择相应的jar包来抓取网页,只要设置好cookie之类的头参数就行了。
	 */
	public static void test(String cookie) {
		URL link = null;
		try {
			link = new URL("https://passport.baidu.com/center?_t=1439976374");
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		WebClient wc = new WebClient();

		WebRequest request = new WebRequest(link);
		// 重要的步骤
		request.setAdditionalHeader("Cookie", cookie);
		request.setCharset("UTF-8");

		// request.setProxyHost("120.120.120.x");
		// request.setProxyPort(8080);
		// 设置请求报文头里的refer字段
		// request.setAdditionalHeader("Referer", refer);

		request.setAdditionalHeader("User-Agent",
				"Mozilla/5.0 (Windows NT 5.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2");
		// wc.addRequestHeader和request.setAdditionalHeader功能应该是一样的。选择一个即可。
		// 其他报文头字段可以根据需要添加

		// 开启cookie管理
		wc.getCookieManager().setCookiesEnabled(true);
		// 开启js解析。对于变态网页,这个是必须的
		wc.getOptions().setJavaScriptEnabled(true);
		// 开启css解析。对于变态网页,这个是必须的
		wc.getOptions().setCssEnabled(true);
		wc.getOptions().setThrowExceptionOnFailingStatusCode(false);
		wc.getOptions().setThrowExceptionOnScriptError(false);
		wc.getOptions().setTimeout(10000);
		// 打印html内容
		try {
			System.out.println(wc.getPage(request).getWebResponse()
					.getContentAsString());
		} catch (FailingHttpStatusCodeException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) throws Exception {
		// 这边填入百度的账号和密码
		String cookie = getSinaCookie("username", "password");
		test(cookie);
	}
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
百度的cookie是一种用于识别用户身份和存储用户信息的小型文本文件。通过手动获取百度的cookie,你可以实现一键登录到百度站长平台或使用其他百度服务。获取百度的cookie可以通过以下步骤进行: 1. 准备阶段:手动登录百度账号,获取cookie值。 2. 在代码阶段,使用WebDriver打开百度网页,例如driver.get("https://www.baidu.com/")。 3. 将手动获取到的cookie值添加到代码中,例如cookie_baiduid和cooike_bduss。 4. 使用driver.add_cookie()方法将cookie添加到浏览器中。 5. 刷新页面,例如使用driver.refresh()。 6. 最后,关闭浏览器,例如使用driver.quit()。 通过以上步骤,你可以使用手动获取的百度cookie进行登录操作。请注意,获取cookie需要一定的技术知识和操作经验,建议在合法合规的前提下进行操作。 #### 引用[.reference_title] - *1* [百度cookie登录获取程序SEO程序](https://blog.csdn.net/Abbbbb11/article/details/115384965)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [通过cookie跳过验证码登录](https://blog.csdn.net/weixin_45422695/article/details/123550175)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值