2017-09-22 29 views
-1

私は淘宝網を解析しようとしている、product cardエラー403禁止淘宝網の解析

データがブラウザでhere

で、データ・ページが正常にロードされます enter image description here

enter image description here

しかし、移行時に私は403を得る禁止:

enter image description here

私はPHP 助けを借りて、この制限を回避することができますどのように、非常に多くの顧客が

+0

私たちはより良いことができるように、関連するコードの一部を追加することを検討してください助けて! – AlexKoren

+0

申し訳ありませんが、私はもうどこに向けるべきかわからないので、英語で質問しました。 – newProgrammer

答えて

2

詳細kip.taobao.com/json/dyn_combo.doは、別のdetailskip.taobao.comのURLを指す "referrer"ヘッダーを持たないリクエストをブロックします。参照元が実際のものである必要はないことに注意してください。偽装するだけで、実際に検証することはできません。ヘッダはそこに存在する必要があります。また、ユーザーエージェントヘッダーに "php"を含むリクエストをブロックします。ユーザーエージェントヘッダーを持たない要求もブロックします。

サンプルコード(curl_機能の周りにラッパーを検出するエラーとしてmy hhb_curl libraryを使用して)JSONを取得するために、参照元のヘッダーとユーザーエージェントを偽装:

<?php 
declare(strict_types = 1); 
header ("content-type: text/plain;charset=utf8"); 
require_once ('hhb_.inc.php'); 
$json = (new hhb_curl ('', true))->setopt_array (array (
     CURLOPT_URL => 'https://detailskip.taobao.com/json/dyn_combo.do?itemId=556926591992&databiz=promotionPrice,upp,bonuscoupon,shopbonuscoupon,shopbonuscoupon,shopcoupon,sidebarcoupon,overseaNewDelivery,dynStock,overseaViewer,contract,activitySwitch,buycount', 
     CURLOPT_USERAGENT => 'curl/7.52.1', 
     CURLOPT_HTTPHEADER => array (
       'Referer: https://world.taobao.com/item/556926591992.html' 
     ) 
))->exec()->getStdOut(); 
echo $json; 
+0

なぜエラーが出るのですか? 警告:/home/n/domen/domen/public_html/hhb_.incでサポートされていない 'strict_types'が宣言されています.php on line 2 構文エラー、予期しない ':'、予期しない '{' in /home/n/domen/domen/public_html/hhb_.inc.php on line 9 – newProgrammer

+0

@newProgrammerこのコードが書かれているためPHP7のために、あなたはPHP5でそれを実行しようとしています。あなたは本当に、PHP7のtypehintsをアップグレードする必要があります実行する場合祝福 – hanshenrik

+0

で、PHP7は、コード – newProgrammer

1

文句を言う必要がありますしてください、あなたは正確に、解析することができませんか? file_get_contentsだけまで読み込むのに対し、コンテンツ長の

string(82) "欧美高街bf风潮牌oversize宽松男女嘻哈hiphop套头卫衣情侣装外套" 
string(9) "¥ 189.00" 

(とprotipは、カールがはるかに高速に起因それに実行しますの理解:私は何の問題、製品の価格と製品名を解析し、

<?php 
declare(strict_types = 1); 
$html = file_get_contents ('https://world.taobao.com/item/556926591992.html'); 
$domd = @DOMDocument::loadHTML ($html); 
$xp = new DOMXPath ($domd); 
$name = $xp->query ('//span[@itemprop="name"]')->item (0)->textContent; 
$price = trim (preg_replace ('/\s+/u', ' ', $xp->query ('//div[contains(@class,"price-show") and not(contains(@class,"hidden"))]')->item (0)->textContent)); 
var_dump ($name, $price); 

出力を持っていませんこのWebサイトとカールはfile_get_contentsがサポートしていないgzip圧縮転送をサポートしており、カールはのfile_get_contentsに必要なphp.ini設定に依存しないため、CURLOPT_ENCODINGを使用した場合、ソケットは閉じられ、カールの帯域幅はかなり小さくなります)

+0

パーサはサイト自体を必要としません: 'https:// world.taobao.com/item/556926591992.html'データソース: 'https:// detailskip.taobao.com/json/dyn_combo.do' – newProgrammer

+0

@newProgrammer、https://world.taobao.com/item/556926591992.htmlは、最もユニークなcsrf-tokenをあなたがダウンロードして解析し、https://detailskip.taobao.com/json/dyn_combo.doに提供しなければならないhtmlとクッキーのセッションIDですが、後でどのデータを使用していますか? – hanshenrik

+0

これらのデータはすべて:https://pp.userapi.com/c841226/v841226308/2273b/_yWRug4FwW.jpg – newProgrammer

関連する問題