python-spider 第10题

copy 网页的代码做主要是想分析 beforesend 这个请求到底做了什么 最后找了一圈也没有发现的有啥 再翻了下js基础 发现是我想多了

这个函数什么东西都没有干

最后把请求头替换掉成功过关 具体检测的应该是请求头中的某一个 ,想要知道具体检测的是什么就把每一个请求头打上备注 看下少了哪个请求头访问会失败就完事了~

这个贴一个正则替换headers 跟一个爬虫老师学来的。
(.*): (.*) 替换成 "$1":"$2",

最后贴上代码

import json
from typing import Dict, List

import browsercookie
import requests
from requests.cookies import RequestsCookieJar

## init for classes

session = requests.session()
chrome_cookie = browsercookie.chrome()
s = []

url = "http://www.python-spider.com/api/challenge10"
# url = 'http://127.0.0.1:5000/data'


def get_cookie_from_chrome(domain: str) -> List[Dict]:
    """
    :param domain: the cookies your want to get from.
    :return: a dict the contains cookies from the domain.
    """
    l = []
    for i in chrome_cookie:
        if domain in i.domain:
            l.append({'name': i.name, "value": i.value})
    return l


def set_cookie(domain):
    """
    :param domain: the domain going to set
    :return: the instance of RequestsCookieJar contain the cookies of the domain you set
    """
    cookie_jar = RequestsCookieJar()
    cookies_list = get_cookie_from_chrome(domain=domain)
    for cookie in cookies_list:
        cookie_jar.set(cookie['name'], cookie['value'], domain=domain)

    return cookie_jar


if __name__ == '__main__':
    header = {
        "Connection": "keep-alive",
        "Content-Length": "6",
        "Accept": "application/json, text/javascript, */*; q=0.01",
        "Dnt": "1",
        "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36",
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
        "Origin": "http://www.python-spider.com/api/challenge10",
        "Sec-Fetch-Site": "cross-site",
        "Sec-Fetch-Mode": "cors",
        "Sec-Fetch-Dest": "empty",
        "Referer": "http://www.python-spider.com/api/challenge10",
        "Accept-Encoding": "gzip, deflate, br",
        "Accept-Language": "zh,en;q=0.9,zh-CN;q=0.8",

    }

    cookie_jar = set_cookie('www.python-spider.com')
    for i in range(1, 101):
        data = {"page": str(i)}
        response = session.post(url, headers=header, cookies=cookie_jar, data={"page": str(i)})
        print(response.text)
        data1 = json.loads(response.text)['data']

        s.extend([i['value'].strip('\r') for i in data1])
    print(s)
    print(sum(int(i) for i in s))


posted @ 2020-08-16 11:43  如海  阅读(160)  评论(0)    收藏  举报