前情回顧
- 卷一 驗證碼
- 卷二 MmEwMD參數(shù)
- http://www.reibang.com/p/d8ce2d729683
-
https://passport.zhaopin.com/chk/verify?callback=jsonpCallback
不傳入MmEwMD
參數(shù)问窃,一樣可以驗證通過,卷二研究的好辛苦 >_<
自動登陸
改版后cookie上做了點手腳灶平,卷一中的方法會登陸失敗
使用requests訪問login頁面
import requests
session = requests.session()
session.get("https://passport.zhaopin.com/org/login")
print session.cookies
<RequestsCookieJar[
<Cookie FSSBBIl1UgzbN7N443S=plyp65uG******IRstysefy5_lBMQ*****N.mJ2UdL7*****CUPkykGsTl1D_0_l for passport.zhaopin.com/>,
<Cookie FSSBBIl1UgzbN7N443T=1zb3I4IB5*****t50NQpQFjRPqns7O*****aw_.KGUTess*****Q_WdrJsB5Ia for passport.zhaopin.com/>
]>
使用webdriver訪問login頁面
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://passport.zhaopin.com/org/login")
print driver.get_cookies()
[
{
u'domain':u'passport.zhaopin.com',
u'secure':False,
u'value':u'14RuoIMWv_Ekd*****zr..5EYPpMWwe9J*****P.IebLEO7rIH7*****D4ypbCEbU9dM*****Z_PH.v1T6FOKlPA95.iyVY7pOqn0zSTtr16BvmyTPL..fd7z0q8KOfQGEjNtT*****MUibORXa9HX0yVYmsH36dqSn*****X1NGgEosf6UWy5Jc3biPt6Ay3oSW3V0Qeug.77JOVMRskbxLkWYN*****NlsbTw7e4YU8xQA',
u'expiry':1806250515,
u'path':u'/',
u'httpOnly':False,
u'name':u'FSSBBIl1UgzbN7N443T'
},
{
u'domain':u'.zhaopin.com',
u'secure':False,
u'value':u'95841*****0.1490890515',
u'expiry':1490892315,
u'path':u'/',
u'httpOnly':False,
u'name':u'dyweb'
},
{
u'domain':u'.zhaopin.com',
u'name':u'__utmc',
u'value':u'269****210',
u'path':u'/',
u'httpOnly':False,
u'secure':False
},
{
u'domain':u'.zhaopin.com',
u'secure':False,
u'value':u'1',
u'expiry':1490891115,
u'path':u'/',
u'httpOnly':False,
u'name':u'__utmt'
},
{
u'domain':u'.zhaopin.com',
u'name':u'dywec',
u'value':u'95*****23',
u'path':u'/',
u'httpOnly':False,
u'secure':False
},
{
u'domain':u'.zhaopin.com',
u'secure':False,
u'value':u'958****23.34768****001208000.14****515.14908****5.1490890515.1',
u'expiry':1553962515,
u'path':u'/',
u'httpOnly':False,
u'name':u'dywea'
},
{
u'domain':u'.zhaopin.com',
u'secure':False,
u'value':u'26992121*****15.1.1.ut*****ccn=(direct)|utmcmd=(none)',
u'expiry':1506658515,
u'path':u'/',
u'httpOnly':False,
u'name':u'__utmz'
},
{
u'domain':u'.zhaopin.com',
u'secure':False,
u'value':u'269921****545150.14908****.14908905****0890515.1',
u'expiry':1553962515,
u'path':u'/',
u'httpOnly':False,
u'name':u'__utma'
},
{
u'domain':u'.zhaopin.com',
u'secure':False,
u'value':u'95841923.149****.1.1.dywecsr=(d****eccn=(direct)|dywecm****dywectr=undefined',
u'expiry':1506658515,
u'path':u'/',
u'httpOnly':False,
u'name':u'dywez'
},
{
u'domain':u'.zhaopin.com',
u'secure':False,
u'value':u'269***.10.149****515',
u'expiry':1490892315,
u'path':u'/',
u'httpOnly':False,
u'name':u'__utmb'
},
{
u'domain':u'passport.zhaopin.com',
u'secure':False,
u'value':u'Te1E****xf2cCnriBjVesgm****87w_2eh3h7Xv****7NhNUQKba',
u'expiry':1806250444.416624,
u'path':u'/',
u'httpOnly':True,
u'name':u'FSSBBIl1UgzbN7N443S'
}
]
- requests只是一個http library赋咽,請求某個url昔头,只會獲取內容,而不會執(zhí)行網(wǎng)頁上的JavaScript代碼
- webdriver是一個headless web browser,可以認為是一個沒有UI的瀏覽器慌烧,訪問某個url后,會模擬瀏覽器的執(zhí)行鸠儿,可以看到cookie內容比較多屹蚊,多出來的cookie就是login成功的關鍵
WebDriver和Requests整合
session = requests.session()
driver = webdriver.Chrome()
driver.get("https://passport.zhaopin.com/org/login")
cookies = driver.get_cookies()
for cookie in cookies:
session.cookies.set(cookie['name'], cookie['value'])
Java WebDriver
<dependencies>
<!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java -->
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.3.1</version>
</dependency>
</dependencies>
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.Iterator;
import java.util.Set;
public class TestWebDriver {
public static void main(String args[]) {
WebDriver driver = new ChromeDriver();
driver.get("https://passport.zhaopin.com/org/login");
Set<Cookie> cookies = driver.manage().getCookies();
Iterator<Cookie> itr = cookies.iterator();
while (itr.hasNext()) {
Cookie c = itr.next();
System.out.println("-----Cookies Detail-----");
System.out.println("Cookie Name: " + c.getName()
+ "\n\tCookie Domain: " + c.getDomain()
+ "\n\tCookie Value: " + c.getValue()
+ "\n\tPath: " + c.getPath()
+ "\n\tExpiry Date: " + c.getExpiry()
+ "\n\tSecure: " + c.isSecure());
}
}
}