成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

愛回收網(wǎng)站,js請求過程分析

cooxer / 1938人閱讀

摘要:愛回收網(wǎng)站,在網(wǎng)站中大量使用了動態(tài)改變元素,而且請求的參數(shù)使用的是加密。工具火狐瀏覽器,開發(fā)者模式前面各個分類的分析還是比較簡單,所需內(nèi)容都在網(wǎng)頁源碼中有,可以直接找到。主要是請求價格的過程有點(diǎn)復(fù)雜。

aihuishou

最近在qq群里看到有個小伙伴在問愛回收網(wǎng)站怎么爬取手機(jī)價格信息。

愛回收網(wǎng)站,在網(wǎng)站中大量使用了js動態(tài)改變DOM元素,而且請求的參數(shù)使用的是paylaod加密。我們在分析網(wǎng)站的時候看不到參數(shù),也就分析不出來請求參數(shù)的規(guī)律,這個問題可以通過fiddler抓包工具解決。剛開始分析確實(shí)有點(diǎn)懵,在此記錄下我的分析過程。

工具;火狐瀏覽器,開發(fā)者模式 Fiddler

前面各個分類的分析還是比較簡單,所需內(nèi)容都在網(wǎng)頁源碼中有,可以直接找到。主要是請求價格的過程有點(diǎn)復(fù)雜。

首先看看網(wǎng)站是如何發(fā)送POST請求價格的
我們以http://www.aihuishou.com/prod...:

必須選擇要提交的選項(xiàng)才能提交查詢價格,這里我們隨便選擇幾個選項(xiàng),查找買免費(fèi)詢價的元素看到href是:

重點(diǎn)來了這里點(diǎn)擊免費(fèi)詢價之后,網(wǎng)站直接跳轉(zhuǎn)到價格的頁面網(wǎng)址是:http://www.aihuishou.com/pc/i...,我們來找下http://www.aihuishou.com/user...,

這時候發(fā)現(xiàn)沒有網(wǎng)址的請求,這時猜測是重定向了。這時候我們需要知道請求了什么導(dǎo)致重定向,打開fiddler,重新回到剛才,點(diǎn)擊免費(fèi)詢價。然后在fiddler中找到發(fā)送的http://www.aihuishou.com/user...:

可以發(fā)現(xiàn)是個post請求,返回的是一個json格式的數(shù)據(jù),我們看到里面有個redirectUrl,參數(shù)是"/pc/index.html#/inquiry/1516201064093351267”, 看到這個心中有沒有感到一喜,對比這個和跳轉(zhuǎn)后的頁面,發(fā)現(xiàn)驚奇的相似。訪問下這個網(wǎng)址,正是我們要找的價格的頁面。

此時是不是有點(diǎn)大功告成的感覺,然后我們在頁面中提取我們要的數(shù)據(jù),結(jié)果并沒有發(fā)現(xiàn),這時猜測可能是請求的是json數(shù)據(jù),然后動態(tài)加載到頁面中的,這這是我們通過火狐瀏覽器的開發(fā)者功能,找到了真正數(shù)據(jù)的請求:

發(fā)現(xiàn)后面的數(shù)字就是url后面的數(shù)字,這是我們重新構(gòu)造這個http://www.aihuishou.com/port...。

現(xiàn)在整個過程明朗了,但是還有一個問題,最初的POST請求的參數(shù)怎么來的, 我們回過頭重新看下http://www.aihuishou.com/user...。

在火狐開發(fā)者模式下,我們可以看到免費(fèi)詢價這個元素對應(yīng)觸發(fā)的click事件,

function(a) {
a.preventDefault();
var l = $(this);
if (!l.hasClass("disabled") && W) {

if (!d.hasClass("hidden")) {
  var c = $.trim(o.val());
  if (!s(c)) return;
  n.imgCaptcha = c
}
n.PriceUnits = e(), ahs.PopWindow.Loading(!0), $.post(r, n, function(e) {
  ahs.PopWindow.Hide(), e.code ? 3001 === e.code ? i(e.data.captchaUrl) : 3002 === e.code ? (t(e.data.captchaUrl), alert("驗(yàn)證碼有誤")) : e.data.redirectUrl && (location.href = e.data.redirectUrl) : location.href = e.data.redirectUrl
})

}
}

可以看到j(luò)s中有個post請求,請求的參數(shù)是r, n,r應(yīng)該是請求的url,n是對應(yīng)的POST參數(shù),那么就要找到這個r, n,在js文件中,我們可以看到定義r, n參數(shù)的代碼,就在這個函數(shù)的上面定義了:
var r = $submit.attr("href"),

