学做网站能赚多少,快速优化关键词排名,江宁网站建设方案,海南网络一、抓包第一次请求
url aHR0cDovL2N5eHcuY24vQ29sdW1uLmFzcHg/Y29saWQ9MTA抓包#xff0c;需要清理浏览器cookie#xff0c;或者无痕模式打开网址#xff0c;否则返回的包不全#xff0c;依照下图中的第一个包进行requests请求 第一次请求后返回
!DOCTYPE html…一、抓包第一次请求
url aHR0cDovL2N5eHcuY24vQ29sdW1uLmFzcHg/Y29saWQ9MTA抓包需要清理浏览器cookie或者无痕模式打开网址否则返回的包不全依照下图中的第一个包进行requests请求 第一次请求后返回
!DOCTYPE htmlhtml xmlnshttp://www.w3.org/1999/xhtmlheadmeta http-equivContent-Type contenttext/html; charsetUTF-8/meta http-equivCache-Control contentno-store, no-cache, must-revalidate, post-check0, pre-check0/meta http-equivConnection contentClose/script typetext/javascriptfunction stringToHex(str){var val;for(var i 0; i str.length; i){if(val )val str.charCodeAt(i).toString(16);else val str.charCodeAt(i).toString(16);}return val;}function YunSuoAutoJump(){ var width screen.width; var heightscreen.height; var screendate width , height;var curlocation window.location.href;if(-1 curlocation.indexOf(security_verify_)){ document.cookiesrcurl stringToHex(window.location.href) ;path/;;}self.location /Column.aspx?colid10security_verify_data stringToHex(screendate);}/scriptscriptsetTimeout(YunSuoAutoJump(), 50);/script/head!--2023-10-11 11:55:23--/html其中stringToHex方法用于将字符串转换为十六进制表示
function stringToHex(str) {var val ;for (var i 0; i str.length; i) {if (val ) val str.charCodeAt(i).toString(16);else val str.charCodeAt(i).toString(16);}return val;
}用python实现
def stringToHex(data):valu for i in range(0, len(data), 1):# 获取字符串中索引为 i 的字符的 Unicode 值并转换为十六进制字符串表示unicode_value ord(data[i])val hex(unicode_value)[2:] # [2:] 是为了去掉十六进制字符串前面的 0x 前缀valu valu val # 顺序不能反否则转换的十六进制是倒着的return valuYunSuoAutoJump()方法设置了cookies中的一个srcurl值还有第二次请求的url
function YunSuoAutoJump() {var width screen.width;var height screen.height;var screendate width , height;var curlocation window.location.href;if (-1 curlocation.indexOf(security_verify_)) {document.cookie srcurl stringToHex(window.location.href) ;path/;;}self.location /Column.aspx?colid10security_verify_data stringToHex(screendate);
}screendate是定值因此
url2 url security_verify_data313232302c363836二、第二次请求
观察浏览器抓到的第二个请求的cookies 发现cookies中除srcurl还有security_verify_data与第一次请求对比发现在第一次请求时携带security_verify_data如下图 因此第二次请求的cookies为
headers1 resp1.headers.get(Set-Cookie)
result headers1.split(;)[0]
cookies {}
key, value result.split()
cookies[key] valuekey srcurl
value stringToHex(url)
cookies[key] value进行第二次请求返回
!DOCTYPE htmlhtml xmlnshttp://www.w3.org/1999/xhtmlheadmeta http-equivContent-Type contenttext/html; charsetUTF-8/meta http-equivCache-Control contentno-store, no-cache, must-revalidate, post-check0, pre-check0/meta http-equivConnection contentClose/
scriptvar cookie_custom {hasItem: function(sKey) {return (new RegExp((?:^|;\\s*) encodeURIComponent(sKey).replace(/[\-\.\\*]/g, \\$) \\s*\\)).test(document.cookie);},removeItem: function(sKey, sPath) {if (!sKey || !this.hasItem(sKey)) {return false;}document.cookie encodeURIComponent(sKey) ; expiresThu, 01 Jan 1970 00:00:00 GMT (sPath ? ; path sPath : );return true;}
};function YunSuoAutoJump() {self.location aHR0cDovL2N5eHcuY24vQ29sdW1uLmFzcHg/Y29saWQ9MTA;}
/script
scriptsetTimeout(cookie_custom.removeItem(srcurl);YunSuoAutoJump();, 50);/script/head/html
由返回可知第三次请求的url与第一次请求一致cookies要除去第二次请求的srcurl这个键再与浏览器中的第三次请求进行对比。 cookies中多了security_session_mid_verify这个键同理可知这个值在第二次请求的Set-Cookie处取得cookies如下
headers2 resp2.headers.get(Set-Cookie)
key, value headers2.split(;)[0].split()
cookies[key] value
cookies.pop(srcurl) # 删去srcurl键值对三、第三次请求
resp3 requests.get(url, headersheaders, verifyFalse, cookiescookies).content此网站如果使用requests.get().text返回的内容不对所以用content查看返回内容发现是乱码部分如下
\xe5\x9b\xbe\xe7\x89\x87\xe6\x87\x92\xe5\x8a\xa0\xe8\xbd\xbd\r 先解码再删去返回中的\r即返回正文内容
text resp3.decode().replace(\r, )