逆向工程:arrow.com上的每页结果

时间:2011-07-18 20:26:22

标签: url curl reverse-engineering

我正在尝试增加每页的结果,例如当您打开时: http://components.arrow.com/part/search/BAV99

通过点击链接50,网站为您提供了选择显示10,25,50或100的选项。现在我的问题是如何以卷曲的形式显示99999结果。

4 个答案:

答案 0 :(得分:2)

我使用Fiddler2来提出以下HTTP请求,看起来它会在一个页面中返回所有143个匹配项。我通过观察从下拉列表中选择“100个结果”时发送的HTTP请求来完成此操作。然后我复制了原始请求,将其粘贴到Fiddler2的RequestBuilder中,更改了limit=200并执行了它。我将WebView中的响应与网站上显示的实际页面进行了比较。

POST http://components.arrow.com/part/search/BAV99 HTTP/1.1
Host: components.arrow.com
Proxy-Connection: keep-alive
Referer: http://components.arrow.com/part/search/BAV99
Content-Length: 331
Cache-Control: max-age=0
Origin: http://components.arrow.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: __utmz=199791230.1309618262.1.1.utmcsr=stackoverflow.com|utmccn=(referral)|utmcmd=referral|utmcct=/questions/5359805/problem-while-parsing-html-xml-and-quering-with-xpath; __utma=199791230.901122760.1309618262.1309618262.1309618262.1; region=na; lang=en; JSESSIONID=s4CyTyHKHbwhJc2v1xXyv50s3mvshZmZJJzGYQNjpmHnw2MmcgyT!1070203391

sort1Name=&sort1Order=&start=0&docid=&cat=&filtMultiSelect=&catFiltAddOn=&chkButton=1&search_token=BAV99&limit=200&requestedURL=http%3A%2F%2Fext.partsearch.arrow.com%2Fnacpartservice%2Fsearch%3Fappid%3Dnac%26cc%3DUS%26cn%3DARROW%2FAMERICAS%26lang%3Den%26retfilt%3DY%26retreq%3DY%26srchtxt%3DBAV99%26start%3D0%26limit%3D10&taxonomy=

答案 1 :(得分:1)

试试这个:

curl -d "sort1Name=&sort1Order=&start=0&docid=&cat=&filtMultiSelect=&catFiltAddOn=&chkButton=1&search_token=BAV99&limit=9999&requestedURL=http%3A%2F%2Fext.partsearch.arrow.com%2Fnacpartservice%2Fsearch%3Fappid%3Dnac%26cc%3DUS%26cn%3DARROW%2FAMERICAS%26lang%3Den%26retfilt%3DY%26retreq%3DY%26srchtxt%3DBAV99%26start%3D0%26limit%3D10&taxonomy=" http://components.arrow.com/part/search/BAV99

答案 2 :(得分:1)

您要定位的页面http://components.arrow.com/part/search/BAV99使用表单提供POST数据,服务器使用该数据来确定要返回的记录数,用于分页的起始偏移量,应如何排序等。

正如@ {EvanLarsen在his answer中所提到的那样,您需要使用curl -d "<POST_DATA>" <URL>

但是,网站似乎会正确回复只包含您实际关注的字段的请求。

仅返回第一条记录:

curl -d "limit=1" http://components.arrow.com/part/search/BAV99

仅返回第二条记录:

curl -d "limit=1&start=1" http://components.arrow.com/part/search/BAV99

要返回99999条记录(如您所知):

curl -d "limit=99999" http://components.arrow.com/part/search/BAV99

如果您想要一个不错的用户界面来修改和提交POST数据并在网络浏览器中更轻松地查看结果(而不是使用curl),请查看Request Maker Chrome Extension

答案 3 :(得分:0)

这是通过使用Chrome开发者工具(或Firebug)完成的:

enter image description here

但正如其他人提到的那样,服务器正在限制此参数,因此您无法发送9999