n = {
  AuctionProductId: $submit.data("pid"),
  ProductModelId: $submit.data("mid")
};

這里我們可以看到r正是submit元素的href的值,n是submit元素屬性中包含"pid", "mid"的值,我們再看看fiddler抓到的參數(shù)應(yīng)該有三個,還有一個priceUnits參數(shù),我們js代碼,發(fā)現(xiàn),n.PriceUnits = e(),這個便是
第三個參數(shù)的由來,在js中搜索function e,可以找到 函數(shù)e的定義:
function e() {

  var e = [
  ],
  t = [
  ];
  return $(".base-property").find("li.checked").each(function () {
    e.push($(this).data("id"))
  }),
  F ? (e = a(e, t), e = e.concat(O), e.join(";"))  : (e = a(e, O), $(".appearance-property").find("li.checked").each(function () {
    t.push($(this).data("id"))
  }), c.filter(".function-property").find("li").each(function () {
    var e = $(this);
    t.push(e.hasClass("checked") ? e.data("id")  : e.data("default"))
  }), e = e.concat(t), e.join(";"))
}

大致的意思就是找到對應(yīng)元素下包含"id"的屬性的值加入到e的類表中,然后合并列表e,t,最后在用";"連接各元素。

這樣,POST請求的三個參數(shù)都找到了,這個網(wǎng)站訪問過快會有驗(yàn)證碼,可以加代理繞過代理驗(yàn)證。

至此,整個詢問價格的流程分析完成,還是由衷的感覺整個爬蟲懂點(diǎn)js還是好處多多的! 如果想讀源碼,請移步github,鏈接是:https://github.com/allenshen3...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/94994.html

相關(guān)文章

  • 回收網(wǎng)站,js請求過程分析

    摘要:愛回收網(wǎng)站,在網(wǎng)站中大量使用了動態(tài)改變元素,而且請求的參數(shù)使用的是加密。工具火狐瀏覽器,開發(fā)者模式前面各個分類的分析還是比較簡單,所需內(nèi)容都在網(wǎng)頁源碼中有,可以直接找到。主要是請求價格的過程有點(diǎn)復(fù)雜。 aihuishou 最近在qq群里看到有個小伙伴在問愛回收網(wǎng)站怎么爬取手機(jī)價格信息。 愛回收網(wǎng)站,在網(wǎng)站中大量使用了js動態(tài)改變DOM元素,而且請求的參數(shù)使用的是paylaod加密。我們...

    MockingBird 評論0 收藏0
  • Android 2019最新面試實(shí)戰(zhàn)總結(jié)

    摘要:內(nèi)存泄漏當(dāng)應(yīng)用內(nèi)部不再需要某個實(shí)例后,但是這個對象卻仍然被引用,這個情況就叫做內(nèi)存泄露。安卓虛擬機(jī)為每一個應(yīng)用分配一定的內(nèi)存空間,當(dāng)內(nèi)存泄露到達(dá)一定的程度就會造成內(nèi)存溢出。點(diǎn)擊登錄跳轉(zhuǎn)頁面中所有操作都與用戶密切相關(guān),是 Android: 今日頭條屏幕適配的原理? 1:首先計(jì)算出 density,計(jì)算公式:當(dāng)前設(shè)備屏幕總寬度(單位為像素)/ 設(shè)計(jì)圖總寬度(單位為 dp) = densit...

    Caicloud 評論0 收藏0
  • Python爬蟲學(xué)習(xí)路線

    摘要:以下這些項(xiàng)目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個階段: 1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法...

    liaoyg8023 評論0 收藏0
  • 瀏覽器顯示及交互背后的原理

    摘要:瀏覽器顯示及交互背后的原理引子因?yàn)楣P者愛編程的光頭強(qiáng)近期在寫一本關(guān)于小程序入門的書籍。不基于瀏覽器背后的運(yùn)行原理,是很難說清楚虛擬被引入的真正原因和最大好處的。它是瀏覽器的核心部分。 瀏覽器顯示及交互背后的原理 引子 因?yàn)楣P者(愛編程的光頭強(qiáng))近期在寫一本關(guān)于小程序入門的書籍。其中有一章是介紹虛擬DOM的,它是位于Javascript和真正DOM之間的一層緩存層。為什么引入它,為什么它...

    hatlonely 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<