XX二手车爬虫203破解

个人学习总结,有不足的地方请大佬们指出。

1、之前爬取瓜子二手车时,添加登录的cookie就可以获取页面数据。后续发现此方法不行。每次请求的时候,获取不到页面的信息,postman进行获取,结果显示203(请求成功,内容显示失败),203 (Non-Authoritative Information/非官方信息)。

2、从postman请求结果可以看出,请求错误!因为此处是跟cookie有关,因此分析一下网页的cookie。

3、有关系的是cookie中的antipas,将postman中返回的代码拷贝出来,放入一个新的html中打开。进行分析。次方法避免了将混乱的js代码进行扣取。

 

4、从图片的js中后四行可以看出大概意思:调用anti函数,将结果赋值给value,定义name,url。函数xredirect对结果进行判断,如果通过,返回带有数据的页面,否则则返回203页面。

5、页面调试,定位anti函数的位置

此时我们已经找到了关键的代码所在,此时就是写代码进行测试了!

思路:

1、获取203页面中anti里面的两个参数值

var value=anti('PcQWFy0em6diPDiDwc9uS67o9nl8hB3gHvIJsf5t54k=','986298625571186362')
2、将参数传入抠出来的js,进行编译
3、cookie携带返回值,进行页面的请求,查看信息
def scrape(url):
    headers = {
        'Host': 'www.guazi.com',
        'Referer': 'https://www.guazi.com/cs/buy/o1',
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
    }
    try:
        response = requests.get(url, headers=headers)
        #检测状态!
        if response.status_code == 200:
            return response.text
        elif "eval" in response.text:
            # 通过正则获取到相关的字段和值
            value_search = re.compile(r"anti\('(.*?)','(.*?)'\);")
            string = value_search.search(response.text).group(1)
            key = value_search.search(response.text).group(2)
            print(string, key)  # 输出anti中string和key的值

            # 读取破解好的js文件
            with open(r"/Users/snail/PycharmProjects/untitled/xuexi/guazi.js", "r", encoding='utf-8') as f:
                f_read = f.read()
            # 使用execjs模块来封装这段js[即:实例化js],传入的是读取后的js文件
            js = execjs.compile(f_read)
            js_return = js.call("anti", string, key)  # 传递的是当前需要使用的"anti"方法,和两个方法中需要的参数
            # print(js_return)  # 输出anti方法进行加密处理后的cookie值
            cookie_value = "antipas=" + js_return  # 该cookie格式需要在前面加"antipas="字符串
            headers["Cookie"] = cookie_value  # 将cookie设置到头部
            response_second = requests.get(url=url, headers=headers)  # 再次请求网址
            return response.text
  

  结束!

posted @ 2020-10-12 11:59  是四不是十  阅读(313)  评论(0编辑  收藏  举报