使用库 :import requests
安装:pip install requests
示例:
# 导入 requests 包
import requests
# 发送请求
response = requests.get('https://www.baidu.com/')
# 等价于 response = requests.request('get', 'https://www.baidu.com/')
response.encoding='utf-8' # 防止中文乱码必加
# 返回网页内容
print(response.text)
每次调用 requests 请求之后,会返回一个 response 对象,该对象包含了具体的响应信息。
| 属性或方法 | 说明 |
|---|---|
| apparent_encoding | 显示request的 |
| close() | 关闭与服务器的连接 |
| content | 返回响应的内容,以字节为单位 |
| cookies | 返回一个 CookieJar 对象,包含了从服务器发回的 cookie |
| elapsed | 返回一个 timedelta 对象,包含了从发送请求到响应到达之间经过的时间量,可以用于测试响应速度。比如 r.elapsed.microseconds 表示响应到达需要多少微秒。 |
| encoding | 解码 r.text 的编码方式 |
| headers | 返回响应头,字典格式 |
| history | 返回包含请求历史的响应对象列表(url) |
| is_permanent_redirect | 如果响应是永久重定向的 url,则返回 True,否则返回 False |
| is_redirect | 如果响应被重定向,则返回 True,否则返回 False |
| iter_content() | 迭代响应 |
| iter_lines() | 迭代响应的行 |
| json() | 返回结果的 JSON 对象 (结果需要以 JSON 格式编写的,否则会引发错误) |
| links | 返回响应的解析头链接 |
| next | 返回重定向链中下一个请求的 PreparedRequest 对象 |
| ok | 检查 “status_code” 的值,如果小于400,则返回 True,如果不小于 400,则返回 False |
| raise_for_status() | 如果发生错误,方法返回一个 HTTPError 对象 |
| reason | 响应状态的描述,比如 “Not Found” 或 “OK” |
| request | 返回请求此响应的请求对象 |
| status_code | 返回 http 的状态码,比如 404 和 200(200 是 OK,404 是 Not |
| text | 返回响应的内容,unicode 类型数据 |
| url | 返回响应的 URL |
| 方法 | 描述 |
|---|---|
| delete(url, args) | 发送 DELETE 请求到指定 url |
| get(url, params, args) | 发送 GET 请求到指定 url |
| head(url, args) | 发送 HEAD 请求到指定 url |
| patch(url, data, args) | 发送 PATCH 请求到指定 url |
| post(url, data, json, args) | 发送 POST 请求到指定 url |
| put(url, data, args) | 发送 PUT 请求到指定 url |
| request(method, url, args) | 向指定的 url 发送指定的请求方法 |
get():get请求
# 导入 requests 包
import requests
kw = {'wd': 'requests'}
# 设置请求头
headers = {
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "en-US, en; q=0.8, zh-Hans-CN; q=0.5, zh-Hans; q=0.2",
"Connection": "Keep-Alive",
"Cookie": "BIDUPSID=66FF68AA26FC6EDA7D0F3A7B83889785; PSTM=1650200337; BAIDUID=66FF68AA26FC6EDAA62D11242D93E3C4:FG=1; BDUSS=hGSzZIRXNNanhuTmlpeHRVVkpyUlpOaWJjVnBkWldxV2pkbGllSVAtQnZxUHhpSVFBQUFBJCQAAAAAAAAAAAEAAAAK0sJE19DX0LTzyuXK5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8b1WJvG9VidV; ispeed_lsm=0; BDSFRCVID=VKAOJeC62AcQbRjDU1d-hDtKuSdUpQTTH6f3sz-1mEw0HZdPwu18EG0PyU8g0K4MKk0gogKK3mOTHR8F_2uxOjjg8UtVJeC6EG0Ptf8g0f5; H_BDCLCKID_SF=Jn4OoCt-JC83fP36q4To5PtebMoHetJyaR3pahjvWJ5TMCoq-pQD04Iv3HQbe4vRbg3tbbbG-UjxShPCb6b52CrLhtofJUvz5NRfLCDy3l02V-Tae-t2yT0IyU4jK-RMW20eWl7mWU_WsxA45J7cM4IseboJLfT-0bc4KKJxbnLWeIJIjj6jK4JKDN0OJx5; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; delPer=0; BD_CK_SAM=1; PSINO=3; BA_HECTOR=alala58l8k2k250h8gah6i331hfpdtr17; ZFY=kC9agDNZ79qiM0O8SgeVUMFor:Be68PgM1D2NvMsPttw:C; BDRCVFR[tFA6N9pQGI3]=mk3SLVN4HKm; BD_HOME=1; BAIDUID_BFESS=66FF68AA26FC6EDAA62D11242D93E3C4:FG=1; BDUSS_BFESS=hGSzZIRXNNanhuTmlpeHRVVkpyUlpOaWJjVnBkWldxV2pkbGllSVAtQnZxUHhpSVFBQUFBJCQAAAAAAAAAAAEAAAAK0sJE19DX0LTzyuXK5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8b1WJvG9VidV; BDSFRCVID_BFESS=VKAOJeC62AcQbRjDU1d-hDtKuSdUpQTTH6f3sz-1mEw0HZdPwu18EG0PyU8g0K4MKk0gogKK3mOTHR8F_2uxOjjg8UtVJeC6EG0Ptf8g0f5; H_BDCLCKID_SF_BFESS=Jn4OoCt-JC83fP36q4To5PtebMoHetJyaR3pahjvWJ5TMCoq-pQD04Iv3HQbe4vRbg3tbbbG-UjxShPCb6b52CrLhtofJUvz5NRfLCDy3l02V-Tae-t2yT0IyU4jK-RMW20eWl7mWU_WsxA45J7cM4IseboJLfT-0bc4KKJxbnLWeIJIjj6jK4JKDN0OJx5; BD_UPN=12314753; sugstore=1; COOKIE_SESSION=71_0_9_9_10_7_1_0_9_3_0_0_70788_0_4_0_1660729351_0_1660729347%7C9%2393_19_1660527400%7C5; H_PS_PSSID=36557_37112_36918_37129_37163_37136_26350_37088; H_PS_645EC=4cc2eJy9DIqlkz3yDk8gAoJaAvWpj7HuUSDsY%2BhimFdVj8gIxVMIu7%2FfFVk; BDSVRTM=29; WWW_ST=1660729548295",
"Host": "www.baidu.com",
"is_pbs": "requests%20%E7%99%BE%E5%BA%A6%E6%9F%A5%E8%AF%A2%20%E5%AE%89%E5%85%A8%E9%AA%8C%E8%AF%81",
"is_referer": "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=requests%20%E7%99%BE%E5%BA%A6%E6%9F%A5%E8%AF%A2%20%E5%AE%89%E5%85%A8%E9%AA%8C%E8%AF%81&oq=requests%2520%25E7%2599%25BE%25E5%25BA%25A6%25E6%259F%25A5%25E8%25AF%25A2&rsv_pq=c1c505f300068e69&rsv_t=f954yaBLJPRoW0h8mDveBLV%2FqsAagl8nsx%2BVmRT6Z8BMnhhJ3um%2BbCziPoM&rqlang=cn&rsv_dl=tb&rsv_enter=1&rsv_btype=t&rsv_sug3=32&rsv_sug1=21&rsv_sug7=100&bs=requests%20%E7%99%BE%E5%BA%A6%E6%9F%A5%E8%AF%A2",
"is_xhr": "1",
"Referer": "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd=requests%20%E7%99%BE%E5%BA%A6%E6%9F%A5%E8%AF%A2%20%E5%AE%89%E5%85%A8%E9%AA%8C%E8%AF%81&oq=requests%2520%25E7%2599%25BE%25E5%25BA%25A6%25E6%259F%25A5%25E8%25AF%25A2%2520%25E5%25AE%2589%25E5%2585%25A8%25E9%25AA%258C%25E8%25AF%2581&rsv_pq=cde28a23000189af&rsv_t=4cc2eJy9DIqlkz3yDk8gAoJaAvWpj7HuUSDsY%2BhimFdVj8gIxVMIu7%2FfFVk&rqlang=cn&rsv_dl=tb&rsv_enter=0&rsv_btype=t",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
"X-Requested-With": "XMLHttpRequest",
}
# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get(r"https://www.baidu.com/s?", params=kw, headers=headers)
response.encoding='utf-8'
print(response.text)
成功查询

post():post请求
# 导入 requests 包
import requests
# 表单参数,参数名为 fname 和 lname
myobj = {'fname': 'RUNOOB','lname': 'Boy'}
# 发送请求
x = requests.post('https://www.runoob.com/try/ajax/demo_post2.php', data = myobj)
# 返回网页内容
print(x.text)
# 打印响应头
print(x.headers)

打开浏览器
在浏览器网络内 拷贝请求头

# 设置请求头
headers = {
"Accept": "application/json, text/plain, */*",
"Accept-Encoding": "gzip, deflate, br",
"Accept-Language": "zh-CN,zh;q=0.9,ko;q=0.8",
"cid": "13616011111",
"Connection": "keep-alive",
"Host": "app.fzxtech.com",
"number": '13811307119',
"Origin": "https://pt.fzxtech.com",
"Referer": "https://pt.fzxtech.com/",
"Sec-Fetch-Dest": "empty",
"Sec-Fetch-Mode": "cors",
"Sec-Fetch-Site": "same-site",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
}
发送请求,只要请求成功。则推测短信已发出。
response = requests.get(r"https://app.fzxtech.com/gs-api/register/sendcode2", headers=headers)
response是发出请求后收到的响应
print(response.text) # 打印响应内容(网页的html中的信息)
print(response.headers) # 打印响应头

可以用这种方式结合可能的区域使用的手机号码,循环发送请求,如果请求有响应即可判断这个手机号是有人使用的。