一.寻找post地址
寻找登录的post地址
1.在form表单中寻找action对应的url地址
post的数据是input标签中name的值作为键,真正的用户密码作为值得字典,post的url地址就是action对应的url地址
2.抓包,寻找登录的url地址
勾选perserve log按钮,防止页面跳转找不到url
寻找post数据,确认参数
- 参数不会变
直接用,比如密码不是动态加密的时候 - 参数会变
参数在当前的响应中
通过js生成
定位想要的js
1.选择会触发js时间的按钮,点击event listener,找到js的位置
2.通过Chrome中的searach all file 来搜索url中的关键字
3.添加断点的方式来查看js操作,通过python来进行同样的操作
二.百度翻译
import json
import requests
import sys
class BaiduFanyi:
def __init__(self, trans_str):
self.lang_detect_url = "https://fanyi.baidu.com/langdetect"
self.trans_str = trans_str
self.trans_url = "https://fanyi.baidu.com/extendtrans"
self.headers = {"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/77.0.3865.75 Mobile Safari/537.36"}
def parse_url(self, url, data):
response = requests.post(url, data=data, headers=self.headers)
return json.load(response.content.decode())
def get_ret(self, dict_response):
ret = dict_response["trans"][0]["dst"]
print("结果是:", ret)
def run(self): # 实现主要逻辑
# 1.获取语言类型
# 1.1 准备post的url地址,post_data
lang_dict_data = {"query": self.trans_str}
# 1.2 发送post请求,获取响应
lang = self.parse_url(self.lang_detect_url, lang_dict_data)["lan"]
# 1.3 提取语言类型
# 2.准备post的数据
trans_data = {"query": self.trans_str, "from": "zh", "to": "en"} if lang == "zh" else \
{"query": self.trans_str, "from": "zh", "to": "en"}
# 3.发送请求,获取响应
dict_response = self.parse_url(self.trans_url, trans_data)
# 4.提取翻译的结果
self.get_ret(dict_response)
if __name__ == '__main__':
trans_str = sys.argv[1]
baidu_fanyi = BaiduFanyi(trans_str)
baidu_fanyi.run()
三.requests的小技巧
requests小技巧
1.requests.utils.dict_from_cookiejar 把cookie对象转化为字典
2.请求SSL证书验证
response = requests.get(“htt[😕/www.12306.cn/mormhweb/”,verify = False)
3.设置超时
response = requests.get(url,timeout=10)
4.配合状态码判断是否请求成功
assert response.status_code == 200
举例验证上面4个方法:
import requests
headers = {"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/77.0.3865.75 Mobile Safari/537.36"}
def _parse_url(url):
response = requests.get(url, headers=headers, timeout=3)
assert response.status_code == 200
return response.content.decode()
def parse_url(url):
try:
html_str = _parse_url(url)
except:
html_str = None
return html_str
if __name__ == "__main__":
url = "http://www.baidu.com"
print(parse_url(url))